uawdijnntqw1x1x1
IP : 216.73.216.110
Hostname : 6.87.74.97.host.secureserver.net
Kernel : Linux 6.87.74.97.host.secureserver.net 4.18.0-553.83.1.el8_10.x86_64 #1 SMP Mon Nov 10 04:22:44 EST 2025 x86_64
Disable Function : None :)
OS : Linux
PATH:
/
home
/
emeraadmin
/
www
/
node_modules
/
safer-buffer
/
..
/
isobject
/
..
/
..
/
src
/
..
/
4d695
/
libtiff-devel.zip
/
/
PK沐\,��html/images/CMakeLists.txtnu�[���# CMake build for libtiff # # Copyright © 2015 Open Microscopy Environment / University of Dundee # Written by Roger Leigh <rleigh@codelibre.net> # # 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. set(docfiles back.gif bali.jpg cat.gif cover.jpg cramps.gif dave.gif info.gif jello.jpg jim.gif note.gif oxford.gif quad.jpg ring.gif smallliz.jpg strike.gif warning.gif) install(FILES ${docfiles} DESTINATION "${LIBTIFF_DOCDIR}/html/images") extra_dist(${docfiles}) PK沐\�#Bw��html/images/back.gifnu�[���GIF87a�$Hm����$$$H$m$�$�$�$�$H$HHHmH�H�H�H�Hm$mHmmm�m�m�m�m�$�H�m�����ڑ���$�H�m�����ڶ���$�H�m����������$�H�m��������U$UHUmU�U�U�U�U$U$$UH$Um$U�$U�$U�$U�$UHU$HUHHUmHU�HU�HU�HU�HUmU$mUHmUmmU�mU�mU�mU�mU�U$�UH�Um�U��U��UڑU��U�U$�UH�Um�U��U��UڶU��U�U$�UH�Um�U��U��U��U��U�U$�UH�Um�U��U��U�U��U�$�H�m���������$�$$�H$�m$��$��$��$��$�H�$H�HH�mH��H��H��H��H�m�$m�Hm�mm��m��m��m��m���$��H��m��������ڑ������$��H��m��������ڶ����ڪ$ڪHڪmڪ�ڪ�ڪ�ڪ�ڪ��$��H��m��������������$�H�m���������$�$$�H$�m$��$��$��$��$�H�$H�HH�mH��H��H��H��H�m�$m�Hm�mm��m��m��m��m���$��H��m��������ڑ������$��H��m��������ڶ�����$�H�m�����������$��H��m�������������,���7� ����ת�Ç�#����V)�igk���)>�G�Ó�P�B�eK;���tH "'�܉�a+ 71r����-���I��NRRN����b%�H�-T���P'C���HJT����CϲmKX"��H��$�n�$ujmH�* I��H�[6pJ2����Ij�G�d��tش�̞)a����d�=;�"Cj��֯]���* ;PK沐\m���(f(fhtml/images/bali.jpgnu�[������JFIF��C��C��k�"�� ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������ ���w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?��o<[w,�ۮ�f�[�\�;����y�iKu$OmRi�Vh����.w��6�/&�2��<�e�eK�&���=�[έn���2ܸ� ���noˍ�șH�a圸K�?&t15���F�3h�Rh�#Ba�ȶ�����FaDv�Ku��� �m��I�d�#e�ca� A��<:�P��a?s�r��N��(�)5�N�8ƫ������kRR�n�55gF1sU#O��H?g'B�JJ�qt���=�V�'k��g��䷼�dA��#X��/?}��62.^���M˧��6�Mq$j�����<�d*�1,P ���I4"�ìA���E�n�h�W�_�O��?��.u����~֧�5o���J���|Y6��1�f�>��_}�����-�5o�p����6~> �b�ۻ�/����=�OX�h���;����xb+mW��C� �k�w5��|s�j��>Xu-SG��7������xOV����ß��9pK�S�LD�qXj���mEa���*`�q��%Y��R��xx,}Ƽ�R���S�R�,d1G�W�^�πp�qF_O���O�uጎe<��t~�*��Tú��'.� ��!��S�,&36/�����y���!]�I���&���72�~\r�%[ʘ��y<��MkMB�D��=ì�C�ڱ��G*OR���2M��J�����Ue��i��O~�_�i�^=��ĝvmc�_|mg{u&�qw`��N����4i�Y�o�v���h�n�gm,S��>��j�WZ���B?X4�Q�e�E$R0����X�����*$%%�Qˋ�2���fx%�2��-��f�zX�<q�h���[\��ؘBpp�)�*Ú�5,�'�\'��L�7���T�eϨ�A�xy�IIO *���8:n�?}Bt�T�/MmK��2��,nPʡ�4L�fvF�Q�����GW��c��ӥ����˻Ί"��Uʈ *H���R?�-��_�?�K�;��k�Sៀ/|i��i�5�p�5k�}+G��j�1_xV����M�6������to�> �#�� ��?�P/��o��Þ8�m�*������φ��'��Sxv�G�Ŭ���i7��M[S�-��`��ź��|g�_jv7~��^!�o���K)��.���f8���9T��t!B�g��c�P�"�':���� G��jcU �]baV��'�_�s����'+���;.�Y}yW�chdX�{�g��jP������50���G+�'��8yA�p��-���r�YU���v�IK�P� $K����?m�����_x��1�z���V^��p�W�4���I3.�d\,�A}�#[����g�G�*���i_���|3'�~��_ƾ�4�v�YO[k���&���=>�\�֥ �a6:���Oq$�+/����_~8~��0����Lj�F�G��S���K�t�cP�4o O�5�>�ٮ^G����VzN����2Z�r�jɦ���[���n*_Z��Β��~��f��G���Q� EΚ��aRR������F��xY�y�.e�a�*T�Y,j����?W�&������z�+�<�mA��r�jQ���|3����ݴ�#�ZV�ue$pj�m��m5��y,1^Ge{3�a�hζ������YeoPp������#gp7�,6K�����p���=����*7������^���xS�=��7>'�K kJ�_G���:]j�^�]���A~.a�R0KiΉ�YB���o�Y�� �L��=cM�G�7��4�x]���uNm�?��=m��/.%��9�l�~u����ŚG�?G����9.7����'^x| y�̈́�&�,&"�*�a�c��s�����>z������6|ę�E��j�'�J�.�*i}_ ��5d�7�J��I��F��.�����P�nI.��3a�$H��Q���fF����r�n�$��ގ����<�f m�UY������/��5{}E��N�S6���,5++�ү4�Uo4���K�j�2�Y��O���-��#���d�$���B��̂f���}���K�h� ��C�/f(������̪S�.�gNjp���q�y���Smk$ݑ��L�Jt�{��wM4�QOU�{.n]'�D�K�s�*�T�Y� �@պC,�M��2mP�ގ�:�ۼ��o,�+� 3�\1�\��Ǽ�1@�7���J��?�sx7@��i��x�ǚ\�!���]O^��mw%�ƻsgs�ߵ���� ?I���j7�;�kot�%~̟�pW�#�Y�n���SV��s}����j�)�g�����źv�7����5�7�N[+�i�^֎�k�jZO�M1���ڬ]\�"�,ljf�})� c(_�̫��hՊ�)���x��TZ��G�:WG�G�s�T2��|�0�3l6k���3�<~$�U�fu0��֖���8^UiҨ�)Mr��2�f�!�4�9Q��TD~\3���e�Z(f�0�X�Ay K��T��\G4R=�B�UX@� �:}�Y[! 3�!��!���{xGu����ǜ��8�mgsi;,��o�-� ,���%�3��F�s?�Η_�� ��O*8fYcy���G����}�$dV0��(`��h�q^��K��m�Y�9�r��z���5���|o�I��?y�N1qmN��,cʛ��$ۏ���W�ݺ(V�'M����Y��MGq���f� A����6���2���N���ɔ]o�W*l�`��<l�d QD�*�^�%���F+���uڑ����rH�b7V���ۗh����*����j�ι���b$Dld��@�"'�.��������[ynM���� F�qvq������������FO��JVJ1庫���0����ԥNv�:�r�b��)8�qr��J�9��d�x6;)�u��I$�[i�����Iᅢh��X�Lq\�ah����+_��y�&��z����.��o�W�.��'��,�_S�ޛ�-cQ��_&��h:�<p��.���C��k�kr���Guq7��ÿ�/�� ���_@��u'��ԒFM�g�ɚ�]$�W���[����Id.0m��u'��[�j�㕗����r�#[🍼m�$�m<��|}�=JK_i��tm��l�n��}oH��ib���k� h�������#��8{3��̢倫Y^/+X�,=\d�*�zѯ��/�j�}����t����Y�T3N)�(�UY`�Y�သ3����Ɲzx<���<T#)�R�:j�'���(ҩ���|q�A|Tӭ ִ���h��狼].�ma�|�[jϨ��h��^�"�5xm �L��t6���H���g�Ǐ�~�u�\�w�v^ �𦗩�7U�Z׆�|g+�U�uK�SA�Z=&�F���m-��&B�v��{�+L�����������_���k~"��۽{S�WÏ����������x[A���㞣� ��[��(ⶕ���@Ҽo��]�C�:V��/��l�� �����O\A�x������h��2h�Z.��䶗�=<U�lu�[�����k�&7�|4��x;D�����|;� ��4� �����ͩ�0�KFh��V�i��+S�2���<.9�ϚU*Ԫ�S�A�w��i[����qvSY��J� ��2���R�9��S�(����A���!N�ο`�h� ���g�W�֑$�-�g��/������.��v^����#�ܯ�7�^3*ͧ�F�(�+����?ioًI� �����o㏅�*��O�Z��յ�;Y<;�M�#Z�4��<.��|Gs�_�d�>�,�φ&�u�:�G�i����F�UԿc}Y���Ox���<I{���Ò�Ũ�^�ԡ�N��֕�_�6Z'�/�H�[�K}R:SZ�isZ�iu{��~����ǎu|*����J��t��~-��[x������/�t]~(tl4]O��/:Ԡ�j��j)�4��Ӽ�"��b�xC���\a���fc�d��=E��2�5igti��b�7�.��O����C��� �e�E�e�mO��&�g�lsN'�a��z8����&���e9P�;��&�%AףN5hR�S����~K�������?�<���<Ywh����h����k{mI�:=����?�V��-xZOof���Q�������m[B����_x���t���z��]��0�ھ��%ݷ��,`�t�^�gq��v-u 3H��T2��è�Zi��?��-A�������>��?f�z���=m| �]OT)��5/�to�]��q���k��6���1�W���;m�]��'�G���V��wᵟ�⿉:D_~k�p���^�~"xz�Jե��Y�f���-$���MZ�Ķ���<i{g�i<M`�P��ω|�<��q;�C7�ӫ��Vkbq��;,�,E ��i֕<4 �.nJ��}GV �np��x\kxlu*x,��U�XR�WS&�c��n��s�˱0�*8��ԩ� ��OB�q/�J�������v�2�ӵ�W\�I�ivַ��G�>kN��GP־�wq�G4sA��VH�"�lKow`��7��~ �|5��.�'���_���M3�>����c��ik�MŔw�^���J�L��m:�T�X5�Fno�I�-����_�� �O�y�M��?�|L�f���7�[N�?ßi2x#ᝧ�]�xW�>=��lu�iڟ�mk� ��C�4k��t�*��?�z=�k��-�<s��>��_����ƾ=�úN���Yx�_�Y��|�x6�>'{H$�M��Ƌ���c`����a��^4�(��XDž�������0YDp9�{����<&O2�������0��2��K X|��>��w�؊��05��kO����i��c0y&+0��e���8,F �UJ���T�*�U(`3Ol|�}��Ŀ<�s�#�/Y��M��Zv��֭���;k彾��ܶ>t�\�*j� ��w�COKMS۾j�~����jK�|P����^�e�E������oO���l ]]A� �F�ʤ+Z���r迲G�O�[�W�� �PԾ$|��uu���/��?|;�o�_�^!Z&�5�ߌ�]B�c��$�E��|5y ��e��usgq�~d��㟃�#��xGÚ�ڦ���C��}�6���������Z�ӮoZ���}P��۪Z���:��0ԙnd�z���̵b3<Wש�Ī5=�rl�3�U���h��0��qX�^5!�˧GJ�q�b)�洲�>&q?�#���qfO�ʥB��y�q�`g��q�e<}*8Z��l=,��"��)�i�ewI,Ez���'g��'�o�/�<���#��!����+�V������{��_�4����Xi6w���ς�5�y�֛�z7���ss��g���F|i���?|u����Y�Ma�K��o��xM�;�?<#�x��I:��y �ڌ:+XGx��>l��2��w�~$|/���|%�o6��1���OxRgK�5�+I�Y�|D���]�Ri�߃�nuOA� 6-k6:��^�<z�������o�w~�Zߍ�c�x�I���C�^�?��j��oo�����s��+ku��t�{��n^�_1�5��>$� ޗyk}s�/ѻ7ϱy/eY�j��6�f�5LT�S5��U��MVs�z4�O ���g͌�1N�f�ƥ_�>�Y'�9��&�0��Qxy�<C��*4��b��Q��VU1�j������*a����������5���ů��;�|J�5;_�6W��~iK��K��U�ԭ�9��<���v%�.�-��� �ã�����g�F�m<q��R�m�i���ׯu�Dkh���{�Ɵ��l�tW�o��Uk�L\Es�H[�o�p������o���g���~1��o��t�Wޡ�蚆��x��A�C���}_���լ`�l4�ont} ����'�/ƽ[�~"Ѽc��g��i�����n��-v���{�J����qu�]���{n������r˨Y�/��\-��R��.,7�Î���U§&a^9�j�Y� ^εZ�(G�' �P�x��?L�q��0�~�`����t���Ϣ�4pu�O:ppT0��X:�r���b��}N?�Ek��w�&��[�ws"[�2N�=�0������!�-v�wj��|��k��>Ck�v�Ь@ �Đ]G ���ynL�M�I>cT�O�_��G���I�Ү<]��.�y����}��_�V�9�-t�V�L�4���F�[�2�;��l�1guwoqy7���J�z�|��n>"h�M��~2���P��=Yt�'�WW��`��W�e�_A���{{�F�C�}A�ͯ�]�j��[��fO��3�� �a���a�*��#��^.�Y�b�|=l<��X��F�7҅*��q��dY�1�a�^�<[���a�px�ʭ�s�b*Д�B�ҫ��,$�֔�yӥ����O�;�+�Y���>�C��V�u�����f�\�L��I���Xy^�t:dr����*A 7� ���~�<gg�7�υ���O�<Q�k�G��_s��������Zb�����'����K)�����?h���?��x������(�~(]��C��-h� �qk�%ާk��=��Qa�[[%�r�@�z�:[��j*�W3�>h��;j�k\�<�=�F��jz�|3u���i�N�d�ږ� �5D>�������a�m��6wO���s��e8:j�+���=<672�f�O�_ ��l�-�ܸjy�����1���0��NGW�\�����p�[W�qVgz<3��3��AN�w�����R3��V�pPU������������4m'O�<+�%�Ήoi#��=�ɿ����K����W�>�i+K��5̃H����~����&����1���C:���� CVbjRAqg��),��vD�����u�m�ޥa�|!��g����~��ص�A�^�K�_Hլ�,4���>��_��զ�>�7�����tmEl�� �8�H�|�2|B��w�j�0�cck��F�oqk5ծ��c��}��w7�SH�u�;��22�����^�?�ǀcV�e#�έ\U=l&V&X�]X/d�Ш�M�5VT�Q���Y���*�}��kp��P�Ҏ ����fX����88T��*X�pK^p�X�QR�cFt�C�T*L�-��w�_�<Q�}.���X��msV�M/ZCqi�kVz}��a���6�<�g�����i3�q�]Mc!���O|1�W�X>-�'�/�~%��&�i��h��!��5-6[�.M�L�@E�.���ź���G'S�e{/�ه��,</c��:?�4!y��Mp%ӼI�]_�2��M1�(�u⽱�<�d�a�Y~��o�X�/�=�����}g�^�l>&���ך����%���Q���t;!�ZK��s��=���ŗF�%�R~K[2�o�4��A��� *����[:�t2�5(Tͪ9?a �F�JnU!��sS���NeXZ�8G(�;�)c�ui���0�g�|m)���T���z�3F�R�7_�ԫR�%S�[����k��.xc��3�>|$�]��.�� �/�<�i6��ᆭ�MKþ ���; �Y����u��jF����*��#����3����+m_�K����u�{�^�X�o�x�)lm�K�mD�H�������_B�p\�m|R����!Ӭ�����{[[i���Z\jW7��nk9�=B͙/㵺i��)H�9�?���C����94�7��4����ė�2��M�E6���P[�%Ɣ���Ŕ:���O$�Qņ�c�}o��rl41�9(�R�J8(,Dq50��q�*8�Xh*UhWu1r�U��q2�HO�� ����!��rn1����i����ѥS��V����7�U�Z�.�)NU'u �u�^T��?�7��]���6cM6�4v���Hg���RI3�>�,5O��K��m.�<�-����φ�0|��u�i:"��J�E�l�/�/��4�#V��:�^�����sP���-��{=:8g�%�"���~.�5�Z|��o��b�V�C�t���U��s=�s`�b�\�;�n�i�Mk������_���S�>�t���h�E����o�4�ԑ,t�.��3¬m"���1H����_�~S��3����EL,*�T�*��b���F���F��3R��0��� ҩ�(r�*b���S��é��ʞ?�I�)C�`+f3�J�,���"�.�)Q�UCZ8�^*i�p���S/�#�>#��M�M�O X|7��,����[�~���ū�K����6�o�{��8�u�,����i !<�5�D�Q�B�o���y ��lm��}N)dyf�/����V&k$2$���Gw�ާ�X�|�6s��j:����%��yy}�{��\�v�L�5�յ�0\E%�8��Zc��E�H�-;X�4M%/u�W�w�"�Ӎ����ǯ\����kdH�1�+K�?L�� ��R})&����Bo���|�S�4p��ҭNs�__ ˊ���a� ����X�^��G�ѶTܪ{j��!�'��đ�f��F�&��V�/�����q��9�|��!V�"�,,��盌(�ӥG��sW�'����<I���^о��mS����[��ti��au7���6��:C���崾��D�S���1��;�� 2�ƺ����}�+-GQ�R�u�kx��-D��d�m�K�.�C��[�[ʖ���%��P��x�/��I����Oto�n���9,�1��� .a�,-uX�i��e�?��?��9g�k���'��Awc5ij_�kaw�m���As<Ok���5ē\�.tX&��Q�N-qjާ��%�Q��Ʊ���L�Z���`])VJ�+ ��byiJ�I�i�t�l�ԫV����usN2���}����T!��pXFa��ʱ���u�b����G��Z����^�T�F^�a�}U��Y�_�e�|?�<y�k��H�� x�[x�_h�&�k���լ/.�7���.��߷���ӭ$��h�j�ks�~��[_�?��ދ�)|P�o��KXѼ;`�>�<Wv�ҭ<G�A� ����eԵ��bқ�F+�I]/D��/��}KP�{���Y�x��~6_���=N�[T�R�[Ox�=3æ�;i$�����L��G��I,ͧ�x]"��?ٳN�Y� ��үt눭.��q"$��Z[^Z��X�h�m��K��Q4o%��[���\�T1yc�<E[+U��%,�*��<-|$_�����x�V!�[��2T�%����Kٯs:��0����dX�4�\Ɔe���c��م,jO J�<��Ab���Ӷ>n�G�x������<�_��5�s�?��7�߇sk�#дۉ`��xg[��ֻ�ڵܺ���n,-�M�H�oa�x3_�ƭ��c���ӽ�7zF��-OE�Ԭ4Bז����/��+H���H�)�E�-����R3 ϰ:�}�O |!�Οg��&�2x���b�6��YY%����.#�zd�ش��ç\��u#jV��w�m�F��|�k�_�mn-|#�^�մ�Bi�Ik��s��b�2�Iltk�$�fho��a0�b�� ���q��ZX<VI�R��,]z�U�ƌ~��B)a�S���ܹ��hE%G�q^����8����%����j1�ʍy�+%yW�%�+ԫ��_*���aq�*�������A������� ���4�3L���t�"H�{�VRKj�$7p��X�b��>�:���D�P�<L�>��Ɩ�ėZ����Y�s$�w�����kkv.��{=�M$���-���[�k��_^�6�����W�N-����o ���o�d�Z����ۙ�/}x� ����d�t���f=cV�s��D�R��-�o5̓G�6�t��5��V��і��WH�`w6Ms��sn�项����J�l=Z�����U�P��Zx�4��w*�c�cjG�R�*����W\��\��3,�>̱y�<5LFK ��R�W/�V�8j2��hS��%��*�� J^�4%���o��|���SA����MN�L�����3^-���Ý2��J�o%�g�ҢmG�V�[ ���U����:�ς���v�*�|=��3Om5�1�Ͼ7��t�Ȯ'� �ޛ��\Cs�����n�!�nT~a~�? >/�7_ҭ^ i1D,�m�?jq�w:G��{���Z��鋢;ܝ.�x|�D�|5�O�}���?~/X�M�_Zh��,4g��o?��nt�uk�,��z�����Mӄ��דH��I �pX����\fx̾�<�U�q?ٸ��b��\-L<iU��l;��z��B���:4�QU�n6�_��09V*<~'*фp+2��gJ��<U�� |�hR�P�c*~�tk�le*Q�A��h?���|C��w�N����ջ�\�[Y�s����I�m���q%��iu'X��a�Lڄ��Me/M���u�ľ�m���@���[]OSԴ;��X��o �D� Q���e�0�Z��c���P�u�t�h.� ��S^�!�M��-�]�-oY��n�w�ա�5�mĿm��E��zF�aq%��t�%WYmn��\�V�ޜ�������C�|*������~<�4��R��y�| �Q��m������Z��/��֕����}�隌�%��>����x�Hv�WL���7�������5�R����+է�tү|L�iV��J��b2��x<L�bb��y�ԥ��I� U�<p�9�R�O�d�Z3�b(¥L�����JM:�\e<uJ4�5q|md���ޗ�Ú��[^�Z����z��T��,|�j:N��˧%����VW�c�x��R���{he�D~#�,�* .uk��~�~i��%ߎ���q����b��v��?�u�e4�-�Skᛍ�F�f���v��O�GӥӼ%���\]��^��U�j�9�������ζ�j�V���:F��մoM=�S��/��'��|S��5��Vm#���wĺ&�m���M��Q��N�m�1|u�<!k�~�?>�~� I<���ZN���u_��֞�����'�q-~i֓|�^��~����V�<g��O��X�N�s�d51SYuHR�.�#���(�V�[��#��+Zmb#O�S��G��N�W^�������8���R�0����q�`0|V�8`�ؕS+�������P��l mJ�S�`�7S ?�>#�?����|G������S�xIV�W��R����Y�ܵ�ݖ�l�rG���F���cW�����߁��xlx�� ��^#�a�7O{y��`�X�Ev��}asi5�� `�d�6w2ʓ-����x�W�v���_����⎭��-����~��9�^-���]i]����x�U��S��4�u-;Q��tK�V��_i���s�^����o��i����=ޙw:Pգ�}U������:u��ime���1��ZI�}�i5���-��]_��7�YÏ����9O �>&Yl2�YS�ЫBXjΕZX�U����^���kK���J��'�2LvM��M&{��8�Tsh�XL^��x��,�\|����hMVTppU���]�<)g�>?�X�y��ե���<��,��b������A�N��Si��[��1tY�M\{��7]�^|�=��u��� �~"\�V�rx+R�7�O|N�P������������G�xSQV�}������ _R�����@�I��ִ�0�s�#L�~*]&�syg��\F�ڞ��amsd�wn��$���.�mra��5{H����b��q�S���WK�V�+�Zi�dV�m��.�u������3��� ŵ̒��ε����������5C�����a�1y%*8:t�5�C����Z� �{��͆�;¦9ʪ���8�X:\E��_����f���Ү',� ��W˰����kF T�?m �m֥��j�x\�h���;�J�R��|/��ji���a ^iv����#�:����Q[�V��K2���� :��|��o�.�q��j��k-B�Z�>���nZ GQԮ�U���,�K�"�����g�綍`с>��~ ���_i�Ko���_�jJ��:e杩Z��O{�5�6GO��tӧhQ�z�OK��WGf��\�l�5k$g�%��YR�+�����h K��d��[������@��lH����_o�8����x��T��7Vx�N�N�wB�aF�,iT�5R�4�:3���q�c�%��cjf\+,}zXZv0�eV2u*�q��Z�Z�(םzQs�:T#5Hb(�����~�&���ams�Sok���[��K�!l#����uݫ�Kwg���^Njڏ���mJ݆�З3Mmkh��q>�M��d��<3�,�%�rF"�䯴�N���������)�+q������ [�e��$�q��q�+"7��*'�����Ldfu_%�ΎW���W���q�T�=��'*�N�N.��+|��=��S�W�py�a�ThB�5)өS��=YFt�ʤ%��s�}���C����ṵ��*�n�I���X|agi6�����[�S�~��~��h��º��V��{�L�<�j��e������|us�Oڛ�)���ǎ����E��mm�I�t�/;�#�W:-���w���h<�:K�o��5~|K�-|"��u�_l�@ӯ���~�JC�\ˮ���K�h�0E$�]�j��!�)��D�����cRѼ!��Z��mc�V�o M�.�wr�^j�N�������W�=N�S�nn,�&�%��H�MV�~���+�8-\�QC%N�,-|�2�����UOh�9n��Y*7�z8KʦV�o1��S�R�6��0t!��J��u�}W7�~���3Bx�vR�N)Ih���7�#���m���o�m��:e��\y�N�������ӵ�I�I��Ȅ�G�|Q��x�{Xe�P�9���M l�]wD��L����5U/��������R"(�4k?����Q�u�ir(��%{���(�I�(X�e&�{Ty�o��;�jaH�N����o�x����O�uK��'U�R������j�Y<�S^X�Ӆ�����TE�+{��R��k�}�4:�b+UXl6���iT�b�9թS�F%��*S��4h�IV��h�E_�2L^�-��*�9�7�����5��¾�,=^j�jP��\?5G )�V��$�>��e����Z���q���C�\ͨ[d�_�V�t�y��g����]]$�12�Z]��n����?�JmU���ᯇ��uX�ψI�8��+8o�)|I�m7헑�y|������@���}��Y�[kk-Z�~�x;L�>'�<��g����Z����Z��iQ'�Y�3�0�g�̰��Z\\]�}��d���'S����I�$��z���!�Ij��c��QҼ?�M%��t�Z~��oG��t� �j�G��6�����3��_Z����xo0�g�C����By7����p,F75�����N������Λ�.�xr�qS�?�������Qң��� S)���x<v1Tue%*�V&.U0�e[[������ �i�A�Hi-��-���6z���RU�I���MZK��[�-�e�kyL�a �r�Mo$K}yf�}���A��W��_�a�E�G����� �k���Oi�eݽ��~n�k ߈m�n#����N��GF�#��� g���� �+�o�k��2.��ٵ��*�i̯sz�VӒ�+���e�}�O�n#�+;��_�'�m��8�=��߇z|����fе���wzU���i��6�y�XΆ�P���R���*�<�(���/� �ࡒe�I��q&uW�<L��T�x\���GC��<��Z��*��ԩ �����p�M��s����ʩ哯IT�ʆ+�x�m(N�T�F��6��ps�QT�[���~%� ��m�����x�?���l�|��>;���u�x��n~ _O������&��[O F&���Ҵ Z����kZ���5�ß>x�? �.j?�Ey�h�_'��g�7�>/�:��/�K��+�1�Ʒ�C�%𢶣��k�#�[Au���~�v������wҭ�O���X꺅�����x��>/���J�,b-_Y�!����C��n����n� ��?f?��gMTi�!�|�]_P��=펫�Ɵ��m�އ>�~t�Km#�i�a�Xj�#��+�� �t�a�@���)��p�s�Q�8k4��գ���vg����� UW�G ���gu�a�Q�Q�Zj���2�sK��r���a2~-�e9���Y�Xf2�x�r�n[KW�:�O����2�V�*�0�W�F����B��9��2Ѽw�C����3��jz���x�g������z=�OG�|)�q�x�ė�"��|m�x�Y�6��[B��J����|y��j��>���� �7�.����Go�k0���T�����D���7�d����_D��宵ok�]�zu��`�}����ɚ֝�o�CWо�:�n`g֬�o�x����KT�ơ��~�-D��������@�}N&�����(��Oh^�4���U��"7�d�#T���X5��}.�Q,�$�-�u���D<o����m��ӡ[-gD��q�s��sLva����|�7S��e*yb����^��Ua�˲ՉU�y噫��U̱��s���2�*�r5)C(���^�<nV�A�F�6�:���~���IU��p9�_��e�+� ?h ᧇo]��������z�[h:��h��Ư�ė� ��4��-BͮJ���6�77��hڍ�O����|��u�'��|w�w�zV���|>ӼQt��Z�}�iV��:pӴ)��Ӯ�<��^�����i��� �{�į�>�o?����v��ks������M���Xx��uǿ�5;�}Z/M��Au�$Cv� ��H���̳�ߏ� �(h?�u���x��'�� ��5���ď���K�'�c���Ҭ��̺��Ί��tye��T�=E�� ��neÜ;��0J��pn�\���U������|�֝<��~��b�⧍� 1���O��'�p��OżS,�`��m*x|6�����lN�(��(�+Q�� �t��|-Z�1�B����v��Gĺ��<QZ|p�ˣ�V3�"Ykztx�3�^5(��.� e�/o�dP�ϋ�,�G�X���5}2���?��^ç_��o$�A�Z�i��7�l��w�Z��kA}�����x~��mu��Osh4}Z�I�7ԖKX��4۴��uMX^���K�K��i:tv�F�H>��|7{~!������[i����Dn�?dcs ��uk<������-�����Z�:�����)e�S�b�L�.�#.�_G�W�J�ʥ�`���U�j����8�W����S�:�� q�*�/��J�3�G����h��Q���GIO��t�S�B��Z�yЧ5]ʜxs/nԼyg��^A�Z\�Z��N�|���!�2^i�P����]B-�d�6�d���f�G�К��g�����x�[��-��j��p_h��-���Ks�mekuu戁XuIl�K���f��{� ��^k�f�7�~m���7z��$B�X�}��5�����ˤ��B�R��K���s���.�Ꮗ�E��t�3�i#\�}�ú�ڵ�[Y��L��,�Ms,�~�=B��LMR�g�4�ּ���(��[��g�s5J.�IT��U*Pt!T+֡:���牞-V�+��Ө������'�q7&24q ��y��J����)�a(R��ӭ�K 8��T�Rr�����Ɠ�O�|�Kimyk��� <�m[J��;[��خ����~1��K}1u���m������Y=�$�/�d����� ¤�o��33+ڬ��k�b�h�I��G�+��+�)���ि�Ļsy�~�4��[gO�tߎߴ7�G��h^w��85�WU}f)u;I4�xa���K�,�����[u�xj�H�MJ��R ���K5�����9f{+KI�d�������RO��p�#����Z��')˳,��[����ᣊ���a':��S�*�U#)��U�Z��\u���3��+a�W4X��N�J�7�EE8���֮���R�:J4RT�?��Z|�<����M��#x�����6��[P�� T/�l&���\�O}���hSZ\�����9�mt���_�*W�/~�����=X���x�v�q���h7S˥����|+k�?�]��]�]_�����0|Q�θ���,,ƒ�[\i��߳�� ���� g��P����t���"�|Q-ƣ��G��/�{(uk]Mt�ƱɦM��h~� Ѿ�/Z�1~���8�o���:�UH�m�w�W�t]2��(�5 zK��p ����4�ݼv�Vw�x������#:y�q�ͱt��W��x/k�������W�9)�9�a�ԫ�q��Z�f;��;C��-���}W F8L%9G��Eҩ>zs�צ���*xxsҌ�/�n�g�kz���s%����"y� ���5��E�h���+G%���1<�D��؟�NkO�C�:��/g��-�[���h-�g�ӯ%���{�b���[��^l1��k<�$1�w���w6��ZU��� ��]���,��2b@F$��#��́5�������5�_|T�r�~mw�Zƛ�x;]ӿ���l�t�3ځ8Ԣ��֑=Օ���O����q�-��� C�0�T� XY�b!��}ead�ҩUFq�͉t�Jv�pSNQ_�\<;��i�uq�L�,�X��^f�:���p�J8yҌ&�Rq�o�ʊ�RT!)C�<������j����m,�%�֞]P��m����?�}��`���&��YEq����Q��)�6����!��"ǃ��[՚���?��K�_$��@����ZL7)q5�n����Ӯ�5 N9/t�4�k��������5o����쟣h�_�<c�_��Z����Җ���j�[i�s��h��m^�Y� ]�wo��bk�-��ۿg_�n�|�y�?ڭ���t� i���7������{X�5�OK����]^[�3H�Z]�x��Rc �ia��C����T�ҧ����:�#W�d�=��:�0��eK�~�QA�KUR��}���M�����ax{*�R�*�f�"���+�18�ʾ� ԝ<N"����%R��?�O�k�/�>$�x���b�_�Ğ�ޥ����:]鯨X�cH�-��h��� c�a��R���[���4����F��?f�s��m���%6�� &9�M���J[m��Auoe�y,����1I�X�9f�F�?m-<O�w�������%�ϋ~7��g�ѵ����W��oo��_�w����Vmk���N8�V��)=��0]߰���F���M��~"��ᗊ�g�X�i~��FП�Ƒ�}g���� ƛ��O�ۼ��y�x>'�VڍΣ?ۼ`ɥ�:W�q���Lrܛ�ܿ"�18~!��3>[[3�C��2�+�_�RXHc:jO?~�l,��8��<� _�դ�9�?x �u�\��bi�����ju�yW��t�U�BU(�5�n���wּ}�߇Z�����t߇��hs�i��^�k���� ������zo����5OS�G�J��%��w���w�:��t�X�x���_����j�7�N��뚗�/.�/�xWL{]=4ۭvm;C�զ�6- ���x�\�F�o�1���K "����Z�����^"�&�����h7kԡ�|E� sG�Y{��2,R�k�7w�5����cF����]���W�0���ZƳ�i��o�k���,uI-tK'�O�'���a�K�[����Ӡ��R��"�|�ʦ�r�> _��#7�W�SS���E��T+�e�U�7�����ck�ZXiIH�2�Gq�u��~�����)ҥ��8�ׯ�b',^#J���px:4��eW Nx�����/�7�����G�K��ׇ~j�7�����N�`�-��zŧ�<H��-��͟�,㶆=J��O���=V��=3�����'���R�P��z���ti���n��F����h=s^�m<K�ź��4??���9M�Ѡ�W�|0�>����CG�����e�꿳���,�K}Xt Lt����iw6�_�G� 6��;�omm������V�z��/ow�+�_��>"�x���w�~ .��Ko��Ԭ�M��}vO����MVK�wO�f�>�gk{}J�K�"ݷ���\'���a3fe�c�W<EZ9n*��J�R4'��ZylcC2���s�S��c0�S�2��8ؕr����Y�I��:T1��6�`��+fxz�����X�NX���:u0���g�f�����K�x�e��Z�?��jZo��ٮ���a���7��O_�R�4�u���^��lgĭr������9�q}w��~o����ɣxS���3j����Khd���S6]x�ᆫ���.�a/�N�=煬a6�9�g�>�`� .K>����O�|7w����5�P����i2k������tky��4�Ep�ymmu�CX���DW����<W�?�H�9��Q�+o�p����_Q��ڮ�y{7���kx�m��9��|)��x~b����^ct�}���?G|�5�^,�^��1��a�s�x��&4�c8r�t9}�#�b�]JxEN�#��fs�ի<m\Uo�O�o�8S/��� �NU�*Y�|p4�|^e��ax� VU�U��x�>� ���O[�5�c��a��?N�do�:'�㫝?�~��tI.�#�-HU�t���i��]B���.&f�Ѡ��#�E ��I�h�e�y�����w�A��!�Ɲ��i���ы�^��Z���p�:L��RG����o�����SխG�<��^�,�ִ\xwO��� �K��t��;�^Io{�q�<W:N�������K�jww7�zf��X�a�����C���:TH�/�7�9�k}:��R�N�t��ڝ��,3��WX��;��%Mr���Σ4���O���ΎK=Z^ʦL�G(�0Th�:xlvW��ucT��haun�[�AA3��f�����=J��N�'QN`�R��'N��x\E=+AB�%'R^&�_�L:ݎ��̶�3��h��������0�s[�5b�ӣ��SPў�P��a�o,o`�����im���-�O����O�4�V�c�Kȭ5mZ�Tm��ڴF@jm3����ޫ���J�M���M'P��\O�yc�K�eo�� E��j�}kw�iZ�6�j6�ew6���h��cQ��-�U�x?R�doٚ����Ǐ��:�,���X�n����73�V�vq��ն�w��[i���M��)K{k��SC�PukK bqt�[�#F���U%5 _W�)R��ԡ }b�5GU�t�f�eN4�p~�0���,CQ���Z(�2��B�"o�Z���ui�+�|#�/�(t�~���2��?iۏ����,,<G�{�r��t��!�u+[ȼ��,x���V�}�ĚV�m|u ���7�8�>8j8���eᨼ#�yV�/����j�I$�y����h����Eq�h���I�ˬ'��.^|S�ߢ�o�V�|+���x2;���ƙ���j2Ć'� �LB� �Iq����-�kOҏ�z��?g�����|Egi�=��K�6�����pͧK���v��M.��6�\e�����w�Z2�vs��wpɦ�����&�!f�o�& S�*�_ ����R�����^��S�8�0�EQ�iT��Y��X�r��ؚ�,<EXJ�<[��ħF�a�ƕ9J�){*�pU9#F�>�����?a����Q?x ���,x/�������\ǫh60��{��4 &�u7J�kĭGP�W�N�� �ug�C��%�Õ���.�Ֆ��.�H�i�4�.���ۻ�i�k����w^i�6z���s�i��Z�� c�z|^�5œY�rx�[���[�����v�� S�:�ӡ�����U���x{E62j�r�+�W�'���W�^"����W����Xi�V6�j�QjZ\k�[{[Aomv/Z�l����-N�Q���o�}�_b~��χ0��P� ��z��3l^����J��|>�2���!K�>L6��+�1��&]<�������l*ʽL?��c�*��*�(bf��V����bd�S�ZG=Zt#S��A�7�_~,i���K(�Z���R�.�դv�Mq�l��3�gc�Z��:i�]����Y�x��O�7�������Y���T��6zn��=g�z�K F�蚖�/i5+�˴�#ӵb�u��hVV��0�x#N����z]����Ok{�k�Ɲgu�_ l4{=> ^�R�D��o�ѥ�5$����-+Q��]�_����~̟�ޕw>����_����b��� i�����E����]>�;���},:L�7o�>���O-���gٹ(Ы���l+�a�;[_�ʾ>x�Y�+��b�apR� y�%�����O.�g,�<��(QP�s�d\h�ia$�9�a:��x|,pr���haiV�:�}�բ�*ѧ���g�+ms��������G���V6>�m��jz�K�Is캠��ow�ԗ:����奰H�R��,����K��A\��>�_ᯉ6�֫���V��x��mWE���I��/�ivIp�� 7V�/EŎ��^$w���������zo��<�>��i4�3X�^Ew�h���T����q��jz�iZl�����]"�M3�2���KK�6��[�������ȶ���+[�%�6�8��i�{i$O2ն������e��I���˲<VwÙ1����L���P��4i,N�kS�y�3 �U�c�����! ���k�d��O�]jy~?^�],6'����T�ʦ_��<E�����Օ�a�$��5c��� n>��|_ ������ɬx�Ǎ�ܵ������ږ��#@��L��o x~�A�ٸ��š��5���I��4WY?�v2Z��Xǝ=��@5��&�'e���甧���dچ�T+�#�<��Nbx�˷��^��o��5�8.�JF"�&���č�K�lY��� ��mB٦&Y剡���khn-&��T:��~t�I:��r�*iN��*q�$Z�J5�騪j�n1p�qå�/i[��;C��q8iKh��Qj��EJ҆i���t���*���kaiƴ*�G��|<�d�SL��O&��^��Jo�����Oie&���1i:����N-.��G�{;�wE���{T��~�����\��a�\�CD�"�4 ���v7ϣ�?�6�|;�iZ���YxS��<I��rť�K�N�RӍ�wsW�G�JX>+_|$O��_�-�0�x_Ú<�>:�K�I��z����K�^[�!��P{�Kg�����;�˩��e�sT������u�������ZK�jv���.�����PC��ז6w&(��[x�����o�dž�O�9�k�g��Zuc�㣌�(`�ӫ����b刯�Q�z��G�A,C�)�C<��9�3��2�xk+��ȱ�����U���KG���J�12�OAҍ*4c7��J��St�P�����tO�����.�{�J�ׇ�=ioD��4 ���/�4}7L��nmV5�SG������o� m���Y�x_���S�:?�5�{����������/<$����#�Y�Դ�Nm2}&�K��K��K�i�85Q�O���.����� e�I|��/�4�Lҳ�ifiz�HZI%��?�^��K����_�D_g �����5�����Y�ZAm<�8�bKx�,;�\M4��xu� ��?�8<M�"�q|q B�1xjYGd�0�\� ��ʦ#ꕳ��$Ŭ��Yf�Ƥ#^>�.����3n���8��L>}�a��v)�q���."�)R�s<E*�;�f^�WR�Z<ؘϗ������>�>]��l�v�-��<K�o����,�����ou���SP���YҼG�ؾ��'����K�(��(��⟅��Ɵ��q�xZ�Ė�<3ᘷZ-��<��~&� �J����L𭾐-�5����Ѵ�7U��o�����`�z&��:�ʚ����=ՌW7��>>�&���k5��I�t�I�H"����Y�������VZ7�E[�,�_�>*x.�[����|+a���o����t�����$��g�1�*�?�~�X>!����m��a�|7��W�կ^y�[�e��M�C��`p|CGE`]B�����ZT!J�#_��<W�x71��b�����a��LC����N�lF#������R�*��J�&��W��� �~���~���m-�t����;}2;My����9�5 N��K�5��l4�V��ԥ��kY!�̆�E��o�>�Q��8���u]J�ohR��C=�ws]\Ez-�-SQ����R��.��c���S��.�(����|'��V3������kdz��x�-WTxX��9�<�Z�`�}���x���7����5�-o�Z�>��]�SGs�_�\]j3iky.��3�g&��f���y�+�/�֫�b���TXl�9Na:4e*������)�N>���S��N؊�����:�j8,��ju�K�ʵ7MBJ�; ʥF�:�ngF5�F�<=H�E֢�5�1����^!��q ��;i���a��mk��iZq�h���>�ke��:��k]b :�դ��?��O�<-���ۨ-u4n����N�lb��C��5=?S�T�K[�K;mN7V��ה���k���B�%��lX_�/��M��ͨK�*�����F�(���J���յ=CC�J�_]J�Wz��r�g�nn��l����a1��o,�,P��G"�(�}~S���,wp��8�8<ʺxʔ�(�T0u(կ:0���c/MU�R���!i{:�//3�r\�1���x�+�:�a'�[��5,U�ê�ϙFS�jN�,=Jr�� ?����狣��ֱ���ss<� /�K�95�4q�̈.&��ZF�=��gk��1 �l�a�1~�;�+�O�R�Lj/4�x�Z�D����=�\�j�����,t��n��RK����D����U��k�g������g��x<j1��U����k�&��U��N���Iqa�Z�@��upd��[y�Uݱ�O�c�~�>|��e��宫'��MB?LD[�L�l촧24��|PK k4d�y]�.[����O��I�'��p�'4�sL^m�����y1��V��V�+���NX5<*ĺQ�:ԣ]�0�Eþ��5���1�� ,-,֞ [��[FR��+W��a�U���4q՛O�}[�N���꿲7��]�xn�~*�o>+i����5�hZ2j6%��ĭ�O��C�tt���W�u[�>�D��5_j���c�kwzZ�@�|{����e��^�χ.�_�>;�Z��|7��>��?k1]>[�6�k]CQ��tP�mݦ�m���ok��'?��+��c�Qx��Z����>^Y˯��՝ơ��ھ��w����ݪ��:^�s{ ���vmb��9!3���V;=s����i:^%�]�K][U�|=��j�E�柧�s����,0X�#f�_M�jw&mKU�.�>ό���>��3�C��)���ѣK���~��Y�"8Ic=�IbqT��1�*Ч� ʼF�K�2�n|3��8���e�5�q�K�乢Q���zk Z��j,4�Mb*�4�x�_�#��ً�_�7����4��.�{���Y]'�Eխ��W��˦�]��]7�2��̂�R���k�я�_ٻ�S��o�[?��ö-������x� jZƝ�|J��㿁������uY59�N��ܵ���&�,�WWzImsQ�o�|����փ��[�e����.?��(�~�?w�A��^��M��/>��ui�I�`ײ�@�0�����B���~�z\�o��_�'J��tg�G������w���D����֕-�ͤlR�Eqp��(q��iĜ;��a�ן��a,��QT��t����tp��z��4�4��l���k�T�C��O����?�3�<F㋥��Y,֥S_���0�qR��)֭��2�bq*S��J�HVù�?�߀>�|�.��B���X&�t�{=֛46���E�j�us��,�xu^uĿ�[]SP��m-G�&(b��Fq<�ȭ+���iĮ��NfK9�[���]��u,Wf��6�H������f��>�ප�HbD��il����̼����$�{��Y���IyF�2�M�}OD�KHey<��2 ���B�����gP̑lV9���_��G��#��0�j0���ج6�8U����=���oi9ҫ�*�jN�V�֨�u9��6�m��VUeV8IQ�R�"����N�E�]�£���.*�ӯ8Xu����ygl k4�2(��k{�ak�nDk0��-��x�QŎ�#��Q\y�0Kwҵǒ��I��GYeD��&����+?�[�Z{�B�D��n#trO�����C<�NA`s�}+Nu��ZE4�W2 ��u�+o%�B���K��m�,h�K,��Ydv���I)J���q���*nN*��g���.Ji^�R��S��q�*� MR��I�U-MΪ�����^Y)�M�j ��NmJI���PK沐\��0�0html/images/cat.gifnu�[���GIF89aq��������)eBe>hgMRgPg�{d�a@M=CM%HgJDh7������+.>{A=y+�·���K�HI|Gq�Gk�Jst{mno>:M<;=RRQGLK011%142M@0H0 (}�nVgoZ^\�����+,*:&CIDCjlCReJ�l652 %&&666L9L���h=a>�egd "",q�E����&,��Q���v��m���|+Q�K�mR��x���'���G����V�&�%J3K"3B"#��6%>57v8+$$8$�3�!T!!84}5>?�#24K%"��?r#6"+!%?6�3��#�%$33B��] ����42Q">4nVnk�V$����"2%�՞2���"NYl$#?�n�W�8>$4M|Ĉ��C�<ܐA��$n�A `dž!H�;����X�fb�����2F: �i�N�YB�� V����>����0z ��� (Ȣ��`Y@���U��.�!4FWJ��""�M -\�@�#<�����.V����,Zk� �]iаt���1j��� X��X��= r`��F ;�!���O�06h \K���C��yL�� 6��7p�СE� #Phగ��<�n����?ĸ����=h����p��R�jB�@�8F;y��w�uQׅ%�@B7�p�C=Ħ�v�q��w,h��x��Y�$�§4���ţlЅ����e�0C,?�Ӓ��PCx� 7(�"+#��0"�� �eFA� `�q�� �U�/��B�ip�v��(ڃ9*#7|P 5 ��1��H��$j���?�[1Ȣ�@U�gl�c ��A5� Rw z�w��ɳi ڑ� �i�Y�E�CoFB"�D��%t�Z��805Eb��/�C���y.h��m�A��m�B � �B���q�]=�rbP@�]P 0��c@(�oݦa�H.#B�?� ���â�rP������� ��i� t��]\��]�\(<�C�I�Y�"Ɓ����z�fȰ�Fs!n�,j�����+h�f>8@�){.���brp@���d@�p��tN�s��\;$��;,A\PA.���rDJ��+���O� �b ����a���0P� *(���'�6?젌 ��� lRC,�u#��� UC��B��_9�*�������*ht�Qe��M�z��1.��JP q�>��`�>h� 2X�0�)@�P`^;P@I�N��6@��qNr0�F� (���1�НP<�Z� j@ X��������Bp� +�n�`{��@��w�oIJPL��~�b@bw���B��h�IBX@Ը:D �N�p��IKZ��@����>X�� pJ>AЀp�`�A�<���@4� �!��8sO�@r`F�����@Ї|�1��B�)|�ä ��Ơ2��O���|`H���A�1@����d�2�7�M���_�Ŀu��e'p< U`*S$�`0S����`��dT��KB@�)%C���3����5 �$��h�b �@{j�i/vѿ0`:��0A@�� � @P�`� �� ���Q@l�n��8�\������@ ^���S!D�� �����^��� @{p)\��7��z�(�"b0�"�� Y,���AVt.,Y�� v�4�"������+�f^"D�� ],F � p�x�xw�u�bĐA����%�8GHpd 漦o����lWT��QV��}�3 A:B�q�/��!> *Ą .�~A$��l�4P���E�1QP���%��F�0О��)dp���T4��P���"���WΈ� �ƿ�@ �r�� k�K�HU&@�`��8MS�R�J.,�S��@8�m.�檄-���-Q����74(l褚��i_ي�n�p�`���p@8��A�>�.��(p_ �GN@hP��BG-x��PX'D��O��"�Z/��Hƃ�<� p��xXNu�ˢ�o��3.��iF����5p��s���� xQd���Er$wF�/G��awP��4y�����ā�)(���(B���"N{�-J@ ~��B� �A M@b�K 8��R�* 4�H�>G{Q�Н�}����8�/k�g�Y��9 m�!����� N2�K�h[@*��T*g|ʀ�%���+�i�l��u �8E�^r�\�f<0�`.��DmX��6 >�� *T�*�����ĕ�L���~F�aR���< )��c���0G&M��=�a�<íz���$#�Z�<���A��Y��\�A " �퐇*�Z�^Ѓ�� =<����eaક��� �ȅy�YMP��R^,��zp���-�AF6�`A!Y�HD�D����Aq�d1n��0��u4�sv0�zP�/�,�"1"< 9&02Vs`5<p��c�5@'h9!h6VdEh�n�P�F�Q*g^�7Y�� 38�g��s20"<� �����8{�ou�W��0P�VP'@=�~����0���F��h�i�{+����ͣ"�j�V+���C9&�W�B��s�SVPAB0�F���%0���/�p0p~�6��E��?��䊨��Ӆ��E[t�D��|aA`p$dpI�T�B �!-��Ir �L�-pO5H~�,i8��ņ^�,�H>RG$8� 5��3�x�����{Á p�q��#!�>��Up:.�X �����4�4|M��U�;pYP�%��8�ݓ) �L�N� :�N���������Tp{� �Bj�X�XY-�f )L�44�p� ��D7 �q���Qb�Pe0�IS3���%Gr�m$^�Mu� �>�R14Yj�p`�T*Q3&cO_fDL�m�p�/0��W0@�j�7 �9e'�)�rKT2.N�� �Y����$���F�#�p8���h�$���$pF�x Q u%9z��#a>Y�&�x0�\��.��2�q!4�\ñm��Da�Ã8@��n��#w�� ưbgaliaA� F!�1 1F-�'BI�q�ab���^�0W��2�����p�f �6�0&2@ 9)i�R3�b`F�Kk>!T�`��BRk�� D���@V�B7 �!� X�8��A�W8�?O�!=4` N���5��`�Pp `bÔ�!�ޔ��h��@���yƑ*e�{aJx#P:�J�c!� eB�mҀ F@Ew�瀨���@m$��{i���` "�;`@��$V ,�`xQ3�b�T�B��`�0� ���0��Q(�Ghw��i}�;�=�i 9/ Px���Z7�y�p���` �Ud�tqG$<:b:IRu��y�HP�>P�S�b��8J��=@*��Z=fD���� -��.��qН�7p5c��V XpgkFg�h7�w`=�e��#[��z���61�Ai�M��f0�*+� l�?P��a�1�W �#%16`�� ĵE2�����Ba�)�&��r�z1t�n�3��aO4�Y7�:ܐ�*e-���A�7�-~� �R\5�>g���/o'6[tG4��Q���t�7|D��DU7 �u6!�2�a���''�k�12�6�����(���Rh"�Ѹ�;!��)�-�Na��utXPpW~SDK� @qO,��a��m���}8�9`(@-a��5����Qp��bO<r�P�D�va���V�'��]��� t�M9�$l*�`��0�J�9�=)��$2f�+�FvB!�"0v RPSw�8�`!!L:�]$�HA!V.�7 ��)�]B��P�p0���X�h+�>�.�,�;1n�"Z���A�0*��*_�4h<n�x��P��WOc�`�t�@�r3�4� �{|�FoNT�G�>�3�"(秆��|A���(�B�/p @$�, b7;y�hC�,��ti�{r��6`��>!�0(r[|'¬/`/\��da4/�'�B0�?�3��na�G<�<��4��8/'��\���m�c�5��ǧjо��D�2��Ёc���7�ڀ�t#�� �Q҇#e�1j�r~���w��1ƤR�P��/�@xR�$�4NX�2�NF��&�a4�(�k'�`���c"$� <�&��y��[|PS��+6~��]P7��dg�4F�i�Q��{ k�"b%��ю���+0�� Ұ6:7nA�n���q(x�0c1[��XA'�B�0t2r��������2hq�ߣ)I��"J�'�b/�Q���!(��}�bQ|By�W�Vp�d�H~�nI[l,�@@��F�[�{�%x��0M��3�,�R(�-ہ( 8�%(Ō�[�V�h~&�~!R�deި~z}�:e�3��M��ajNܠ.�7�pRp}q!��+)����b"e�4�5b�8��`��с��&�9 ���dc6�&��\�U�iE�bt#3F����1HSv@��Q f��h��� q 1|�l&�5��+�Cƨ3l��c���� ۂa6W�)���ZqR�� wp�;"ZD�e�;J@�������$d�1�#�C9��R(`��� `���}39F!b�g4�$;b]�ma��҂V'b�ԕD�R�� A�a�TP��.)���Z�Aa���G3�H�V껆��?�?#��Cq��$C��!��)���"���<̳��i�)�H-:�@�F$B!ts3�]Y��A��:e���0�M�@%hNW.H,�ƣ�|�j4�Q) 0�_X�! P#�%`B F�Fۓ:T&�qw�sHs�ԙ��>.������IqD�댐")B��f&������) ��2���XB&PV$��X;��ڮ�P��Y���b0��C���n�|�%��*m;�������X���XA�ftu.�(I$�S I���v��.A��#�B(ydQ˂V�x�;DH���Bg�?��H&�?�s��f��E�g>%���w�zY� S�U��рA=��/;��{RL��M��f � �Q+��F�s�T�}��Z���M�J&a��V�����:�K�ViB6D�A�f !q�˔BQ� �����ܫ�CI����gl!��?@[@@��h��Ǔ��p�D���J��V�P`�n�E���/t�}j����j� m�� Z���e���#�$à�'G�l��.fg����c'�&��G ��f�ge�ӣ�&��ue@��b�k�d���c�&d�me��f#�c�c�F@c�c�e�0�P1�Aj:D���L��$�أ����X�HԐ���p��a�>x2%,��L�!V'{yj��O% ��`)58�:Q�L �g��)��x>uƚB��J��P!�Q�P�Pk�;>� q)��)8��#�Տ�2L��!C�G�0��pQa���@lX�D�1t�2C'��% ���@(P�f0����^�J�\AA18ָ(�-�!:K|��Vl=�6츜Y� ,��� �1�0���2���s08����l� �(�bMP��%L� 7�!�}8��r ���<���Lj8B�0�@��{`�=���p�Al���1V��|�!�cP��'j�l�yb���"GH1�M�Bޚ����H�N��� f� �@p�����C)E��D�apr��be�'t�(�Ha��K���H�a�DE`��E�\��l8QGg8�M+���p��������Km0�(��a1C�"ŔFٱ�Zx1"A*h�a�q��P7ZQ�m�2;t`�4�Ñ^�d�D�� \J��f�l�!/J����r9�J ���|u�l?�GE� !EP��j��C�=����@�<Odq�R�jC�p7a�}�Xr�W?R��F.]����Ć�i�GlXCC84w�.]8J��!�Rc��]���BU�ʹ��RG��~��!b�a�VЁ��>���`��To�@���>�|�p�3��0S�e �h8r B "a#C��@�;��J+��b(G�W�C%���5�a��=�$U<���T`�X�DNg���6M����ݜ�N�n�tl`ی��JҠRU��zQ�Ldt�!=���&��2g�F c��PEQ{�[* �o5m�@Aj�QЁ��B�K@�D����h@f(Ѥ�T�*q�l ۙ��,�8 �<�@�= S��T��4�dt� $�"zGh��I�'������i'�c�54 ZkMԓ��D jL�T�{�植�P%:^�з���>U�؉ ��-�cPЁo=ߙ�3���d�����=�Q�?�3ڥ�&��a�R�LjСH*k'R��X :@�C�&��P��Z�p� �X�ܲ �7��H�=*�h �H�r�)X-��(J�"�����Q�C=�`I�6,���v�@ < B��`w�%/ � �-�@P�ġ��H!x���>�DJֆ������~?`��,*��ɏ���4D�1N �GIJ=�R|��$����%2Ѓ�o?I����;�bY!+�2J���<8 ^0�y%XgZ�4:X�����qr��R���d #b4��e.q��r��0�؆��� TX�_P���oh�'0��<�<�@vT��q�Z�:�?����D@�&L9<���6����'NY��}ր���j��b�Pn[�*AЂ#�I#X Z�@�6�`z�t��T��#!�F�&� 2��M#@Ʋ+h�9�������U�xzˁ"�-�(ծ�c��b���Jp �4G������z�{�C��J2< ����� ^��6��.Y`���R= ��Q`��#�R�Q J��{��%B�Үʙ��l� ���:C��Q��"�>�L3�N/��ɏ�K^p]F� G=`��[�61l[�!RL�:���������n�� ���X䓵2��=�/s@��`m@%�pؑ��kTy�d�/�U�Ko��y��)��*7�3��X��a���@����g��4@��4`@E]KM���v͒u�G[z��u�kBp������9s`!0�7,� D*S���Dj�h�c|��<g��M�-[ˁ�+��j��rN58���h��k��[�'�<�+�& KK�DŽhP�!cRR��X �����$0��X��`>�P[/;|�FA>��`�l��uq��5!6��8!��F^D�7�@�a�s���:o��9��3�/Ѐ��IS�9!`���Sh���@j1�#i�-�]`�#�ڠ$'��l^Z�@�Y@0aс�v�-/5�ꁨ��F;x�c ��;~����y�Ne��/�v�)��h@Ya������2(b2��<� ҭ�5r�}fpxp�SN������( <�?o�.�a��{p�����EI*�#<Y������>J� �K�>b�j�Ev�/@`�F��f!�ХL�o�~��Р��+���< N���$�ζ����\-�C<mBa�NB����AD ,��I�.&����JX@]V��tm'⁵�$�2��p■+�^�5b���؋�4o����j:�"��p�n��+H���"H�$:@C1��Z�Et�&D��xN |����fJ���o�x@���z���A9m�JӀ�f�h�B��\` �0 xF�0|G��,|��%k��>ę�kJ@9x�ԺPZ@�'�Ͼ�/�f�� ���l��+���N`언�" ���/jdj! �Z�!Û�>>&t�{j��� ��`6pkwI�l)Kv� ��������(���/�>2�"�P�� @�� �õ"j����G4d���l��q����n�Mӄ�y�f�̗.�or�tD8`8.�֢і$!������ͱ�ޑ: X�F<�B&bB��LFQV N ��v�� v���v$)�.NG��C0bX����z�˰�ɲ����B���Q]0u�S��F�`"��k�CM��긨Rd�j�>D��Jx��d� =mBZ�$�CH0D` �Qz����f���� njˌ3"�@��8�&�/Lք\̅lz���N��� ����2�q �a�M�,���<��Z@���8Q ���P���P�����dRJք�%�|�����O9�-"Nji�P�v����~�Q.&J�̀�� �� ��(�rϖ��P9 �� x�#@І@ ��Z����IR��6v��Pd��� �*1d<��zGj�����1F �`�xJ�$ X���4깜2#�aBB�/Ch���(e��a�X�j�Bd� ���)��0$+�r� ���j�a����ý ؔ�(��Lv�����Yv���QҼr'¼ Xe�d�Z�"�J$�&�!�#��J��bJ�4�� ѠS�l��GY�9���s�1�gU�u�"�Mf!�l�Lr@��A�*$w���1f��&@�9�x�/U�O�b�P�L2�Z��v���`�2 �#� y��{�e]gHLD`��9jQ��ClПp����I�0�ӝZі��ն5�.�[��h��ܯ��G��#����#`AJȨ �q�8�dgd�j�� ���JJWUj_1��� �*�����1� �x������,�T@;��z��ޑc9vx��PO)V`-����Mc��ԱB���rC����d�& %ƠTa�L�a]�o��`o/�(ֵP�;z�v ��~�����LZ@��:D:x�u�s����`��/p�!��n���U]���n7�|)@@�����疌�$axF��rƍ��tm+�_���"�W)����`mB�ac�h{�|�pe��*��n#o��N�a�m`�`)��{:p��D'Φ��U�C*{b\)σ�H1R�ZD��6�wO� b{J���J�����tw�N < ��*+�@NB�Y�ř$�-���"����\Ù��� :aM+B��䤍 nئJayNZ7:� �{ ������z*�)��l��fMf�&��>z"Yv�B��8�'���\��~vf��HMF�l �L33<�6O��}+H�O� �p�-�3� �v��n-<L?ޤ,j&T R@"q�x)�����Um@�� p�|v �`����o� n���v %���R2P� ���G�"'�-T��a,4�4`�Y� �xI]4�T��EZ��y�Z�J��`�&�.�+�� ��$�@].֊�ر-��P����A���)��X`�<4Z������U@D��|�:�(LOj�N@�+�w�`�� �r6�"��N�g/ܬՈ`ݎ�k�+P� 'x�v�P ����6��k^{�B�� ba`%��5o�����.*��@�Z6��N�E �P�,䱀�~_�<!d�c��'��_d�ʮ{��4�}��"� �Ƙ�Q�HA,�(�������*@��j@5"��~����2 ����J;ض/b�U�������q[��x�VΡc�!���;(@w�>{�+� ��.cf�.2�\���#�h�ց9�ݼj���V��0��Z�d<�- (�,���,@��D;F;�#��� ,@�7#j���#0�]J�)��b�CQК�ќ���^6d�_�K�0`�-��-[��%��g���ۺ�S��� ·�"`6�`)Zm��>^�0�{CB`h{��9���!Y��"��(v�kk�Vx������7h��<p'��-��M "�C�/���ϡ���Td�����Lȩ�ᖼ���� A2 R�bA)EÀ�Ņv�2J��a���8�w����E@T��2&\=���$�z�E��jj`�nk��Q�!3!�z�(x,,T'��x�� �� �m� �`�- � �F*�HA���J"�:`�:� 36��nb�B���"]=��}<.��'`���(�8�W5 ������9�����)"���N����� �aBҀ!4�b�T'Y�f�}^;�x:�v����\w��*���+<"x�OH��X��W4�k��E�P`��@�FJ�`bx��� ,�(��8 ���:ձn��n��2Bc4��) n�Nr��sڄ��@4����#2z@��/6C2�[ʣ{��p�J:������m��%LQ��/^A��O5d x�e�q�/�/@��E�j>�K"*n bNbU�bH�EqA �A�"� V���G h7��Vh>��-ڀn��ureN�)���p| �hpT(���0�݄�p @�|���|l~�����,��xx�.��|$ЀDU�@�DA(��x(ń�,���dք�턜 |��il���`��`n������ lh����} ���m��x$!�����Ĭ�A�� c,`�D��/��aS��p$!����D�q ��)7v@�Ë.��&3��}�/4�(�#���4�h�"ӏ+p���#�N�_|����@;F�P�/��h� &�#�2|�-�����aGF₰s���ڴ�h��G�g��Q°�%<)�a���p��#C���B� �豣X�hW ��Z�a��Ȉ<��f;�p1d�(( ��Qࡿ'x������ݰ����sq +tDX�A�;Xpz�K�FK�a�� �e�` ��@2l�FM�C0P��{�Ԡ�� ���>,&k�=��b� �Cp�@-D�Z�\@AD�P@� ��mfQ�� �(:� [� p .4X�{(d���&�� �9� M�i�u>��O@ �.p�A)�j�#���TPA2� U��rݱ&�������(0g.T ��0gL�C0�y><P�b�uw�] ���o 0'.���2B�� W@�� 3J8���MGbg�-���yȟ{;@1Ceh�Ёzd���0��#j�����N�܅b�(P`��!X����Þ6l �� ��w�YL`�l>V���A���8��qxiJ����6�v��o�j� B�3�<3��9f��B8�`��$�(��`icMƴ@e�v�:(����R[�@�������p�1��Hq�'@0(` L � ��� }K0A��pC�,� $�A�l����@�R��C�8�� ���^ Br(��;���{(l��T/|��\;PK沐\�r��N�Nhtml/images/cover.jpgnu�[������JFIF��C��C����"�� ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������ ���w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?�?�(�� )G$SVD��0\���$d��#'�4w}�ߢi~my�&�+�s�,[�7�)$ϖ !�`Վ���z�Z�n�{q�[Z�]N�Y`�O2fU�I��HY��2<� ����W����� �p���+�85�K����5�K.��X�B��x4X 2^^[�ػ�(u�X�a<��u��?f�|[���K��G�e�,��&�� 6��xYm48t�.hmVK�/.5H����8m�%�0�I-��ZZ��~;��t��N�S��`�,f&�wVx|�h�3�UW��T��S���5g�~Ml��1�̋��G?�>_��Q�5h,f'��:���� T�֣5*�)��R�mS��Gi�ꗱ\�����i ��1!a��ai�1�+;�>t�#32ø�ʦ���NJ����E�.:�;I��5�m~��G��M���CC��~%xBQ�Y����,�]SP�������'�"�"[����}��?h��ӯn~}��~�}�__�u]I�E�>��/Ꮛ���t�O�:It�lC%孷����KD��=�K���H4�4�_���xg����x��f�|���c���֧C��,Lv;�W�� R�������3�NRX�Y��?q������Q�ܿ�(`��]I��:��n �Z���j��1�f�u+ڟ5h�N��h ��� ���\����z�� ����P�I�5�o� �G�?�h�_��|A�5�9{{,v�ߊ���Ğ�[��<��z��[1����j��x�}*�AԒ���C��C�z�� i�ן�4��9Ч�n,���V���!MSJ�X�l�t�su��_*���i,�R/���t"�r�1_X�q�(a��ѽJ�qrK����U*ӗ4%U/t��c��a2������b�3�U��a���p�VX�z5!Vt�FN%���4�R��k�gr�e(�i ��ćr�B�2a��Uj�J�,@C��S��H��U��V;���*r�N�M�R{�d�OT����R啚�^��MZ��t�qwN̩EPHQEQEQEQEU�P��H�,O=�x�}O��mٓ�@���'�Ɣ��?8�[s-��wJ��k^��W�]#(����c� ��o�~�g�/x�M���?�Q��>%ԋ� n4M5����1Ha��|V�m�It��ָi�������[S���x�TX4�I���fk�R�;�5$�Mmq��|fT����n!�?�a���~ڭ�s�=SF���Ԥ�%��h�H������JJ�QF�X��|o�-@��Lj�E�!����ۄ��ҵkpZɔh�Z%���5�J�D�W�'�<��?գ����x��.� �:4�ೌ�(��1� ��F�hЭNP�5UJ��9SG�ne�&�|,�xS-�����Q��|�.���g<,�FQ�cr�t��k��ԩ���J�uf�;?��}e�|o��|q/���J��>�mq��+��M�Oeo�ݬ:u����&��w#f����L&�9���Ǜ�����g'����6��;S�$IO�>/i�]���CT���ki��CU��/m�+M;H��t�[Izv�{%���;�߇.�Aaxt8�|p��!���.t��4� �x�}*MBIn�̖��<3k.��Ckwu�%�q�%�_4뚷��%�{���8�.մ�����e��cP�X�V�e,gM���u���K4�wpKk=ů�ය�����OG��qop�M�e�$��p��`0�,q�cs�e�2�EF yZ�A֯��Zn�4y%5/��_��x�G�q�O�[��˃|)�2�Kq<�Q�.��%�x�V6��xʵ(���b�:��ӭJR�`�?�/i+�_���ŋm^-;���~63�A�3� a���,L���uk[I��BK�Q��!��Z�J���<cß���M/����u=c�V��~#�+D�~&��n��it��> mf�T��]�4�|_�Y_�bg�h�<E�k��qkZ��i/�|��ž$�{��(�4;�NԮt�^���#���z_h�[C�\�~=��sy�g���g�Y�^�j:���춋�K�t��wT��m�y����N��Y��4x~��i���\�� n���E5̰ZjV��^��~��xg��w��2ȼ��f��eCɳu'�V��\UU3�ӡ��R���u<>��8֫/7�k�p�G����O�!R���H��X����Y��;/�l��c+幖Y��ʥ��aO ��' ���u��;���U���L���>�o�����y�_�:*�L�f�=���y^���+߅�z/���CK��P�υ�u�{L��Z�~�X�y4?���,|>���^6�~j>!Ӽx��n���)�1u�[O�����CK��F�̏����\�e�N-n�-?ѿV�֥�ox�t[-&վ����&�����4�{~+�_H�×�^����5���Y�:eޜ��^�6'��;�=�?��x^�J��� �Oi�~ i�z4~�f�a��^��w��{�h�2i^/�WR���7�.��+����3��kz~�w�K�?��3�,�8�>�?�z�q�q52�~�9~sC-����y��0����2�#/�"���R��P�4��<$�>1�o!�x���,ӆ�O)���)��ؘ���egR4j�X|oC��b}�j�NXT�V��� ���+pNx<sޙ���|=�:���s�^�� �#|t�|k�z�P�7�o��x{�zn���|]����<M�x��� �K�m���ͨͥi�����iZ�K����J�CֵM"�9��WS�$��˧^Ki1+ �͉����جW�מ+��8s6ʳ\�<��{��fX*�h<���o����2^�G���jagQP�P�B��V��ɚd�̞N�M~�t)Δ��ZT�4��Jp���B�k�E-Nj�(�� (��(��*D@�䜌`�;�����y��;�On��_~~��ں����kO��/��M>[�|\�Ǎn�)���'�|Y�kk�?Z�=�1��������ki{,Oa��a�T*bqu=��^֥�����hݻJK��4�Ju��������I�vI���\�`iLJ��op���q,��0�xp�w�1�k�4��h=>��ী/�#�e��h��4;�[G���3&��< �*km:e��}��F��b���c��&ύ>xWƺ�_���x�~3���t?��t����� ռI���:g��f����<;�x{��x�H����t�^�H�%~u�V���/��e��^�ޟ����o�h:{|B�#}��@��~*���мGe�?���<7d`����4=~�EԿ��w��<�G�? ���|�p� �ḋ����fi�ק���-�2�6s��qO�#��ౘZ� �l�.��R��Q/3�'��A��Wa�\_���Y��َS_���c��c��˱t�Ǘ+�BxJ�1�Ƥe�~ҟ,�͟�_��o�?gmG�_�O��~�O�}k�i����'��Y[j:���kR:��h�[k�M ��Y�oK+���F�y:�Z�X5�}I���1�m/�v������f���P�{+�g���XOl�+z�}=��\c��o�'W�~1��/�3�?�u��j>�ܺw�4��.ҵ�Qy}���!���&���igS��/�hlH��oƭCᾧ����4_�~��,^)�|eq�ꫩj��=V��pi�\[�!M��d�Z�~�O����i5�i�]~w�ӣ���2�f�{W5��� ����Ù>���k����a������QT]YaV�F�F�?vQ_Q�F?5�Ox��:\uM�k�fE� �3�>�*�]��v������U�ʬ+ѩ*p�Eƴ�9x�û�7�~'��Ɨ��w�U����%y�y{f?�.dY]c�L6ַ����\8gw�/�_|5���#�Z�_�Xj%��+Y�!}}�=�~"����4 .���:]Ͷ�x�˧�6��궖�"���C�x�ß l|[�� >�[�lZ$v�:m̳[��H��4�{[]/Y�-�c�'����T��8T�Nd��Z/�|s6'�v_���4�t���ೲ-0�`m�@�C�� um>O���s{m+"'�M���>��)��'�C�8���~7����xL��eU*cpIS���C�j�6�i�ףR����8�Zx��u�x��_�\1����c8[��O��a�e��Q��5�Tq4��a�X*Uq2�U����Qԕ�mk�2�G��?ii�xj�G��N�Ioi�]C�f��~�wi�'S�5{H�5kk��.t�����ִ�2�3]�m;���8�<s��7����}/�>�$Z\����r�_�;�>4мY�w�:����j�����O��j1�:f�����z��q�<�q�D:�¿x���S�����t5�&�_M��[�kV���\x�Mit��9�l�5�h5���+��^+���dύ^��,5O �J����V���@�K3��x^��W�,��W��|k�j:K}͖��A�K&����7��?J� ��&�8k �>�)p��9�[���Ox����w �R�J�:�y��a�p�C'�ի��5��+�.�\Ng�䙯 �8�� ���x��pXN���'���.���{<FKW ��q8\�Xx֧F�f�a{��]*�x�M����w�v�i�S�jPG}�md�W�5�>++՛T���Ha�{�C.�omn��qwV�|D�w��]�:�F��5/ x�Is��$6w�7[j:'�-"�aq�}���uk&���š���n�5k�F��O��5�>&x:-w�Xk�P��~��V�K�|-�t�*�N}3�Q�'�]V�R�_�e��������^[���B�Ǻu����jx^���^i��u��qM��:-��%��<7T�V����l����-���I:^�m�����x�6��x����*5)qnT�O�?�i�q2���U%�̽���9��b�a=Zo��u�4�D��ѷ�x�)��2�u,�üھC,~K�^f��S���G�),�8�f9n"�"�/�מ[���UG*�?)$�g��Ht���^Ե������������\��2🅵+�_�~�T �5���W�řG�P�Εc�2-&�R7�W�_�9|}�����[k�/�����Oź��u+!�%�M�okz���t���{M �Ӣ�ũZCp?��IM�s�����Qqkck��z߆��d�o%��lg����TE"�H�]�Q����,�2=��ƿ��읯��b�g�Oi�l|o�N���{K-"��F��ƅa�A�5�2y-u���Yg��5��k�����=����I���Q�^&��3ÜFI�p�`p�̫<�s���^�B�'5ɰ>�.v�f5���ha#)�ۦ�N�����N���7�y�I_�x�8e,�$嫘c8����'2���|�u\i���W�,(S����$)?7�3����=+�/������m�?��_Ż�G��χ�_�/?���HZK�K��G�<7��v&ym�^���GP�Г���s��qm��A��N ����N������0U���a�,V]���B�"+��F��P��MY�b�*R�V�j5�W�T�F�m�qT�Uh���~��v�݉E.���b�(�O�}u�=/��į��Ğ��~��xk���5Hu�A��xs�����O<���[��eq,W����}��.�} [x�O�|)�J�5];W��ⷆ<Kd[K��Dž�?Y�2{������_�<9f�vw��坉���a���]�h�2���5�S�}�ԑ.���7�m���h�y�7� ���3����m'�Z�1�A*���-�����7�x�V�7���~|/�.��Y���G�4m?V3���u�8|I��:�R6��� ��z��}��_�%�����f�KW�˱��2�&:�8��:�o���ѡ��SV����a�U�[��S�ӟ�N���8.�3�����I�8SG���nc��jY�;-�ҥ��]Ԫ�O�,�x�JTa' J>Ƣ�4��� s����0|7�m�O xcO�῀>'���O��x_\���8����|!��gG�W�猵{ xR�}[�:����Ιue���L�3� I����G�|;����|-�c���~+�y���{�5 ��&�s����Z[ �i��W�s������?�<W�;�3�럃�_ş�^���x���M#�:�ɣ�U�5�2��;�{-J-f���W�[�h��K�EЎ��e����|9u�����[�W� �Kυ��G?,4�J[x�R��Q�x_�ZV�_�^���-�:n����1xf�V�|Ua����x��X�m�ʏ�L��J��g���ҫ��d���7����t0٦�+�����b�Fk�K;a�B���՜ړ_̾:g��O�^9f9V>�&UK ��1exn�Lj��%�L=ia����V� _����O�ty��|K����������ƿ����D����zDŽ�1 ��M\��[��h1[�#O���Q�t�+ ����?��=�Ϳ~9��'���3��|)6�{���wzͼ��5����k����.�L���]:��x�m2]V��K>�,�K�?��o�u��_�<g���t�x;Wk�MNx�TXu(���R�Qk�Yl�#�Z�+i<�/>���mR������?i 2��oŋ�#���"����qu5���JС�����V;}Z�g�Ke�݈g���g�M$�cm�Wq�#�8���W�qFi�i�e\IV���e+�0�02�*usl-��0����N�)�n�H��d�>�v?������n���'�S�����8jT1j�\ d��p������r�����Q��o�ϋ��O�?ڼ��W��Ss�x��K/xL_����R���4���V�n��0�w g{�������nt�J���|q��^�X��ů������(|�o"��Ii%�����VV��Q5���¡��X��K�Od���i�.��?ࣟ �;�º��?|����L��l?��a�˝rs6�ȱ�u��W����GhC�|U�Ě_�[O\����x�/|q�i^"���Ƃ�+A�Y���m-����@9�l����[�GI�x>�����xe�^������q�#��xa����s/�Ɯ>�Z��8�k�m?���\�^Q��e9>y�e)�xM���o��� ��d�-*T�<J���Z6'?eN��\�p�|G�O�GԼ/�s���c�K����ב�F�m�\Z<�x��7�>�{-��,��%����d �_�>�4�WS�����ty4=J��D>3_�BK}?F�o��uԢ֒�Z������%Р��Q��Q�mlY��τ_�N�xK����7Qѭo�����^+���ge�]yS���X���)k�H�5+��C25����a��_����O�ߏ>6�֣��5] �K��{�MwB�����m.����K��([� ��iז��ڝ�֥sa���O��>��g�u��?�eS��'�0ؕ��y�0�[��e���� u�F�j1�l?��)J���^S�o�kÜ�:���~S�P�aW&��B� ���'G4�U��F�XgZ ��(�5��W��g�Uh>�D�<A�^6��躭�Q�{����>�u=����B=}V;�a1G�+īmge}yk� �k��<I�x�%o驫�ՃC}d�1��)^dI�ɖ�D��؈�n.-./���-e���f���=k��/��}�G�Q�|W���]�^*�h���\�kuҬf��dž�A� R���t��@�2�����=ByE��_� ~Գߋ����/�=[B�H���C��z��[�>���-Ytx�㎑��q��mu�#�U��e��_�H?�O��1x��y�u���e^��Wΰ�\�#��x����c�Z8�<�^ֲ�5p~ΝGSʥ�g�8�)0f~�;��߉xϸvX�y��O7�p�T���e��+찘)�1xl,��V�R�f�ʧ�'��>4��(nu_�^>�摠�Is�Zdz'�n.淸����ѧ�Q��J�5��ҥ�hb��p]�1��7�/��/�R&��1�H�l�t�[��~�H�{�T��÷:&�7���Z�[�_i^lڮ�����4��+�c���Kk��v���9���x?ó�Xׯ'��K�}B�Z>��kz'�mo��o5Ms]���J�Oo<�z�إ���]�ě� ����^�F�8���t��q�/4Y�[��W���&�%�����.�{k��:=�R�q��}p���/���+Ğ �2Z^-�Y�)�C��0��2쳆��2������ή.��ʝH~��%�-�%~ �+�x��8�� W5����f9VE�üV]CÕ����1MS�����b"��F4q ���q�)?g����Z���&x_����.��; k���A���I�Ko �;N�Ӽ]�˽ �u���]�6��f|P�sG���������[��w�/��hQ��)9��iᕽ����C����Id/�/c���d�Ú4p���M��Is���m.�G�v�������&�L�X|R���\�W��C�h�%�����"G��s ���m�+G٢�i��V�v�1[E���D|-�s�[�_�_�M2��÷��̟�wD����c�ڎ��/�Z_XIַ������i`ե6v���e�u/�d�*e�C��U�*b�|wUαXl��Τ�?5�x�<�U�'T�!N*��#�� q�yñ�p��Ӟ>��_X���je��v���Q��W&�2�Q�*��8Qte�*��/�du ����g=�=�ii���aU��0��x�V�1s�ظ���f��I��"��?�.�u[xn�W�+[�f�,n`Q|�ơ�� ���]��c���9���Z��p����%Q�A�JO�F�rk��p��v����x]T�/v�$��ҕ�&�f�8����m2)O�CIY��:�Hx`��*q��g�_ӟn��.m0%����E��Yj�Nn��{kg�T���!�(�0V8�0 2�<'��֥F�['���Lw���릆&�?eh�JU0�:Jxj�p�IY��vog��ӯ��G ^R�*sw�&�(J��/)Ԍ�Er;;�������V.��چ��]^[yB�C����+���R}5����}�Bne��f]F;sw����a�LxW���7��O x��3|?Դ��ZMc�^��MKT�<=y�ê^xt�t�o��m:}KN���/g�O�����{��>�F�i���q���DTG��BK+ۙ0�1-"g�bq�O�^��}{P�J��hN�m��_d�E����� D��!��m�/��f%�Am迩��b�4�`3<~���x�%<D�V����קuQ�hr]��{��r�����+�a�����xU���e��-Փ���aj{9P�S�a6r���zm-�.�����.�����ҥ}�P%���DX����n7�"[��"��e��[{�S,�lbH^��x��VxDx�h�Ep���pF�E7��n4�WQ��"�E0k[i����dc-Ħ[Vc9���&�XI�e+�~��z��;��_*o(��y�Ց!�M�����6��e;��xQ�+l`�����#Ns��%��8�<��S��~�HǟI�T林����g�Ͳ|W�Jy������A*��\���(UK 8(J�xϕV�Eih���&��;�OC��Ļ�K��ռ-�<r�m�?��c_�ɾ��)�h#����_i�wZ|�����ے�q�dд�O��O�.G�.��|�D6�S�/��2�X�m����|G�<?uu�jz���dM./���Z}�wB}�YU���J?�t��$2Ay5���k:K�k���V9ȍՕ��h�bt_)����]�=�o���N�;��ZӼm�O�/�3�g�j���m/�M2Iw�].�m�W]�X���+I,!�Ry���YS�YnS��\j��O��y�&8|_s�1���<�yp�k`0P�G��>J'f��lOg^x��x���ҏP�[�9O�4jf��5�x��5Juh��wJ���Na�r�ͭ!�}R�[R/����$o�\^Aqz��c��Yolw7�{;;�BX�}:�L���dž?c�B�s��|{-iem��zǕ�/YA �DŽ�mF��s]X9���l,�{ǹ�>��U��m��F�_�F|��3-���u��u?���k�m��xcZӬ�����ؼ=c��b�5�/N�㺴k���ג=��🈬<m}�SM�t�OAA��m֙{ƛ�Y�����s���u�[�{�.����$�����G�~�yf;%���y=>'����y�Y��[��`1�Z�P�J�>�:��S�U%Fxw)Βu%�G���'�R�6༟��2Lƿ��瘬�?�g����U-z��7��+ú1����=Z���p��Jr���"�I��c�"���Oxz��7�ׇ.������:��wZ���cuk��7Ww�V�q���:�� ֒�w�h�~���ߢiw���Ɵ Y��xw�S�[�i���&�Ö�z��T��K?>}�c���ɯ��t�wK���Tv�siv�,�6_���oo�2�{�<M��_���<I���] gG����^Ci7���-��SC�ۦ��j�T�j�x~�LMCC�����#��w�?�9�ۭk�t���/�> ��K�D־�&���)�u�+Hգ�M׆�}�}�{M�;����;���/����0㼣���O��쾆c�Y&<9�L%F�*u���W�����Z�h�e��s���㾖���u�O_��k����iT�if���8�-��/��8r�6qU�xړ�����Ua�Ia�0����7��uo|&�e_���n��~'�+�x3I�%��iW�ͷ�<c�����;��<œN�U�$�;�1�+C Y�۾��ÿ�~�~&~�>7���ia�����G�i^����� �n��o���Y�x�O��]/P�����-�R�J��V�a�/ο�A�� �S�^�>*� <1��i�~���S���t(c��u}e��_�C����w:�^:^��Vv:�v��vw]���O|Ӯ�+��Ŀ�w����ѵK]m��&��\[�\� �e�]ƺJEn��R��Kr$�c�qW,�'���Y�0��͖m�p����q�L�c��8nt�ueVuq��wNԩ֮�ϩ�7ѣ�o 1<[��q��,V��/��G_1�_�'�1��|]��X��P��fk�8�ÖT(�q�a0��]a��~�_�����~x�U�Ц����`���v��Mso����Z��4�hz�=�ֵ��O��ó�Z|���T���k��K��Zg��R�_�<}���MB���T�Y��Oje���t)t�n�tȞy�mM4=wZ����5X�u���m/ �f��>|U�>4x{��Ιo�د�| ��a��gM���N�L��Q�?隶���\%Ί�v���^����Y�|#�v|;��v��ix4���Y�VԮ4��<���]6)��|=p�!k����ID-p���A�w6W�/�/ⷁ�*}��>��=ϸo!��x�!�^槉�6E���[.��4(M��^b'�������� q���?���o�|/>�p����c�y7��;���x��K �U��<=�aha�m���Q���p41���έJ��'���VhW^�I�j>6�W�/�Z���ח^#�4;MSY�Fю����ڗ���!�Ȣ�����7^�$���iȑG�x]����搤Xe1#1eL33 ��|�ǃ�5�|����n�1�Oj�I�}�V�R�f�k[��\�%����ߘ���o��Q���Vv�gf����g�;o��߃�|6�;��k=B;K{��/���-�N�m+�c��qg��˛���Z�nG�pw�5�& �i���2���K6����T�"�8:Q��NjT!Jr�9II��2m�xA���q<Z��.8���ke��f��p��Xl��K��\}��RѦ�����J)OS�4����J?N��9����P�?����W��1�&����I6%��ج�l��*+�i�C�>Y{Vau�*g�=��J�1�L��ίx�Hd��ᵺ>z�I�E�r�c��@|8�0��i<E9S��u*6^�4���V�M��4f�=�T��-/��mc�MU��U�_I$е��$�B�\�y-��.M���UB۽�L�1�m>wJ��u+�,tx�3���s� ��Q]�Xlc���ٞVeD���j:���/�[�L��H|�:XZu[�Y�in��H�|�¨�w��\%��[�Գ���Y���{U@�,n��V� �����5�,a��<��jч�i`pU��jEU�EJIڢ��&��~G�p�:� X�>ƞ�̣��?e :� F�S�2U��ԝ9�B�mM_[h�~�=�K������wҢ��\Mwkcqx�E��������y6��X�����^$������Y�Lд����:�a�m����V���u,#ȁ_Q{��M;-�K$����|�ǧ�_�ɧ[�� ݴs�B�b�s%�i&� �20�'2*��l+g�6�h��kyQ� �<JR�㻹�]D�y�Zܲ���had�S�9�����j ���FZ�k)G��4j�E]j���1�����c�f\C��O,�����P�R�T�B3�%���n�i�Ug��=�0~�_���_F����x��Y�K�o�����[Dn�[�!}I��V�̷7wz6���%�IgN�H��_��֟���G��s�o�⟉�#֯<]ag$�xf�j�VmGM�4��]�d��n��c�R�P�mT��K�o�����_�ZcG�o[j~!����Rh� y��O��g�N�Q��jVKs$��ϛ%ôe"�����>.k:���a��[�����w�;�qZ�kkwdF�m��j0���mSRxC�gu����<�.+����2�����f�Ζm�Wq�,�X��}�= eZ1�?$��.��W�Ox/�k�pFG��V�����t�������P�R�"�&�֓���<ܦ������^?ضo�8����hiï���Z�4�6���?��6�=1�ZG<1i>-�,��Ѥ2m�����n�����u��V�����s�ݲH� �MgF�T�=�pj7rkV����z~�+�F��_�ä꺬3A�i����D��kɧ~�|9���_�f�O/��io�����F���<�SU���\Yjw�-��ǎ4�*�X��k�.����cl��y��t=R_|��֛��kW�n�-����t��KE�t�"!�D������RӮ��Σ�\Ky���_��i�\;����n1�s�0��,� �y-j��Y�Jw�`���8�p��=*�+�h�ԛQ����u�>;��*8I���p���(� �6y�W��0��T�N�j����;���V�������5���~�^����O�^:W���<t���O���t��5�~˭���]�G�����t�xm,V ��5�6�a�g� �����3�_\�VVWpx�%����"�^*�4�u�t{��-����j�t�����+p���ƳE�ƺ?���|c�C�5��ֱi�;ׇ�F�V�C�[D�����L����O쐲E���G�Z�w���٫_�χ�>,��7�>x���[�6�Kq�k>�o�{��xzQ5��L�� �F���V?���^(pL���a��ʰ��x�.�LN(��c�8ƜkEA�2wQ>c)�B�~q�·�s��,�8>&�a����2�O�����}NX�77Q��_��R�a��BQ���~���}�6�㎇�h�1�B��V��ѡ��x_G�ԖmZ�W�G�&]n�\������< �5��O]$�/eq&��zO��=G����v�|%e{�]O�h�;�q�H4�"����<:47�Hܳ%��$��E�KQڛ��O^�/�&����6�`|)�-c��������3�h(t��4�}:�Xҥ}_M��gHԭ>�gմ�Zll>��~���m��g�⦡�mFCe��x[U��ž �.'��v�D�-�B�nD�t��^ ��k�)c�ү���1�*�2���R���e�jY�0�]*s�ʪ���p<իN�:Ӝ�)s�H��v�@�_�ׅy�<k�G��K=�«����k��%�Waq�,7R��[��t1�(�KO��%R/�km7�ß�3��ն��7[�Z�kf�mnu��Y�\��Vm=��NXI��9⺳������r\-ǀ��?�����o �#Ú�k���&��Y�O�����w�ޱm��6�b]�Ş���6z嶇k�kv���'�_�j��g�t�7�z��!��m;I�Ě������JLך��\<�X[jZv�h�l,��8�ԵI�� ���{�:+V�����o�� � �m{L��R����K�5(l</���7*!���EՔ��č�ڋY�� }�|�������5l�0�x�ϙd8lUU,�������9O�J�iՌ�)F6��.�Cpg�S��'�dm>=�e8b�� �U˪q.|��6�c�eXY`��m9�K��z��eZ���C�R����O�:JS�M%zG�/��QE���H����Ec�����%ŢKu"�z\^��1�s���4A�`����#��;]O����٥[�Z�J�+8�9&RP��iX��颒5��HV��� x���Z]Hmu��[�:F��� ��s_��t�J�El=&���ɯ>of���]���t��K� f�o"��1�"���|�.7j"&���n� �â��[E*���v�H5i?k*�D6r�)I6,�%[���r�R\���3&�� ��vhn�[�����&�N�E��X]�ȑ"H�ZIU��t�6�m �GD��[���Hg�|���M�iI��'�✒�e�p��*~�)���K�{�捹�i_��l1Y�6�#��o�R�e�0q�)�iO7����Ty�7�RM�ž�Z��a����1}�糖,���-���H'���%D��ʞf?r�sc�Ӯ�=:�k�6��o��4�N�X���|�<A�"Je��~��jo-R�$Õ�`��I�qt�3��ഐ�[:����<I��I���E���qk1k���Q,��!�P�b�i�$�C<��|��r> �<F,��x�C�*�t��JTpi�r��Д��}�KC�)f�6UO O���,^*���_X���4���YNRj.1j/�������u;8�!���7�w t�5�w�0�h�.��ʭ*�%_r-m7źΙq���O=u�F��kq�4�42I[�pےx��۴��ŵ�Z^O#�M}%ݬ��f���gK���{}��<�H��&!*V%�L����qE/ڒ�H��=�$��GĶ�J� �['��A�t��x����+��q�+��O��M?9;��Ec�_�^"�3��*�q��!��ҫN�jaUNxT�ESmUZ�M]k�G�����C�O���+�>�@�:M�zn���:i�D��e���+�����#�I$u�(��Q#�����G� �nj~,\�.�o-���_M`��:��iw�i?m�%�����Z٬��[��Y��K繑��2��֖�ڤ�-�ZN>�e��v�Mh-�Pd���_:��Iu"E��n�J]+K��-�Q{�-��d�q%���)|��#�asn�)H��į�xl�Ϗ �1�^3S�2<���Uup�f,���ʕ\����S�7Z�W*�����`�?���7�8��p�ZT)JO�d�YFk��Ul�F �nu��<��.m?L~~�?~X��I�<a�i�3j���t��wPg]x�Vk[k;�->��c]"K7/-�1<W �&I|�Я�z�T��`�4�i���ŏ��a<��Yk��˨Z�[<w�f��V:�����Ņ�ט�Q�-#��f����ދE�b��.�{�7��O{�����R�#B�G2�u����sG�Rx���7�j��kwVfh���OUͼ��,����6�)`*���F��*~�ƞ#c��V3�0��,~u�ɱUa�ңV�:4i��ե��ϴ���Fq��*����N�j�^sŜE��a�f���Jr�<G�xHe�*��8�5L %Ntqm�7(ҭ;S��^(��4�ӭ�v����yf���n��-��>�%�_!�K�>��h��oG��+�l�v��ⵙ�S�/�~|�_6���=�l�_����Z ]jzd��j�|�a�{�ׅ�/�&���ϼ�) GR�|/�o�j�^�m�~ 3N>*��,쯮�</j���E�"妒B���V�����jlE���2{��s�����������K+���]_φ<K�����t�m[��f�nu�l$��MWM����ͯb�����n)�Cb��� p���.U1~��,f1�F�ja��(P�2�V���W%M�*.P�"��)�%�� �\Y�S�X��8��`rʒ�a2LƖ <ڥJ�q���帊u��BW��9V��g����ׇ<K�^��>3ޯ�<Q�]Ia�GC-�,o��^�4�i�h�qGk.��5������ x��v�(�F�����R����:(�]/K�j���%��J����j�l���� �<��(pz��b�,�s����*( �g\c���?�|��6?�s�Fy�ԡN�+������p�J��A����� I{�q���,��xG$��p��~��e����S���BS���)�'�މ�--��~���+叨 (��uZ�o�/[i�Y��=8Z%���n����Eic�!�F�˶�H����K������D� W���x�b�Pq���8��qT+�n�"�kڥ5�S�]$����C�.�U��t�R�Z���:Sp�!V�I)%�k=���|i��+�qo�_;�m.b�|+"L�-�Uy�]�raL1�ұ,`�y�}�џG�K���K=����YZ�5�[}6Pe�����#�WW�ϋ�m�{���%��2��0�ʗh�p�l�X�4��+|L��~Bޚ5�m}c4��oi}d&�i�-o���"����K��Ia�����'��S�U̲�t�N�\M��Q��6�v�~kr��{;�7����&y�e���e�X<n_^5����5��!* Wupq�R�>I{�w��k=�w"�ae���Eat��"YyԐ�#*# �D�.�df$��I h�B,c��i��<�k��o�0&//z�db:6�k@�\Z�"�2[����!FTKv��RέTu��|Ɔx�. Ȓ{yV5�i�!�[(݂�O1/.q�x����7�d�sz��k�������U��*�J���^og��n[m������(fYv j�|.i�U0��h,}�8��j�Fj��J3�����2d�ySp#x���'[�������|��x�-�E�r���^���ӼK��ص��ۥ��[W�[#�!gi��=�����oqwK��Xyo��{_[Zj�eJM��It�k�Ԯn!��y睶,� >�cB�� ���&�m���亽vH��<����*���� ӶC\ˉ�&A�\K��0��N*����ŦչU�Rѻ���|Gǿ�/1ʰ�Y��:�y������J;�<˛ݺ�S��ďj7����M��DWvЭ��"M��x���(U�H�9��|���f���>0�of�� ���&����3�{�2�$<a�+���u6���������G�'�?�=*<�S�ꯇ�RUjQ�9�r��������S��*�$�QI8;����Uj4�F�kA�Uiʜܧ��v��ۣo[��F�?��Sd#ү쎠���It�f֣�m�H`X%c-�fBD�u��I�[s� �/xL���m�j����2Z���.�a���ua"�Q�٦{�*{x"�t�.�UOͨex�F�ee8`ÐG�{��w�K��Q��Y�y?�ݽ��NY^TR�?sv��D���w�$o�@�lʬ(c01p�\mz��kFIb0u*�¥JQ��a�����S�i�Ǘ������k*P�18w)P�^���<\#Zt�5�����J�Qk����=i��j�����5O����ÛO������<-�Xx6e�Q������g�c��7�&�ew�^�8c��T��h߀��S�~�F�G�?hςz��/|7�cB��|a�h�����w��%�ܷ�0�,�[-#P���^��84�H4���Z����^��k����`i����-��3�2����V�[��>��;�mŗ��K�)t������@�<*�٬�-!-�,��i~�O��;sqis.��SH��K��R��ӵ+�Y�P���o��HX��B����{id�⑾�6̲ \)�eXl,��G��R���L?��<L*a�7����*ӧ:Xxr�pU*79=�~b|\��Y�|/���ɞA���va�p�pۧ�,%hb�l]lt3�UJ�g�� QoN�*s�-*�������*��~��5~u��ʜcwd�3Z뮝v���m�{]F+Ek�+[]�Q@��(����D�h��I�5��=�D�{�,�s��q��A���c�u��T]B-F�I� �60Gus+E���$Q���$>\>V��1<U�_ V5�gJ�]ԣ'o�]�ד���F�T�R�f�*ӳ_b�T*�M����5ug����u(�O��A&���ֳ�ͷM��>�oĶ�]]�E$�4�v4��2�nx�/�ws�s�����V�Gl�s22���|�Գ�@��@^B����<���1�`q�MǑ��^z�}q�=+,4��b�XyJ�|d�LD����z7�&�:AEu�SX��)¥XC 'e��'�ۭ��߈�-~�������rP�Ȝ������c�5�\s�c'����n��)JR��'v�ܟ}.�[��.�k���m��-ۓ��v�QI'�jJ(�n��pi�B8=Fs��:)4��_���wM�f�mh՚�L���4]�c,����2>^3����g�����H$��Kgq�1�8�t6r!��ˢ[/E��V�z^��4�ܚ�JM�V�G���b��ѻ�J㙳�1M��(��(��(��(��(��(��(��(��(��(��(����PK沐\E���Q3Q3html/images/cramps.gifnu�[���GIF89a���QQQDDD nnn```������222!!!��������ָ��,��C�0��X����A��ay���,���*���x��:�a���ábX�{9`G�UT�8��@^�qz!X&��[L��dCA�@� � ]��} �v�~ �~���b�����iv v�c���rD GCmD Gxi^c^o �be^� C��Î��b ��l��v���������v�����p�*�_�:�I�!�a2`�!��"�܌�'f��цI3�Jcɀ���E f��B�t�_+a]b1������h�>���0�g �7��)�E�89SFFT4���5�(0�5*]E�Z6��E��aD,8����l��"<�4kLj�-ZC� `�-\^��0�m<P���Vea<��XrQʼ�d�R�J�@;a���Z�Qӂ��)L,�P������lM�d�U`���d�Px���T�y�>`@ҝ��Z�ꔯ�(i�e +@��� 4s�{W�e�dJ)�H �D�ʁ>,݃`Y���W�`U�%3F: �F�`��@�4�O�- �{�tR�yMƎ>v,6�P0��J=r���E����D �2��X�D�\W�gl��x 4��8���h�@:X�@�:H�t�(�a�f8��"��s>�IR�=��(�JO;�Hhنe �LJsS�m�5Ѥ��x$�Řg^��A~B�<�3��.^2�bV������!�!����M@���f@8^���AO��&�$2�%<8��0���eؑ�`���9^-��h���Q���U�F^��IVpʼ��ڮ���t\�����N�EJa�嵀��:q�o2�1D :.��Kʚ:0�� �li*�*X�& �� ���fX^�y�_>��ԛWm4!��G4|ld����&p=�>�1d��8��j� @`1�O�\*��D���Hj���x����!�x��T��M ��(����dkd?+�e�)Z��ܜ�{$A�Y5�����m���������eo7�������,q6" Ĝ��L�������٧�v t���WO�,N��XCO����" `E7����h�1����97zÒ�����t�8��a�WH@��w "X��@��,*����,0���H�a��GB�=�)��ֺ���2����7��9����+ �3���c��N��5!���NT�:�t��C�8�� �i?9�ZU���D��Fr"" [@�w�9{�/� ���7,�`�0��ط�3m-$:H�Z�C���B�� �M�vR��p!�3"�MmJ��FH�NF��J�Q�p2h@EY��3��*�@"�X�%��1T�{#��C>6ѓF���!`<ok�T*��F�IE��O�&4�'���1Bp&d��(�����.u)�>d��؆��e4G#��`��D�@��)�uU�d&���Ƕ���P�@�n�3M�����h��L�LA#/X8�̊ rr���5{�<�!������M����d��!.��X� �6�oN�b�)�RXJ4����"��C������L� j��+�4`���R�ZR���� �c�g&? �\($J�9��XJ������KX�b'�zZ�[�x�<�c(�|uP�pV�B��B��3��sCh�)y���ME<SENt�6e4x:�,!>ځ���*�n3)"�FF�!K��!�^ ���2���a�P4��|�4�: ��� @�K^�b�|D��-�j!YF26�5�!?yX˾��I�+\x����aa�#0!��VB�)L!���p�MM�[�0bQ��Q5�]��J��P,��-�CۜH'T�gx�dQ^tc���@�)BbN���X�QbQ0�@wP�K+�}A� `XKo���$#;ӕYk�s�e�-s�Np��D#{|� )]����#�CB�Fj�c��a�N���������(!c֡�U:��%t�+�8���o��HR.5����l`Q���N�Z�4 RGM#AJ5�<(a���P�<U�d(�s3F�0_ ;M�?�[����f ��ϊ� �%��GHZ� 1�'mPJ��ÿq�"L���{Q�A�����le; ��Hx�P宀�,��<�����e�0�픀L��L.�,v��XiCS��N��� �Q�Ȱ1,`}�Y��XH��}��6����4��>��0x�B�5�s�8=���褻Ln��VIT".Ɛ�� ��pz�W���}�(l֦+q�u �Y�TѦ�U@T}���Z\�6#�[���Y�͎�Hr��\g �|��P��#bNz 3x�X{@a�߈y�Vx�U�Y�ng�LE J!B�>&�M.�S��L鍊��; 9�~� ��}��0����F����&���q�= `R�$�/��U��a�r}(f���R�db`�D���yc"�_¿3M�u��H�-5N�����@?�`)��;v84Q�Q�W1�4��� �� �'7C!@9�1.Y� q �SD��R��Z@6��Li�0�"T�0�1�I�$�8�r$2 hh@v8�Q��5!<��� mB>NRLQ��OG�3xGH=˃p��G rk�"?=� ��y�V�b'�PDl� �/@s���<��pm�?�r�QF���"@�Z� �x�.B65&��&�TPlPM8p$8��C�K�%d6�2jda+��/��Z<��}��r�A$��;�s�C;TD�V�C���q=��*$"z��7`ZS�T�:�$I|�Z�K��w��.Ts6qDk�qԘ GGyO��3�CA�#E�B=� @t�$ ��l0�rHES�K�8Gq5s� ��jX���i.��PH�7 �"PMINw�&�<I-�s)JrP��66A�P�-j�^X$/{rHa�5����@�d�t���*or�&�b�{������+�`�d*b �G�c�bv�PS˂��!�%�tF�SFYD��G��%)rcRnnPH/�!�5M�� �B"�٢"g"N�P��89�'7$����%Y� ��1�r-%I�0M�*�P����4�g'l 9��*"(?0YM��vE��"j���R��0ޱ�m5&^�&l ?��>]�E@v2.�CL�rDG�&=0)�&�U�����u�LgB[v�6ˣ"a!9 �p"�xwH�&���02�DLpD�a'p6�rڸp���,$r94uX�b)桬�oݓr�C��c�?�� v�"�r �B��6Q?�# F,�q0�8^L0�Xr��,���f� d&�p2��9�s?pS3�� 9Y q BqI�"}�����P|s{�f> ZxE�F$��"��r'�eG0o&�%L�?�r�^�1;����Hx �x`�!��(�4�B��5��rnO��f�~�H�/ǡ��L�Pj��ud!5*�W�=�Q:�0 b���K� ��d� �b@�J���i���v@�M:�MQ]�/�g-oq^�%e�E�p%!҇����0k}���p�0^�����N��WӒ��aM��B�In��W3(�z�|�d�:��[���e�u :P aP�a�P���Q@x1�{v8�0�&:�GmP-�ʮ�ኳp�H,��l��x6�����F�o�A_k�����\@� �p��T�@��fX�{h��;CQ,k���c5+0�p�Ul���R=���ef�u��Fb� �p�{l�k)[<k��aۣn���m�PEAH-����'���^��0LBf��4��9͠�vE� a5x�a#���3ǁ���8�6b�#r�b�ⷉ�@��iiV�e�j��\CX����+z�'��Q��m�g>�1`�0t(,Ff}���'f��=�� �z2��TN�҅��e�+�j0&�@��!l�\h�9r�����5K��_�,� ��:|q# �)g��[�1o���w@!�A���[G%d� 0�P�U�gӍ����.Z�J�P�a�����Qte�n�Ы�����8)1i#� ���C��s��l9<,� �(��^T,�s��Tj0�����pvq����[���Q_&��V�ekl{��FG��Q����Ss(�m�!V ��P8�C��}yf/aZ�Z� �,_���=ȋ3A��'���%3�&�Լ�@9�4�ihS�#� ��(�p���5[Q �0�E�4!G�t9�����!��f0v�.\�&[��J'��g�O��J�zQ��x�&^�����g�p���y��BW4��$?c�>���d8@����W��`}`��P"D��GK�d�e�A`���#�R�0�������{dg"�`X�Nh��-��8�����9��u9ڨ��iE����WSMe<P�C`!{ DK�a]��=�c>��GE`;!D?�g�� �qG���t�:���[W`�"N�[ Tj�Ho6�-�v(�i�m�c'z)�����@L�rE6���ʸ�-중 $����11>�79��S63��DL�S�3Q^�n���8{(m^�hL���σCqL� �!_8�1`�l�@ �3E4&���*ұ]��jO�# bSd�1�9aCkEP{�a�F/�g ��_ނך1����6n!�[S.'N�PD����r�r3�����%Y&)�6��5��3#*!I}��R�7����E��X��X��6�L�"���%*8�jR$�6�9��z6m@��)F��}��מX'S�@\��hflcYC�m��C'hj�P7sFH��<���b�N�]�6-�rS% ��Q:��"J��o.�>ӣ�f����S���T��q�@ �w��#C�n�#KvP^�C��=l�@qw<�&��@�G��C�l*�A�Б�e!BЉ"0L ��xC"{�$B�t"�Yqw���m�irr=�0�a$6���dSdX�\��9�t���W�=��5 ��,BCkGKA�C�P05#�� <#��n�D ����})�3�<���:zrU��Y3�i �>���N8��� :�S^���L������B��1-�Q@���&lr� cb[(e����&� ?���A�_�ߑ>�HK����2�as���=A��^`h8�T�*=1�rI~�*�BKxI�S��!*���l+-�G�艉-��7BqRWю�R[O1i ݃�/z�E�-9#�rH� 0^!?�4r��o���9��L�$}{O1�_B�q`���Q]W�8�C)s��v4�#S&0�cs<�_4!X ] |]P:�v>�Q:�=���6q "6(I*+k���{5����i���pQ�T�"�1+Xt���A��B�c�wFH&!�x��3bTO$� ���`�����9��q�A\@�f!~�x!�GdR�d6�O�0,8�A�0P���E����.���&<���p|(3�)#!���F�GH%����������I ������,��� ��D���"#��e�弤���5�����ӛ���� 13�I�[��!mP"!Z��f}DŽ�)� !�������nsBP��w���"���f�pPbҬ�!�8(����}1�4P�m�d��r���1����(��,M=h|y � �3� ��h�@�6# ����Y�͔!��㌋��D O��v���ٳ^� �4)`@(���'pg$����c5��`��h�x���|qe��v� �72X}�3��1� Fk���.�2�-a�b�z��1܉��C���Z(�/�p��ț�e3�t�UY}�l�?1�W�h��Ұ��Xja$�\�S!�E8KɇO�A`�R+�m2��p�p�B�;�dR�X ��`�i���)�/2%�jT@�c8� /��-�Adq@��l��(� �17cJj��cB�@h����!Vb�� �7@���,���~�qěz��al+��2:(��x���I�a� ( ���'�ljG/��p�!B��ި� (�e�Wn�ʲtX�F�j��Ҏ�f�A��@�B�<��-�`�AK�QËE[(����7Y���Xpi�44 ��8k�F!�#FS�VL`��2L���H�z��YH`�!G5\��ʍ�I����*R��!,�a�X ����#Pl(�U0)��xa3;�9/_�6˗��⪯�E[,� �����F j��X�t�Ai�EH��0�Zˠ�6�)�!�|#�����+�Q�F�iꪢ�(�^#�3�n��H#U��8u�5v�o���!�~���*�#��N)�?n:�fc�馔2n(��ι��O�֎�p�Od�/X@��8Υ��i��c?��40���/z�#5I�+��#��\��_���>���櫱����[@4��ҽG�ŵ�Kbo���wE5��ϱi�;j�g���h�T<ʕ�D��UC"��Fk���FԨ��NWN�V���p�����D�F��$�`�`e���L�!��8B5����H�)���@�]�?8�6"g ��ys�҉3�i��|��@�W�x�fL@�E1 M�BLx#���"��i`��8�12!�KM���;R�>\�Cb�0�mK�0���!�m<�D�p��T� ��4#���dZ�s����,������H�@� �3Ԃrut�w�d�-ȁ�����mcȓ��=(� }n�h�L1x-/ɑX�#.�:�Q�Tz��x8��g8�9�C�`�@�M T�:�� H�����w ��� �)X����l3�B@M#�����+\Q.��y�2�QX��9�R����3(ECSx$�x��mq��+gW7���mVP��j"+<\N09�+�I8>C{[��R�4�Hz _K�F6���T�MY�#S������a�4��)':�"�&���B ��7P*3p+~��>� D��8�rt���[����*�����琦܀G�����&/�/nW�ƛJX���%��Z�x�xH� :�q��u`��Z�(:Hvj� �;���J#l�y���炈F����A���L�A��1(!��7��%�T,�'/q�镳�PM ���AoNC����xFo���%I$����7P��Mp��8�p��U�#��^��ƜĽ. �(�ipG���h0�)x��z�E�)�b��{��qibG���-�lg��-8�R\8�d��z%�k�4�)n<�;l�l 8_P��ipOSȠR%��/�a �ɮ�(O8�Z7�<]p��?��~�Ӂ\����) �H�#��JI�hUp��f`� ��I�x�̒��S�tD����&��P�� �#���M�D����t;�R����봃]�Lj�2������V�#�.��1����=�� a1�y�T�q�+�-���۹�vg�̘� �YXq8�/��l:��_eO@�O\�M�(5R b#JŰ��a6�m�)m uC��,~� ����<�J�X���r]���V�!�y�gEw�TE�,�>���!qt�T���P��)-uݵ�qT�A�)�#b�\A��v�p�����V��h��I_�;�uθ[�Ѐ���)� W������#����b��4J���j�uC�6��R��r�T����'�a�9C${��sn��y3�t����mIP�81���G���ńs�(a��Yvm������=���۱Y3dTNJ�Na�=��ѣ�N����_GL�XP�$�3� .� z��G��\��E���F�WM[�i=яW ?7X.@����o���&���$�Y;:�*!�K�@��s��Q�Q��țl8����ʂ�k��J����r����@��,M ���K%Iؾ� �P����X&���3ȲV��ڛ�˽�[��j�8-�Q�Ԙ/3-�c���/b����f��L�z��A'C����)��� Yq7�2�;�ڛs4�h73%B"W��x�<ə-�n(�[��j4�J�m��Q��:+X�x��)ӳڲ9���1�s�uº ��9�x���åb'�#�H3�A0�iIx�!\�ND��� �����I�=�@�7Ćĥ*���:��%9����4��|��E3���/Lp�R=�)(�!F�*��E�u�/U�2 )/��%�C^�1�ن�+n@����5(���7����G���Q�� P��7�I+�p� �(�8��0�������:�I�l�4+�#&i,M��9J�B ���D�%�"S@��qh5�6��<���ۚ����X�;ȇ�X�\���H�2� P8 �sE;Z�M������^��m#h[ �+��h�ȩ �¨��t���0�y��"(�Q��b���ܠh�8;1Y���3&�3��ʚK5#)QP����%����kZ�m�Ǹ��z�)������r��x��eQ�<h0����7Y��۴�$��۴��x�r>uI� �qz����9�A���q�?�� $o!�c�� �b`"�=����������8��s��Y�岆:,��)�E�B�Th�(�0�� �)�)�B ������Y���a�{�Z�W�\�j���`��p�ѡH�Q�"��qS0D�*���ӳͷ�.V3jz��i���N�08�K8/�*H���Y�:(Y(�e�:j���#�,J�QJ����tL\Ӱ�A�J��$e�Wr��ȉ��=��[��YP!p�U�3b�(�р�:m0:�L��գH�*'��~�9s��[�̀ B�Ey�ي�>��V2Y �>@8x��y�����q�*�#����`m�1�[i���{K��^�<RP8J�%ϙ&�B�>4Pp��9ZP� ycx�dʼnX4�*�C,2�O�0 ��D`�@�S�29�Q̀C��������I���P��9�`���\P�Y������J�����x�$���$��0��Ks*��*L`J0�J������/�X�뢤!�aP%��!B�ӌRJp ڒ�z����H�x�܋��2� 26���u�ЭZj�s`��3ʣ����ZI��G �c"7É)����W4�ר/�P�p+��H�`��x�m�*�Z�vz/�A�l����ڇWe�h�p�%�{�#�V�0Q��r�PH����ݬ� I�01�9 ��p��Q�x]G ܸ�7�XJ*������m����EQPP،[i�- �T��#WS�ֲZH����r����#��2�F_<�G�8՜x�-I�6�-(8m�����*�T�����b8�_`�����XJ`T0Y�h�����(�XȄٖ>��:�������9��KH �T��h`X`� �3Cv��TX8�G�9i$�&��L��c�����3�P��6 ��T�.�� R<�{5 n�7T���=z�UC7�2 �(�-3� I�s�Ø��;v�h!�Z��C�TN��LY�`PvJ�����Ԃ��H68�T0�2������éNn��e�XeI�\Dx�CL�/�� @�d��q��b؋�PD0HJ���M�4j���`��#�Kx���v�? `;�G���:���QZ\X��x(J��s5$r�܈�ڛm9�H��I��ѿ�\����Y�WA�P�,���b��1��QX�t-��E�X �^�8����A���P�Ә�RT���-���U�~������e�u�R��ޫ�<��F����Y��K{���E�X����E���#p8� ����D0�B��Q!2)z�(��Ghi� IY;&�泍(<��k9�c!�I�p�|@�Ѐ���r���G�P?RNk4����4�t�X���cp�� )p�M>�TIWf�00�H8ruj�i����î�����C?x�IysJ�����p�_XM��#eP�ep��0�wQ�~2�!I��ؔ�6����kx ��� �-�B�w8,! ���$�u�(0 ������v��A?����ʨ��p�,�״pPEx% �,i ������f0 �3�9^�,�E1����0�����V�c��a�B1m�%j�jo�� E��'�s7�4�+,���z����g�hIie�s B�F�+=�j�s�� )Ȥ�+�����뙁��O�� �����#5�:`��|^5����ӪBv��=�ۮ p�d��R�R��4$b�J��#��?G�����PX�/) ��eIS�K�QKW+ሑZ�EP��uHx5�u��ŬF����vj�@pa�?�� (ohr�z,��io�.�(s�h����90B���8�b��|9����Y82���qE���xo��=��PjD O����qp�(P������x�G�W]j,s����&���h��;S�G1�+��.1XP�q'z�viԤ�p���.�]�N*�,t��#�`��!�T*��)����p�7 {����x�H!�K�^E��iy }�%AM�K��� ��X������(���p��m���,4� �T��虩ӆ^�o� VXN!i&�`�DH����?$`�#*�C[��n�Qkv�P(w�H��*���l��)��M�)1k�l���9�X�-��ـ��X�1��!P�:P����J�o�Xh��7I Yy����4��(T5��<P���� �j/�z��a� ��G�0 ��R�A! �HM�B��Ёx<�b@ ��Px�',�3F��$����]<���0�����@��TA�@�����CBC��AI�C��R��f��G������C��+BB�B������A�Y ���̪����݁�ˬW����5�0��N$��sC�߀��B��BAÂByW`2"T.�4`#Fu�1l�AJ�N���@���He��} �@�g`A!{5*�f�o�$�@\�:�D!���a$<@��Q�,HC���@ �6`��za|����J�~Y`)�KFm�G�quD��h��@$� [@A�!����[�����4���-6|^�F��;��(�����L�� ��u����������+�49�����(- O�,p0B�|�XД��jVW�`�,� Bpl��M̢�V�ɷd�J��hF| �@S�P#��=1'1���*�AT3��EEy@���`>��#��DMT!��Q4p .�L��d�t����.1��3Q:{e��x��pRF���ZOM`�#}��[`1�]���!��v�M��#(ȕNH`�`�mq D�K��pK3dd�y���[��0���k���#9q�4��pX!�)#p�� 2r� F �`<�t��`A z!�]�$��u 3U{��I(1a�N(�Ԁ� ���S���&��R��q�=((�$��[��g6SJ��F��E ���7��S���* k|*ij�\���h]��#��&CME��BK�lU�Pl��"E�Ђ.�(�|��h���4�-��d@��q���=ԁ�7��B� 1�T�&`��x!�Q >��H��[n�T�W�ׄ"h�O�{�&m=�PeWFU� #>�"Kc�V�t@����u��ʔSeʵ.1�f]�@�y�c�KA!P*�a�@*!���s�j>��E��dk^��f\�@Imxpq�����������fEh'0Q�C��B�D�=��3��@��^˲����@�r8��}QK�q�R�rG i�bτ/�3��0����rA�yj/��D�[����T��@�{�(J���R &��(|��U���n��'bB�'Ĵ�'��1@�!1 r�ȀN����%��Z����`��Ȍ(<H¢ ��&��E�r��dg3� ��R@�cH��:P��f+�+����:� �0��(t%���A�P����(gH�*"�25b M<ÂW��G��E$֓fc\.�-�<*����|q����� ppG����QC:�|$�� !�[D�@ w8�C=�cL�?�U<���D �ВB&T�l��܄a�=sZN<L0��'�ELh^L��͐ƙ����1`��0�N9�'@*� ��N�'8��^ӆ`ř���IL��!����&���@ (�#s�@�� rF�Β��-Â���&��E�d�D8��áD3(VTDa�3"��Jed#�ܜ��6�`�Y�= �F�����Q�1ͱ؊�)̊2Qի~H ��9�h���y� ��K�@�y������ [@��I ��PBT�qD�P�Đ���;PK沐\\B�� html/images/dave.gifnu�[���GIF89ak���h\wGit9G�5��s]�pLJ)責Ԑ�ӌeӄR�E0�?�E0�C�@?�:$�A�*�r=�_:�z�}}�Ÿ�ŭ,'`5;�e�^�V/�U/q/0�qR�bV�r<�y筓⦀ �$��˱�ɦ潰ܛ{�jQ�ǚ D 0�1�[#I(u%,k�E�@�G��p��p(#��%r�dV��)�Sv��o�W�a�w�e��7�ؔ#��lTK���aWlISekT�MYq�|MupRI�B(&>..����������?*y��h�dmIvp8O�R( .�. � �������ʣ����_1��mWX3I�8�B�2�J�� >����65�5=��z�xa`<xhHȰ!C<0HdЩ�SuѦm�t ����+ЭXA��=e���a�8sf�)b�B 6hP0B��"Xp����6D����&*�]�����QK�AY�f�s��(��~��a��M�=+$� t�( U��RyT��a�����!�Q"�kٲm��!e��)͢\[� �4!��f����x��ď�;,�l̇��2}� ႅ�$���@��|�� Bk�ڬ�^��3蕣���`���~�|�i�f�8 d�@�����Ɓ<��y$�� (�$X�B �Ѓj�� �5�]� G�<�4��!"~X�w$�Hy9���{6p�N�%��XЏlu�ǃ�E�9�0��9A?6�`�h6CF�i���4)��#~�I�y��%��B /�U��M@B0�@Ӌw�8FE�$�w�;��A�/\8â�z�(��z���=0B#@�)_v* ]�@f�_�Z&�+u�?�H������N� �@}�m�#�)T@�cN�(��f�l�z� �F �B`-�����v�"��"�j ���{�/�k@A<�y»,p��j� ;�J.1�$�B��@63��))L+� @�AK!ܐC��ƌ ?�����ȷ��mÕ@��E6F�6��&-�W48��B ��.�(��<57�C7�P�m/�P� r�'�`@ ��4����_���$�@ �@�3.m�3pc�Ȍ���w��C�5��߀��C90@�Pt4�@!D^��%p�X'�. ZPD� ��9�m�����s�ζŰ�{������:� ��x�]��]��ӎ�1-� ��@z�H�.�𥛞z2�`���n� ������t��C~��G�;�-4߽�Η/{��_}������.��8�pπ���>�5�|�k�.�<�p7����@���;3��#@�w��P�G@/,D�0�;�����0�I�� v�q��;q}0B$� '�"|0B��V��0���-�i��; ~��5ً�0r�\�:��7�� D$b���� �JH�$��أ�S��z�fh3�Ǭ�.`�P��MQ�8�qCf��-�a���E-��E;���b52k�/j���'>��B���R!��b�H\��c;�(Ǵ�$%AIZ�r��X:�F#9��䛷ʀD����)b{�T��,�1�V@HnHꞙ�FX�2�P�,��5�q���E�Ȣ��@��K`tEQ����a@����u��d����3fI� L�3��D���f�`y�Ȇ\�˺��x��]`���6hZ�׀��!ph xщ�� ���uLj2�C�A�JY���v�=���]Z���ԇ>���#m ^���*� DůH��3��%���� ��RJ�F4��4��@���7��?���NdT���h>C��S���H�:>���:��f�%t*T4�d�DY�\(�ˋ�����U��u/ XF80�`�ի�.�HP����,f-�Q�y��.uN��S@ʶ>�-�� U��L������� ������:*Yk����{��]���a�}�q�]/�7,�\"��ȅ����@e��$PB��*1��؈3�M P�u/�0���*@��4Qq���*W�����4��4ef�� "���7;~[GBQ�AAko����oF;�P� jR+Y��9�]��P�|��L!�%���:���U�u�Ps�Ҝf�� ���@��9Nκ��̛�ݭ}{���v�Ɂ.�:@��b}7� �z�N�B�:c�{�+\�$h;�=OzЎ��|]:���n��<0?���}�3��B�<������G?v�/��s`��w��� :�ߺ�����w���i�P��OH��?���@�$d�BI��P� 1��'�� _X! UXD�����8���p��8�#�� �F0�_�8�!.����pW�r;�| j���X��+O5>U��`g%h\E(� c��"Hz(р�ra�3'GnD.Ґ�e�F2A�{���"]c(>�����C�����oHm��*��s-�� ����m��V�xO�!�W��O�u�q �PD����hλ��K|#���M������ь4�l��7}�Sy�"�jq�P��C�D� ���� K�l7V�B "��HdфIj�mhd���h��s���Ŀ"ЁyH�̰�n�Vw1N>�KL �=Q��0 �w����q�4 dAz&!�z�{2QP�'R>�MyrK=���eLH�E� q~�T!��`|�D�O��k��sGg��w��)h+�!N���e��\�N ������]�q�J��O+E���c�P{�G�N���! �NAA��ER��X�XY���f�Okg�pw�aS��BE|�+5Qb#L1Q��W��2� 7�T_�Xݰ�0}� �M*�Jq�i��1�2q.6�b+c��YM%�A�#1�1��6��c� ��F��&e�(V`,��ҤY�e'�P��8}�&�gP�0T(��n�?p�4��H5R��X;����V�a�@�e'a>�&CE+�.����6Q�� 0TŁ$�qd��Q%p��?P,��%��]E�������" 5n"#2Z�eq5u�M��D?��++� �Y�H#�%.�X��U`E")rY�3� �_�A�1҄���X(�x>r#ye#B@>e P;��~WR^Z�X����#`&^IV"�_�-i�S<�<A<X�P�����#��'~�Z�"2/P ��!����[ "Y "�5\%B"��4������Q�6�/0`$�qW'�+)�V�P�q(���,�B)�u%��X��%��[�Y&d2\Iq�!�"�$?YW?�E����y���H �05PE��I(*��� ���,�钏u)1�^�2*�*�%*��uVn�'�!�2+�N��4��%$��.FR,�^�5^ ��-`-�B�U*�e_�b��E�bZtA+�Q�e`�rW��`�P �E)fa�墕-"0-�)�_�_�ң�_�2e�2��Q��Iy%�<0Nc2,p,��Fa���R���a6Z�_z-�b�cZ� �.�bRvTc+��'���3$�'�T�y��.a�p �0Ӣ)5�d����Mk�'�.����1��5�� �VE���4=03m�im�y�Ī�a'`-҂��d�cn�z.��.�5�S�A<��%�!$�.M�H� -���7͊3��h�2U�Y�M�dڧbR3'fe��'�1�%'��[�)f�r�1!�0�ĖH%V7nf]>1`��� K�j{v9%C����/%�*`hT��3�R�?� ��%�<z���Ȭ��f?�7z�8��;� ���d��l �(�@�8�S2��5�2�%�h� �y&�g6A�C}�6"�8B>� B��7��d��4��i�&n�#�9%� ��9>v4tiw�;g�F�ڬ�v8�6m�v7��7xS:�fo�B�BhVi�;�#A�"���Z7�j��k�c;��d�&m��;�Vmd1d��l�[<�<�6p�Fo� �>�o7���A�m�[�F@�;���FplK�v@�o�>�˽ꋾ�67��o�?�þ�Kn��4����ּ��A�f��VA���n��@�fo����� 0@�+?ܿ��@�@�l�=-0;�fm��k�&?�jq�:��&�v��p �T`C*�p0� \ vJ�qQ�c�q�� /,3tDT�1g@sH� C�v5���sJtD6�t"�v^�,' >�C�@�BW�� D%�q���D���QG�EGt4�&�CF'�mwsg'�sR�t[ C}@ta�C��ȸ� i�v�,r��1�Ej`vm0C?�1G�Vlx=�L�%��.�Bu`v��{��,�isX�(�3]�%��x���^T�A�ɞ�p#W��q�@�W��l3 � ?P˻<ć�Es,v<Dvm�������:�c~3��T��zd@}��r���w̩�r8@wF!�цӆ" K � b4|�� ܌EW�|0��opr��z�6�ny�3��+Y �М��Bp� '���D ��D���8C�l�M!�{���nxy�s��'(��ytz���pG���v�?4U��Dg&�H���u����C����~I�x�w��/�Jd�4�G{�(3���-O�T��j� ���y�~��O���@+p�ַ1QX���F5h���*�I��I*@V�M|�G��P�����G�'��uHr-KQ��5�a2�K1H|�8!�~�aO�4�pz�td1/= ��JƏ�w}r�'�h�`I����K�]��/�wmsL�w �-G�a������O������M�>�VO��������h�8�pD�rG�zzD���ժ���c���&�#M�K��3X3��1�-R�����_��J�x���R�Gi����d+s�K��2�e�T���U�ub$F;�O��h���܉"�V]�y�hN�/HqD�#�A���a��� ����ؑ�10)q-�O�T20�P}�$Rwr已��$�\�x�W�4$z�U�������p)����qM4��ҡ-B�X�<�O1�Ҥ(*��N�a2���&e�P�Q�B�R+p��U�'���P�|!�DA�Z����2%��Ȥ%�� u�ڨڕNM�A����'�Y=y(�ZbND��/��'�.$��Qg�/~��ؑ��0���1Pm9�YX��pWb#Q���/(���w�~Z��0M%A��ȍl�6C���շx'��Q��8�Dɩ��a�H�(5室X!Ϛq�}��R�����TX�ǭ0����&� ��m9�s5&s9��Y�$���%_�(B���~5�4m�-���"C��jLP�sA���A��w���0w�M2q��Uy��)��0��u�m~PحbO�@�{Vˎ2a(����F�Fv��� $����X)�a0u����H��61T+P6�a%�`�0T�3�qu/i��"�w{�������$a�O�N�%1��PvbX��2�j*'r�Q'����}�?P$�����@0)]>D�B��� uF=1��b�+�כ�fY���V�|=4��`���u�T*< %#Cbf�F�GcaA���/2�E��b�!����I�C�4����k�,u��Cn��G.w.�f'��b#������wccq����g�DؚB�`��[�4Tj<�Ɂ�Fkukk���Ƃ�W�@__ mg��=76�(���Y#4�N(p��Ϡn��0��Ì)�ę�B��v�ص�j�t���k_�@�(0�S�P.�exఀ�0:n~`2a��?n��!��';�B7��Ȓ&U�p@��69i̷�gB ��a��' �e���f��TqJTF'38z|�U�:#�1��xc�;��'5 �!x��=�&Ь��H��Q����T̍��[kՊu�*B��a��>���A�_�6,�+ Rn5�Q������e�#O�0�"D�X�87�-��� &�}kpA.��;`0`�6�c8P ($�p,8D�� vG6�#��FI/?�X�o�D���b�F���, F���c�p��|T��.~"�D��a��<(��(fS�VTq�ȴ�8��Q�z,� �"��8p�(Ha�*�Q@p��*0��"Ȉ�'���P���F�Q�Ldq��b��^��E���TAF� ��jb��&PJ�hD)-� `O�[�J��M��I'F�:��/��4��`p���.���"�� H�(�#\�4z���"]� ��\���ʑv�����̥4^x�YN�U&Ijr�`��S�0 �VZi}���=w��u�Vؕ4��-ք����}��4 "i�`��F�~`"V��V\s5�Xb"Xw�\�c�آ���Ҿ�Pz��EP;�*�:�48!U�g1�Y�u8ʈ%��b�s]Wc�5��Vp����pI<��-�Y<y ��Nh��,���<����rn�P*'[b&�����\c������ ���a_Ե%!��G8�a��;��y!�p��Z��u�r�!�:���#Ha��3G��!�� �}wp�; �÷#�J`��Rh�-���}m8�ށ���y�r��S��'1��l]A�$$����}����%|�#��W��@�C%J �U���y`��A��0 ���Wñ�+Ar�@%�n�At�z�:�tH���q��`U&�O�BL��;]C�0z�^�Ѐ���A�q|�)�-ivCC_��\�[)@߶���` Y�a'����yc<�����:�t�F�� �y��I&�_�J�)G9��J��!Y��R�C<$)�H�� �3��F"�N�L�ԾN���w�\�v�(gb��S�C?���.����?���л.}I�` ���ψO_v��d�/L!�u����^������w�X�~�T�O��Q�8�[P��(� �� �c�?� �L����y��F����0A\����LY��m�o��S�(��;��6�h: �v64�lg ���SfD_�f��P���'Zp<��T+�M�Ҧ�;���0�7� &Y�v2��T�bՀ��\_~�JlT�H(� l���aӲi̩Oي?�Ц���/WZs�t�$��2`��}-lpU`�*`�߮7��2x���l A���E�Ze�����6%.6���J�x��v�zN�`��e:֘��@�PƤ�o�ƳiRC{������i���<W�:�f�����wC@,���#oy�K��6��!�(�`�NW�F�q���:9.e�g<ⶸ��p$�I���-&.�%�Nr���厏�`w7��&[{�;#�u�Fv��o�<K��.�E�W.�V� /_�l�����k��zV�6�g�o�\\�)#� �p���f/x�R�Ļ��B�f��?�d�.��.H��ѼhD�9���U��i#�X�i�CЁ1G�҈���w�W��X�ʍ3�9|�*���M4�9�k ���3.f d�:Њ&s���f�f����Yk`[���Vv��k0G0�B�3��Lnr��$�`f�]h^n�����j�s�:�u>we#�wZ��&��a\e~�X��ޝ���x��段��Lq���g8�� lk�w�j����*1k�ᅦ��#.o�S��R�k% �rc;���8��{_��5�6��k��3K��>z��ۂp]�-o`���6/��Ӹ�O�����w�Q ���ݼ��� �|3��l�߈�cr�����ͻʻ�ݨ���8�xF3:����g��j�N<�W{��y��jPW;PK粐\��iw��html/images/info.gifnu�[���GIF89a �bbb```����!�, T���������oM�� x�@�& �g���)�k�&ݪL�/g,�)j���(� gå�(2��sWE,^&�Lx���:����(;PK粐\���5�5html/images/jello.jpgnu�[������JFIF��FCREATOR: XV Version 3.09 Rev: 8/13/94 Quality = 75, Smoothing = 0 ��C $.' ",#(7),01444'9=82<.342��C 2!!22222222222222222222222222222222222222222222222222���"�� ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������ ���w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?��p ������y��>q��B?�O��֚FF�ۜt��z�{P#�q������@+�RfV3~��ϯ�ϵ̶0�'����δ���Q�A/e�����[.0���{~yϮH���_����d�>g�;O?���/���<�??�4�D2���x�~�lv�ޑcʅP������ןz9�X���㯯������|������V�F�l(鷎��n��d��c��Ӄ��^�����Fh�-�>I��>��'�8�A�y�?�+P#p���t�;��P)epxq�= �{oZ9��f���o����#����㯯�����!�@�G@1�?���h(� �6��v�ӂ{�9�X�?�>�/��>�2��䞀��?:������E�l��c�O^;g'��~�=@����_�8ϙ�2���<�K�>q����<���!i�=zzN��� :�@�O�=�G3�߱�p�N:���}�>��ϯ�ϵil��x���װ&�+.�v�NA ^q�}�h�b��,�c�z?Ϩ��>��|�1�v������'���;��P)l< �����=:p;����o���<�??���p�N:���}�� t���~{f����Q�on�8'�ɣ���o��Y�����Y��$��Q�֗���oNz(={`?�4��$���O��Nz�G3�����V2���|�1�v���_����y�~\i���6�z��� :�@�O�=�G3�߱�p�N:���}�>��ϯ�ϵil��x�;v�=�MV>]�89��x�<���f�2��䞀��?:O�q�3�d���y�61�$��r��s� Ai�=zzN��s0���>q����<����g?ӎ���#�ƴ�G�� t��ߞ٠�gvt+�n0�>��4s1ذ�oU�S��9?����T��U�29�^00:�ڧ 0+���L������\6�����S��==���n�GP�q�����U �'?���J�i*2�@�[$�Tm$m'���P?,z�t��)R/�`��x>�w�4�9ۻ ��H�Ӡ<w�X�ر��r���z�M��@�?�?��B-�Վz�=;�q���2)6�@s���u?L>��x�c%��I�"͞}�{~Y�(���g����=qIXdXl�WnH�A�<y��1�H@�aО�ӌ�}*}���~P�`���v�JT�a������b�",/�7n�8���,Rm^0�rw_N�s�1��pq����@$�@N��?_���\g�`g;���sօ@q�'�������O��Ib\�����4�r6����s����8�� 0�8q���t��:��p@�㞽?<�*r��NY���>�Ӱ'���^N9遏����XS�� e��s�x��qI���'h�O����:f�ٌn 9�ROC�;g4��i5y���v=�9'���֟��E-��3�����Z@������0>����`j���!�h�6�ބ����8�=j<�9�d�ݻ�ZJ� Vj�b��8��#K�� $��3�g����x�)R'=�=OǠ���H�냃Ӓ9�|��>�ڟ��~�@+��H�?�O��)��kg�����L�ӧ�8_�쁴6H�9�=>��T�S�2Y��3ӯ_�|����:��O^�8��(���v쁃�������M���B����>�z��=�†��z`7^��I��A�x���9�};��O^b�8?{8�����9B0|���u�)��n<��過�G��4�Pe���'�=9?�cH�8a�p�8���=jr�H�pr���|��g?Ҕ�`ē�c��ϧ����Kp ة�3������G��b���9�\T���^N9遏����l�7�r�'����`K��=8���q�ip>�;A�G˅p;~��\2��`�8�zs��iq�1�8�x�=? �v������q��S����ʑ��0<�n�c8���e��s���$}�o��OW�Cw=H����@�]�t��<��c�{�.и`�8�s�@��>�J���0y=��?�.�j����<����F���~%�6|�{(ʀ��'ӎ��qJT�\c��2����x�R�pW�� 3�y�&��pUb�$�^3�}=֞�FP���c���p�.��IK$V��̈��Ө�u�^���iɖ@7'���Ӟ����QB�H�� �3�x���^ x��GJJ�_9�t����_��r6~�/��D��N�$u=�y�����j�k5Ψ�&>d�"���$�2v�c��[M�ΐ`�ğOO��ks���9c�c�z���Y�!Ú�z/��e�&���s�oX�<ݎzp9��'��i<;�(_�v$`ngu�;���U��q�8��s����Hq��-��{���nc1G7��S�be���f��5:�)*U9nއ��kcL�$�[�,|��{���֊�YP��1����ZS���Ď��u��Ԗ������e'�� ���p��F�mވ������F=O=��>� ݏ�~�S��~H-��-�g���۟���Yʥ�l�U����x�1a�d[�s��9��?N9� �n# ���瞞�����Zj\�I�ïA�>����k���aܠC�RFX�y����k��aʛ�08�S�[����[� K+�Nr��Ol��?Z��3H�y��͎ 8(�s���l#�M�1�H�v��۷O�(o�b��ٛ�s�<�>��<}g�;kcj�u=NRӡ����aX�\��N:x��#$��rFy��d��ӎ;uw����k���#��8?���x�`����۽z}YT�Ԟ��� ��6��L� �G{h''����ێNO�9#�8���2��x�aTc�?N�.�ch<��[���=��" ��w0wry�z���A9c���Ǧp}����J� ��.I�S�� ��rCB��u�O�8�Ѹz(%��`��#�z���]�mUl}��d�~��LT�n��v~Q��|��Ҝ�;C`��F8�?��������C;���Ic�ۓ��R�U��8S��=���מ���EJKuf�ORN3�v�?�J�,�K`�\v4_�� Q���I��i �`�l���1���� ۿ�s��=;�~����#�<��I��(ǧ^���F)\"�3����=( �qܞ��ש �~8��6�[w#55�K-��!�Cp:�L}E3Ջ?�-z`J��TU�~Fu]�ɮ��>��~8�9��9�~��66�st��U������PĀ��8��{�o�tZ]��&�o����=+�!gc��R矑yU`�l@ ������Sy��}?_�>���],p�J@�a�q�~��u�l��[�1����N�t��#lT�\�a�=����iU�\�'����g�@8�O����Mf��q���$s��ӿ5�Ƒ�ۼ*�l#;���Z�,L��L���ϻ�c!я'?(����2B���~��}5�,��x�c����=�k�O��= 68>��ӯO��J��3�:��?皛� ��JF������9�ᰖT��`���n�+T̑�����_ް����`��ݜ�8�q]T���G(R�����s4�`��s��x�?�+L��:�Xd�=?>�s�X��eA���_��itֈB��_����vwR~�<�>*��{H!�+�9���܁�6���~�ӽv����NC���G���z� g$�;�S��Js���0. �'�s�}s��T�8'vq���_Z~=y�(۞:�z�\�H���;OG�8���~�=?ϵ<��1�@����sǯ�?�&�8 < ����b@8�>�m��‹ ��?�06�q���O�?����(��p:PxS��إێ���}���(U$G=O?�{zzҌ8�$���.��!�q�T�:�Oc�ѳ8�O8$��zӶ�A����py��~}�H�Nr@�;������V<q�rq�q�R��e������S���G�z�^�c9=s� �|��:v�G�1��>? tl�Ȏ�Y��#�?K����@=q�:��J6����O�����zVMj &��SӴ��e ��Ў�s�8�+^{��3��o�u#�x�?˽T:�k�`�����3������柍���������mAr�>]�4cʷ"��k��I�q�8����U��::ӿ���8��zc#�<��rE!��'��d�����˩�&����3�}?��!\L�r#��_��d����}��|�&��9'����)5�-h����H�'>���R�L�B�Ozv��`c����ϥY����~L�+�2�����"`�##?�l�/����py<��������{���zu��C��`s�$q�^x��J�N�CYᬮ��!bN7z����*[�7�$L�UW$���U�`��v���w����`�#��|��<�Z0��gV�+NG'u`��yJ2ʙ����c��PO�X@�FOnÏƵ�����u���F}=g�Bd�ܑ�0~�s���ӎ��=YEY���A6�T�s������v�8���z�?Ȯ�Q�pH��)�NO>�ΰ@!@���nO>���N:W��/���_�E�I�� �~�����s�1�A��_֟���А>���F?�A�{g�ǎO�;��{q��V=<#$�d�����s�~_Τ��FrA�#���v�l�ʓhf�����������3�@���=)vC�>���S���S�c�y$��,��;���2�e{�R?J^1�9$v�Rr>Pc������F@�IQ���_�ۨ�`�*�8,�ry�=�{w����n�� ������R�|���N��=�垜��C�rps�����ژ��s���<�~��PA'q��c'���s�x�9���rF���:]�;�I<d��>����$����=NG���~$z L```c�q��z��w��=�=8�㞜�pn�~�\zzg4Q��`��c�~�;�<R���WۀFI?AۯL�{rz{����K�s�=���/���#����t�p�. �N?ǮzzՌ�<��c����z� @�Z*��� :�o��k@�z��_�U|^&<��7����-idzb���=�oT��y��>���?0�z����]*�v�P@#��S�����D�0r3� �rFI'�?���\���?��W�<��O��*����y�$������8��s�[� J�<���������q�A��:��߃Ԟ��?>)x��w���_��\� ���d�q����I�q�<����,�%��3����X�p������j�\��Q\� H� ��q�Z�!����a�_�z�d�r���d�>�?��Z�F�r���J&$J`78��1��9�"��wd7Np�G���b٫%��<��<��=y>��s�ޡ���01�2q�1��d�98��u'�ְ "�ہ�y<gұvn0zzsێ��'�+_[ N�*�pI��3�>����3�'r;����{���^g���-%�0<�2z���o��G���y�c�|�����!�>��ˌ�\n��8���3�9gH���$p9��oS���r�+�2���ӯ��R���x�'8�=}�FܞFrs����Ҁ��s����h��8�ӱ�>���.�# g���OR?�� Pp;��^>����7�GAԆ<t�G������N3���<�9 �Ԝ`�?^��Sm��8�}>���f�t�>D��I�?��F�ON}z������v� 1�9<�x�‣�n���p?.Z������8�o����pbO'�O�ޞ�I�7=���ן��\�/8`}A����}��;�`��AۧO��I�pF�O$��?�<�=ߎ��z���T�%�?��8��3�3@��^}�c�s�����?��^U����2@8?�n�ϝ�/T�o�� ��b2�B���.O���f���i^+�oe�~G����1�t�q[��_ �sm:�n�r8��O��[�c$�B�� p>��ph�}"��=>�-ʨ�<�R��<���c��&F���'�#�^� ٖ"�v�s���=uH(8�4o��Ҥ-���|~~��sG���bs�������3���u~_��q�s�}����J'm�>8Jkc�ɱ�;dg��ߍd�b��2����c�WOyq�Npy'��t�k����,`s��<c�ɮ\^&����h��~,�<�I�V�0�g�-��)�O�� I�$���x?���*ɴ����[�+I�������^e:��M'-=�}L>-�7���ٳ��*�.������V����p�{�#��UӜ66���wg�:�}��C�\/���rF{���s^�TK�ޛ�V���P��I�[)�s����e]�e,O\t�����V���y�����ɮz�[�Lu��8����﹟0-y!-��� �8�#���T�T��,��M�������e���A�D�d��#5F��f9 �=A�~�����Ro��M.E�sZ�C��ޤf0&T��Nq�V���r��� `ĀR �p9�?���E����Į�k��F9������dw�A���o˿�5ل��j�m~G�}J���$�hP]e�b�FY��z~?���!%Z�f���}��ݤ�W�yla�מ{�����8�=3ۯ?�>�GN�<T����ٛ'V�l|����h9�=}��P���W.Nx�2��drW������JA�h�W���ۧLs�Z��mj۞6�W=Jpq��=:R�_Et�.��n���v������c#����ٹ�n}F,�I�OO���ӿZ�Gt6� rTw'��O��/���O����?�����=x��ǭ��=���[�>���:��9��}�ېx$t�9�Oӧ^��i�IU c�`:���ނ���9#�<��õ �C6�����>�R�8$��0q�3�;i8��ϧ���縠tv��?��4Xc1��.���>��(ā���ޜ��� S��ר���=���!�i�Ա����'OMԨ�Ճ�T��Ti��K�:m+���$��Ξn&��I�\�Zpx+E���y�1�%�����qs�x��\A�̀�"�� D�&�X��ۡ����zW�8���ՕY�-��&+xZ*�<E���9ߝI���Ġ��pq� <t�����nb0a������mլ���d�9U�팯$�O<�Og%�1�#��{���=9J�m�n����X�)7+[VOn�U9�P1��q��S\OJ�P3�� �=T���$�8������7��Įq������ֽ�5�Z=R�J�,�:��8}��~���g��c;3H���-�����-���'�JN�c�lt�yu��I����w��;�?��R��_8�9�~��T`����Hv� ���o��S�n[ܮA�zt��?��~��JDM�vU\`�~�8��Yep2y�q���S��=OOZ�����ۺ�n�\0�pq��۵dK~�?*�|�Ϸ���#3eH��>�]����u���?�b*Fj�I)t)jz�u���8l��ǿ��V|����% I�1Ԝ���Ң�H�Zd� 2H��l��""�Hn�n�W�>��F1t�����W�S�ud��� ��&���:z�fG��I�4ܘ�� �1��կ�G�6��B��~lc�_���c�X����*X��ppFG���]*�)���S�c:tiڌ��e�Q�8�;�r}9?�6[+�d<f<�����zV���'��EY[sr>��AL>!�M��0�=}N9���N�����3����K�*��9�#�H'1�`s���2�I-��b~����ȧ��I;�jbL�T���'�֮Z�\��P��;���;���_IF������+ЩF\��R8$��ƻ���o<�<u�9��#v�������ԩ$��N�qߵZ��8#��Q�����'�?��ds�A�������Ӷ��c'�������ez�c�s۹�?�<)� c'�9�|�N�B�98��Z�!�AQ� �������Jpv��>���9p�{����ɣ�~����OpCpA�<���?\�`cw��?��.��5�G��_�ML�������%+��F����V��,R��~����?��Q��"�Z�7tz���F��������u�k�3�<ʾ��#����а/�i'9�O}6�ߡ�3j������P@*ҀG�v��r�K�T���f1�� 1�d���^f��f�(�ws�*�I'�ֽsI�WJ�F�;w1�s��A��F��W��t�������}�������-^inl�# J�,��q�a��8�{�?_��i:��u4.��L����[��w�?��$�*+i+[���Ԯ|�x�|:��};9'v2�������Rkr�ɶ&}�����{�t֯�R�Q�?1��=1�MwU�J�K�c��f-s�Qw�v��m=N�<��pO��?�xs�=�������-�6G(�x���Mӥ�t�.�)� (�~b?Ҹ�A�W���1|1�a5Jz^�M?���S�9�y'�|���m�z�~��ˣ^&px;_����Vl����x�D���8=z��z�3S�]�2XZ��姓<��O�I�@FrF������t݆el�özz�<����u<����$�i�P�,՟��B�A�x�y�(S�P~����<у�� �9�<s��1�r��� g�>��S�$�Ca,�F껗o=��ןZȱ�粸�����z��������+Hl�� �H��3��ʰF�c��s�p�V��ӭz����*W^����`�����͢���(YZ)�EnT�#�q�:U�HIc=[2\T��kwЦ���M�Ifv���C�y7�{��>{@�=|��ֵs�S_�i>͟IC/�$���o����[��j�(Z�����q�q���Y|4��G$��G�@pG`�ZU�f���EP:,�?�vz<�����c��&�*�����qx�%���Ո�ӥM{������8�i� �V?{s <���?�I}�m�[{��t�Ѳ`���'8��W��c�/3���R�i{T�n�|�k������*���������T�:��m����>���?�?�~���H�FO��ڴ��WE��=�]3������:���<�q��? �#/��K�$������#�˱)%Z6Og�n��{�cۦ?����?��ӈ�ϯ���&9��]���?���t�N <��}?�ʝ���3��1��c� X������2I���5�X�V��q��o�ܜ�~��?��YZ�m������"�ax �{���$��3d���ʾ'�18����V�FZ��M�7��9r��җMV��F 蛁��=�j�Ҵп� ��B��To�w �i ym����|Uo�K�:������壕f�U���w_���2O����]Z�>M��6�L7����F@�ߞ�t��XkZ�>�tI����j����{�����P@��n���iȇ>|���f��{�ץMFT�ϡ��]*J2�����4kZ��N�vO��u�Z]櫩jv��S�"G�pC���������x��-Q�j?k�.[�(��Ҥ���}�Mk<���:Z�M��b��W Rp�o����z���=�ֹO�K�8�^��8�G�%�?У �i��Z�Ռ�}��3便��o�����8�Z��O�$�1��T�d�+�o�$١��ޕ������ӆW�F|�\���ֽ��� 5�S���g���=YN��v�b��*vӃ���Ain��ѫ������d���2G �_������}��/������&���%��q���y��/�]���7Ǝ��A��M�m&��-`�;!Ff�F22z����S��D�\�����>��5�c8cV����S�s� ��)�v�v:�4�In���ۓ�UK�k/�caq���x�r}~����=RVL�}�Pz����8�_�3���;�����J� �JϞ+���g[/���'�_��3�^I�}�.�T[("���9��ip� �u��O�Hf�#y$9,c1=�{��Sv��P���/��f����f��>�ę^ h��$���FheI#��YNӟPk�t a5�9g�k:�M�v�\��� ���1d�c�S�ӯ��!�[E+�<�F+�����\خ����$��w�F�a1PJ4�u������x�Ru铓���?o�y?L���q��I��̌���0<�y�s\����3�ԇ�O����vp�0|�Qϻ����$�bS��rk������u�Xß��P����N;�'L��+���jPP�Q5���OgŮ�.IS����fO��1�ґ��¥�+�_ o3!�a����W�G�1��3����s�zt�{�zT�>zul����x��N�l:q�����1���Go~ߧ�?�?�鎣4�?{О�_ϧ�^�Z� �waQq��g��M`c��:p�����t�݀���?灟���C0y��jR �B�[�?�^���܀=:g�9��ip�A��g�;�i���pNO�s�GRx'��?�����NXG���SFG^��1^�7�(#��?�Oӹ�ہ��9���?;���q�y�����@�}����:��{�v9秷��I�?�ҝ��?������H��=��}=;�f��hc�7c�����@���pO�;�~S��?��>�y9�8#��_צqH�zg�=����F +�<��~��\u�'�����)NI=3��Os�?.>��`c���h �NNH�l�Nx����x�����GV�V?7�On��?�3g���L<O��2�@'�s��t��'q�:}9�G!I�l���O�$(�`q�?Όr/A�q��>��֟���NѴ���� � �:v�z��Tz�ݧ�9�真_��I`>a�t��m��}��积>�0�q��g�<���@P\���i�s����{�t�`d�?A�����%�Ğ@9�)1��q�<z�����0y��8�������@����3H��s�O8=?���3�>��N?N3�?��3ӿ����8�������})�x98��>��n悹䑞9<秿N���-�Nz���PA�x)�q��~�7�3�Y���?JO�3�;�S�c���O s��=s�����6H휟���F�;nA�݇���r�\}�N��ǧ�N�x��c���y<��$s�9#�֣�����Фg�v���ӡ� �9���d�:ӊ�a��،�z����&��'���GS�>��r@��d��?^�Rm�l����zӈ+��8��c��چ=y�~����c�t��$�'/�ǥ#��Aێ��~'�w�˒ç<�q���/�ڠr2x���}�Q� `��y���z�=�|}pz�����<1�9�?��� �����s���%�'�3�q��q�}O���߸�=x��Ɯ�8x�������� � ��Ͽ^0��g���k���z��/�~��=��9�cg�t�}O�<u'�r3��ǧ�܀7<)�8�\PGb9��q���<��A#��`���< �r,�� �G�<u�{�B����Žq��=�S��S�t��(�Q���`/|�뜞(0I9�<��OO��s�|���s�c�)H�'3�{����ѐ �/|��NH��~%�h���?����ލ�8��g?�>���� �M���ǹ�\揔��$rFx���;t���O'n��JR�$`x�z�?��^���(�z����J�4��x��~����Iݎz����)��n�n{��}���9����~�^x�>��a�T��������i )�x���=E;��`���˯�Ґ�3��23������ �c���'Ӧi1�1���u��9� �g vǧ�G~@��y��H� �9�{�,�@����8w�OLt�rT�d�{�Z8�9�8�Ӷ:t�:f���PK粐\�L���8�8html/images/jim.gifnu�[���GIF89a���������������HHHFFF666444|||yyy������������������QQQNNN &&&$$$---***������bbb___������333iiifffDDDYYYUUU""" @@@<<<���rrrnnnvvv���KKK������(((]]]000999���������,��E�@�G,�X�g�<)H%��q:��lv�eqN�.�K�z+%��í�?���LljU��N�/�R}R\X^�a+?a?8��H����'<8&m8'�&��8<�c??H�+&(">>//"5$()��Z,o���?����<���?&�n��?��Zo�<��'�&'�I<9$55�!.--d����-Z v(ܱ`�B> H��_��"Bh�� H�#v��E�P���Y"G����[$v�L�iS*� 0�mj��ՈF-@ F�%DB�Z�_�e9��c�*T`ȀA��x ��f���@�"h�"A�6�@�t��0JZ���(�#�����"��A�@�Ti�%�jYb�>�"Hk�Ìa� @,�*v�^��Cm�~(���>>���C�H=���9*�iBe�٣�2Y�8��L�2U�a�@�b)R��?"Bi~.^Ȫ[�X�d�006@`8 : ����C3���.��P��L��JАr�ta���%&X�I)*5�� �pYe(XVY�@�h!ԖA��6�6���D)�Q2� ��%�W_�f� Qe���a��M64vG�Nj�� *mĸ�2h�Q\�j��`����Q t�W� �mVXa�0(8!jJ�l�dm ��aA�9��Gv#�� �v�A☉�9%�lR �Z`��Zp�BBPCGI���VJ۵d��B�m�@T�h:� ����3��@�|���.�H �J�f;���`)N� D��;�lӧ ��1���D@���#�P�B��![���X���&�n� ��q*�Q�����ЁI.�'����O��9ml�Ⱦ�TP� �P$_x�@]��.r�6�^ i �4D�Ba*$sq���P�(��(TF#��݆�5��A"�:r��-�:pF�'����g��� ����nmKʼ�4U@t�m�� �^k.����\� Pd/1�bcШM"Fk�w��{N9h0bI3��&�`��fl�j�u�i�Ks��P\���U*�_�")-�{��#Dw|z&�bp����Fv��{c���:�w�wN%>���@1l�(@ ����� 9h�F@��HJ!�ݺTp)ܤ�Z�p�B�<Nh�pECD�j�;��jV0��a 9%���H�"2�����T���/[�vS� �|����L��RXP�"G�7Gdр�H�M�����"�� (`�0�Y��GGj��%�Q�P�%Ѓ���D\��ul��0V@��]�Tb�$t�`[$� N� ���A��p�OHAH���.��a�h� H�6�ġ��V�'�H)((@6�B� ~�ʑ�,(���@�8��k$Bj�6*��h�B�y`)5�X��� ��G&�@"zDx@@�+(��`V5 Fp��R%Xf �ɅܠGg~��<�N�NI� ���r�*��~X$UɈ2�b�``�u<VH�RC��@`k�`H"�A� � 4���I%�H�E�O�����'�A� B��&�@@�����hXC>A�6N���e9�4$&��e���� ?�@����@�B`��s!�9��x���n��Z@�J�%R�,��!P�;�*LI�����IZK#`� I�;� ��(�� �Rzr`�X����X2'��ڀ��R@�j jr�2�@�@�4r`���]0�����'���8`Bp�I@"�Є*�!'AD�N��P�@>Xe�1^ e@@A\�쀌��`ɧ7^` �f������l�"��E&�!�:`h>��o����&���G�AR�A�.��ƺ� �xI�1��3IP��EH^$\��M���A���U�ⅣE9i�3����$n8&�蕨HWb��K�QZc&0�Fue�� %��Q����d�юy�� ��`6x�i��$ ��V�Ǯ�t���5:�� �F$�f �S?��jq6��%M!]Nx��� �ueČn�zx�0�4\єEM�����h|�ޕB #`/��K�d@��{���XyC�D��fŶ�|S��7J+� TQć0f�Z��rpq�p�.S� ��R���*[�"L�i�Af�������p��w�;�t��ɄQǸ�?��0���Jv�� ��Y�r�r]J@�!˒�8 �f�B��B2ĕ| }9�IR" ��NHMI�`d�J�J�ab�uX���a�U������p�h�%�A݂��7��t^A�� �T�ނ{�*� ș?�L�x�XѶ�z����9y�=)�a)0�r@|��3�hb���u�]6���%*1�A��֖Nٛ�-�q@h ���JvR���5fw�I&��CJY�*V���@���\�u 3�2>�Bv�-�� h�Sb*���5�?��J�sp/���m�&<m��t`@K�rK��0��T$n���k�o�vk�J��)���7l�qO��bn1)��.]�!0�0<G�N�d5�K��� �ք������"{b�02�&[� �Q�r7�ð��$3;x*%�6��9���a��5`��g�����3�c o�"2/�#i��"���F�`�Qq6E_�$tAu��V��E��ă d*�r$D�. q/� ]�Q"<�<���(2)"E�]�fI�� ��R� J���-�51v vP��,&�"R\�6_�*��.�8� IC'�?'0���Th&��<C<����j��'}V����p��fS$�0TC5��>��ǁ�Q90 M�wۡi��r�?�)� \&�U<5adE�Tjrx��,6߷ po�X�%��R&�./ a>�=FR�id|�������@<t<I��ac�w�d &IH��G6/M#,`fMM�\�.��.��?�7^w@��`=��B+�4�F4P&����'SpU�Pf�IS�Y�23P�uBtW$U��Ry�V�5��`X=X�[G.�S.������sB$m���0 '8^�t '`,�n�Z��_ ?pR��z�ɂ7PKn�\�D�98����}������1"al#�T�0��.�h��8}�+,@�1<�� �^�Q20r�"�Q2B04��tR=�9��VӔ#�_;(p/0P�D\(�\K�RS�3�0̐TbJ�W;j`T��E,���q��!P10Q��'or ��#�t�W(�YX ���[J�0`D6D6�Q���W2Т8�����P|`(D�W6�'iPJ�JE��SX� fHU-�3��\+a�Ti�Rچ�r}��_�Bv�_G�6�,!��Q�R��{�Z��HD�JI�P��VL���e� QpH�3b@ ������F}�$`l�A�c��b(���" Y�*�te��G+�W�T7Iu�GI$5���;zW�P0�Jy�3��<Qf��5�ЋbP����A+�0U�"a� �!�'�d��/v��\�S :2����v�)��?*�`�i,9jFS'DA���T��� K�x���;'�mӠ;�Å�Oݠ&� �V&=a�&@�qP�|�a^�x�v04�+tR�-�7� VW3�@ԣ��m6D+9�cI� kӱ�S� 3��k�~��I|�ʁ<�?�ж"#t⌝�w�"9�8,@�W( |�&5���p�WӸnys��Jx)�@TTWu�T�#��Ti�a)<vbCrR4�� �� �q�<q�=�Hh�k��(�����S��01 EK�::�( �x���"p��Z6C6У�#�A"����:�>�"�x�K@��+�p�NSMT1��{9��#T.�c)����5��Qk �q/��6�l�s��&18.�4b '1�״{c�����nV�oV*5s��}��.�v�p�t�k^R����P� -7��,�3��������8Ч="|���(��(5c�;�O�͡�0@*�sZz�2E[��%�&��=/08l~�����q<��4�Qt�G��!|����W5$$0��V�u��Avv�)�3cA!�B!�\���5�y��ǹ��"�`��i�tD{B�c��F'(=��O�P���5��� �:[eS�B�z�-e'z�{BI�.G�!!@Z8N�&ʣ=�C;m1�/р`�BЍ��4|J�R�:kxQ��9�� OB}O�)�7}r}Xv������Ajb�BT��v�1���v��Tx�7�7|@��Г��0P�.�by�I�SR}Y=}-m)���F`Ӧ7&��@�B�>li^V�&*����j�'z\|�d|�A��x��U�U*��$ַ�Wr�;�%�v�` �F� ��2L)��/��~?�xI,��H @(�'|)�|M$��Rt2�}_��y���*�3Ǒ��u�P��l0�W�5|�hY����VfE(�J���,�(D��K^��c)��-�| ��-�ua�Ԓ!��(Q|��6�~�++��iN���B�U�b,SA�P�"�����XJ� ޒ���)�_V.b��rz��@�@p̫,Rw����<\j"�=a��fo�'U�(~d5X����Ւ�(�.��u�.�.UJU�%Բ��. Z8/�s�#3q/� ݰ�e����{60L^�R�F�2|�ak�3��R��p6kaAd����о�/�!"� ���-��f�i� P�x0��9�7䤩��.�0��HJ]5۪����b��"����* �Qr��:�r!'�k-J���C��$<G��p^fK �^V�'��˧e�vۨN>$��6`��q-���1���@��{3�*� ��W� ��T�P/�<~���XK)@ˡyk��$��r�d-���->'�*�ލ��$�$3��/`�m8��w�N�ټ$R���w8R�Ă�������u�S�f�&�D�~^m�WT!p37���h'!_��f߆Ѵ���j%�X�H]�`I\Y��(V7�p��`�:B�U�A}��qo2�4�:�R��Ԏd%��-#�#�si��j��zu$C�X��Vfi�h�gM�Si4�Ζrbga�߳L�:�3>��9�6-�������;���j�V�'�>Ghp�?�S�[�w5 �@��ѐ��u�����I�.c7�SB��v����7P+� /�;LH�9�](���P�S�"�,��w�Ȅ�U��â�C�- �2�$�$/8���������@�2��j��-<�O�f��p��t�ZWU������y|V�Oh1��3Q��07�s:�_�����"�`C�%��gg���!�EcC#�%A��crGAu C``@Eaf���ť`��c�¤��G΄��w�·�k��"��Ś�������[���Då!�!������ca�Uchhuu i��Reh��C�$J\Xa� e.P�P���6WX���*j����B9 H�a � ���t�F��ldx��h#Lj1 h@���U2`����u>�S��*�@0��C�_ZpT(k���@X0���-y�\�q"9;p0F��4���<x�h��삅$!@@Ƌ!\����j�P�pu0D?zܰ¬�!1ZDK#G-:Xs&X���Yt�a�D�2�xBD�L$F��Ճp�A�9DX�ND���u�"E��blh���{C��jU���n�b�q���@o-�Ɖ� d``5ఫ���A�^@�0�DX�X*�]���5 ����p $1���EA�k03~a�P�!l��9�hc+;�,(�_p0"lH��آ2�0a/�2��6��hX���Ӆ0Q0k6��V8`!Jؠ�J��Pb(�r�X�B�ռ�B�����# ��2�!l��8#*�\�!�ҁ& ���!�$@ \��$k( `�dQxarIl��fL�. ��d<�e3�0 ����^��B�"��2�6@��,O��5dd�����l+�����h��'�@�A��_�� ��D��4 Eẙp҉08M�C.�eC,H!���� ^`·S���u��H��@3�ChA �����we*�@|QkH�Z�aeM���aTц6K�:�NE����;���ޮ(�m��HJ��)Ol���!�t��БG>��6�A�P�b�d!�^p��ԅ��,HKK��u��Z���NH��*𣃠bH�ȱ����ċs����#k~��~m�� F�h����b&�~�����h�܀�@���)�@ʀ*��P(A,4���t��� p���N���d����X��O6���f�C�0��Pa\ɽ8Ҿ� �#0��A'1@1pIj��BCF�0�\ P�SP� �3� zp�?��2��f��&1�(�n�'l��!!Y�0���N�5e�Ik��!̢��Dc��0E�1�_\\_x`XN9��.� �BW����"��F�*�N>�_ ���0m�Pf�f\�>���B���+$�b[*b���( @ .��,��:d��a�*Aɷ���D-R��ޤ��"_a8CI>�%�X�:���4�0 9o8� 8�������`P1(VгT���j>����=�Lt�3��ZzA�6G�z�I���G�t��4��r�Ir�RY�ǘ���5 RA�"p���_ �=��/9�]��V�� �A ]���:#Rk�s�4��px+VI������X茗��.hH. [7�Al%I0P4Je��-�g��i# �X�O u0��K]l Z\"I$������,���!��HD+�0ȁ,s��B"�( C _��:��/�Q�������R�loIV����"�t�Рҭ`�$� ]�ֆ�*c t�/^蠅e���%!�˵@3�*A�(�5ep�����gI'���Ap����%�&I�s�j��Y��P�=�o�D�zB� �'�����g��,f�Zh��A rp> ���h��ۓٸv}|�×hy����ck��a��ȅR�̖����H�%�[g1��*��2�u���D�@((p*X*�y�E��\�ۘ��A�dF]���Ԃw�a��yk�S�c5�AtX�:@�!1�S� �8s,���O� vl ���x�K��1�1$:��<��eJ�6�� @��$k%���v��w�y�$�m�! �Y�&2���H�P7���]3X�^�k�Ѕ';�jd�ƿx+d�z��@%+P3�=�v���S��0��r�P�1ǬpS���"J��Z6֖ FC�F���a�wU��:~��� �6�Au��25��9(W��S��b�� 6f��flљ�@�w&VR�DQ�K���ث�; �X�U�z�@{�%� 0�P%Ѽ���=�q<z6�I" @��3�`<�u���Μc3�A �|���K�t!.Q�h��תX�� �6{W"�nus��w@ �B�A/���rvG<ബG����@ٖ��M��[�zn�~,��x?����u��PF�����D!�B��M@9��<L� |� �������l�����.�^�R��K_���j(����|ㆰ�pM (K��Bh��b�f�-��M:��=@A�!]l>L�����O��BԠ��< �d@6�($�ᯰ,L��*p��J�@�l�B��f�����!�o�0O3\�>� �c��4��\�\�COm�E���^��/��K ��@��� � �*�fzH����F`�(���K3Z�}�L���m�P>^a�$AP! B'l�ͪ���EAB��N�NN�r1I�~���&њ֯lo^�MDXBD(��@���SF#C F�\AN�� +�48�*a�$JvM�����N.$�,�8�8��"cT�@(�o�j����.�\�d��)t�>�Bb ��'C��)��4\���,�R��xB�K�l��^r�"����DpQć��1���P�c�O� ��u,#�b��a4@C�F+2h�h4D�T`R�C~��f�,���VO 譖Xh� �L��@�����,�Hz�,h���G��M9v���2`V�F*�� �*�A ��,뢦(*)-�Xnɾ����~��|l�`�S�|�H�DD�x�����4���1��a�H��T�4�ad!<3^�l{�k I�.�b�� �k��#R�"�M��|�"�c�o,'���`L [���a&a�a?i%h�&C�1���|�������`���+��㸼����X����@|�����(��.:���K�G��&a0`?��V�h8�3h�r#���NqH�!��$���kr!.x�WO��z!�Th&v��fF4Y3�O�L��)a��L˔a�*��0��p��F�R��@������YN#$�&���A��G�H\��z��4���Xq4�� ��R�ta\Tp���Q��`��4 ���"l���'FH��K�z�b�Kn. �h�* �$q`]D��O�0�3"'�V�R/�L�'s�,C�D��6¸�'���m[+%o�#�'C�g��Py�fd�2���G��4�#�s*7?�?�3_9� ����|��1˯L8�C��HNJ�@�p�j��"U�\��x(D4�u�C�Vq�"�*��*�S��Uh�"+�!���l�洏�+�"�t( ��*��@O�����D A�G �g=�b6is9����^3Re�27R#�UV��01��M*r�9��$����D~8L$pi5�-�b2ÁR�F=*�I��J^�f��\ڳu``l��*T*��*���/�6�,�����,x@1Vh$(�\n����8̱`Hc{L U%p_�ȅQ��b�a� F#R1�_��e@�*E1�ܔT�������'��Ɉ �VN{pN#�k��RJ'|>T ��I�d=��ڪ� >�0�Vr��x��q�`4B��ԖnB �y����J�l��U@k�˰4"2�<'�SGT讖w�P7I�l�"+4�)��E`W�'3?����L.���jN����������&=��Wg��4�/�]T�i�>.W������H^Q1�pH�N먎�@��kN��ӏI���I�G$j#""W�����]���l�d��"��"��@c$D0&������J�0+��� v�!@V�S�#�$�.�1(�5�6���\H�d�i0�:V�(�NZ�g�r5��Gha�Dg��L4B�E���P��Xhkn�tm���#�K!|"�xc�Ś��=c֒�(r�0�\0�H�"Ax��g��5#>c�fi�>'a~�"8v+�J�H/%��D�e Át�9\e/S����=�#�H36@��dV@"Yd `TVa�B��"U�Z��ۖ��fR��ՠɒ�K��R�-�,E6d��E�����,F>�)2�yK^��W1��3�W+i����6���d��ڀt��� V�a����'n�(#PgXG�.�A�J-Vq[�%AZ��NG��X����M�� J���Q�`����G0��gsZ�p����pk@�У��`�rw��tZCu��,�:�=�$�RM%a�YQ+]���0$����#���v���@w#��Z�"�A1�6|�*���L�~[T�]llu��\�U)L����a�9��E��%ERB�,��&�D{�r�{q*� /f�<S�����ޡ��LTլ2�%,ľS-�` �����Q�r��Mo��.�l�z�Ů˾+8�+��k|�m6]�2>��ꁀ2{�@(H`9>�*�uca71D#�s�EŁ[gX���EKp$��m����|"5"t�\��b�*�Q�?�j�3���`��bAxM����<����S��@p�(P�pδ�o�ck��,��k`�y�O<��Xt���BD"�B&g=���0_���� F���G�z�y� ���<��X�"8�`����6��O� ��7�j�#�Z��zS� �e B1�����+�씳+����u�X�P��v��<��1Ʒf8�zW��le!!��7U���d!�/����j6F�A��1� K���<"�x��>&��q�<�(�0>����iH�S��qݞ� ���,���� �g�ў����]�VU�_�%���z��O�[��f��=�8E�̰�2��KM-���Oq �B��bAݡJ�,��nUלHu���M�X��)�<�x[1b@%����|�E\P�� �4`��D�w���)�� *%z�ft��@X��m��\J(���(�$=���F��,��Edg�^+!�Gl�r:�F!h�[��.��C����':� J����_�Db˸��偾�d#�P !������l��T���8|�n�������>�V����L&n���_���pn��5��?����������t�H,26.*�UX�l� 8x,�8!��h\"|}`a-,����(,x|(l�P�p����PT��$��<.� �� �����x_*:�;6�x�TؠĐh�$�z<��<����xx�(P�#2�j2�Ã>8��A/Z�(c�� ȒU�#�M�?��I�&�/�X��Ѓ��c:�˙��'(X`�Aċ ,�@��T2`����)M�|� �SQv ��À���U���ېd�yS���o<8x���RH����r:�܃�� (D(A�Dx>�p�JTt@�u��|0)hP�.F�1q����ax���т�&~�K!C.ar`a���R�^������� #{R�j�H�@Pi��S��2;y� .,��226O�`P�F��P7i�a�ty�A+Xp�$�!��(Bu�5�M8Sbm�� ��S���}�TNL!��l`� �`�I� i���1� �AG�i�2+�%��(X )䀗���Ӈ��� p�x� �@�d$DP@�����2�@��5�`� 2mT�!�nJ��0�JT2x�0�y� (DA �` J��� ��w���&A(�Pj<�#p��������?� `�,�¢�#\�� ��m����l��B`��^�� («�6������;̰�?f�a7`�/��@ ��a�c6p� "��Y@�Q<D��A$�@AnP��iU�3p�Hj�Cr����7�c@)��:�Y-�* ����ө�k"�����>�ar�P�̰A�W�!�C#���j�4�CbȖGo�pFq?b�� ����-8��$ 6�Fx���у�/�q����+��Yn���+� ��a�wnh5�&|��A iCo4��l��B�PYh$��1�S4�p!���/c�@��E��^�0B�@��D�0B �|3�ѡ8ΐ�Ң�Dc�Mp`9,�0�n��P���@�q@Z�b�`��G� `��6�4��E$�@��2D� H9 ���$���j��E3�]nj�5��~�bܼ�E7�1�����$��?f��p����ta�D N �ԯ���((��x���U2�W�4���`$(_�R� � P>�W��9�!G`E��-�c�����3���� P)%.Pj"D#pB�o��:��&�@x����� ݅���8!k�<3p @\00�dМ�b "k0��0O�"LT�%^��#�!Dm��ɮ�H��0�PJ��,9:��j(�"2��h@H��������~ �cA�(*`�����q5<���,@�H����S�P��!l��u�CQ���h�nU�x��9���?� X���+�� ���̼�1�Bp�Ȫ0�(&{������\կ��1�axd���3�IU���i� P� ��v8h����m6��@ ��LZ9�� �d���xA L����pAQ���vC��*=XUH9E;����&vt!1�l��X���� � �e@U�@6���I� B�S6B���a[e��LQhK�":�ȔP�`0]������8��,��y�\�>:cFV6�т� s�d&'�(��� �+`K4`R�@�b`K�U/�^�4n�l �;]�Ʋ&Gh�)ZQ�� cC�P�W�䜫������"f�tx�Z�rp���3��I�6��n�Ps���� �"��vY��J�z����(�9b�n fR:p: `X������ k�-��Q���A�{T�vS�/�--Q2�i� H�<�H.�Rа�3�q)y����T�6H� � � #9a���)@�D �+!~-]⸜��u~�=hɪ|���%�{{���E��6Ft�Tm� �.H^��( )��#~\�. �����J1P� �������ꪡ�y���e���8�a�V �0�x��;�c�H�4<y�>�:p)�r��++ 8��F�q������x�fF��?\]TF��`CDPS0!���{!�C1}�ꈮ��G��o"ՂD%����P�}8@�t�6r�N���Ѻ92�m���_ߺLhB�hr(��a:9��%Gr�Y��L�C5@����EZ8xSw �`�,@�'�@���!���i�.LYvt)&09���1Н$�ࠋX�Yü��Ae/`��@T���v��@l1@x�Z�J@�@���`�9 �=^@��\��$Ǵ�M0�0����q�@�xF\�O���%�߁�j���@�@���X��@�L�Z]��^�@*XR��txEa�9���)BE%M�v� |� �8|�: p����c$�W����aE�;0��@ �r|� ���h�]��NPTeþ�V�p��d�L��n �Kx��D:X,�Iq��T�@ $�@����a� ۘ�x@�<��@��Y9t�� ��V�}����a�e����̈́�@I\dX�x�טM�P��Hh�␜�3�@1Q�$,�X� Ė �_$P?D���� ����Q ��х|�9ƞ�M�f��$W�TҬQ@�D��Y��i��}��;���TV����d�s���,�#U�J�� #R�6M�%C�ݦlC�$�u���$L��]`�x�\@��Od&ȀE��dBxdQ;PK粐\v*�html/images/note.gifnu�[���GIF87a ����������������������������, ��I���+0 t��cY�)��N])<�,}(���=|����%Cʕ��õp8�tʲ�^+����@�[��j�8;qh��;���%:�?r[I~��~��z���1�����1�������E�D���9���y�����oC�z��T����p����$i��:�;<�B����I*;PK粐\������html/images/oxford.gifnu�[���GIF89a(x�������/��OO�[�V?�#����+ؼ����I����[Y],(xC�U��U�{E8@�=^�l[<��*%�/M�,"�.@֢l���H1�P�X!��, ����4��XСT�b%�ڸ|N�Ǔ��T�9UU�����������������������������"z{������(��$ ���a�b�(I%�������G4��(��Py��Ũ��������۴) �y��"Mi$��f�śd��D���͵�����GO�4,zr7�����R�\�)J�cU�ɜI��͛8s��ɳ�1\@o 골ѣH� )c��ӧP�J�JՅ#W�j��5�oR�L�:M�".�0[�l[�"��5�6m�> ��m;�_�����ۯ0��%�W�^�z�:��W�@?��e[�� {�^�q`�n���[���L+�%�ՠ�ssa ���\����I�H/�Jޡ�sd-�.�EA[{< �����A�p� ���`�}{��;���}-��_�`����� )`��A����Fa�7�A�g!n����2H ̴`a�`�-���i@ 6�A�A��@� ��?�ޏ@B��)Tq��X���8�U^�A�\�@��5ɠ0ߘJ���Y�� ��t� '���ߝu������v~((���y���*�a�]�$��.'�P`@��i������驩���᧐���Hf��2Z릙"�뮼�W'�&����$���睧�> ��:;觋�*��Ω!��뭱 bx��HB�ߦ��xV6����b�*���+m�>��̓�����BY�ur���e�{+��a& "��wa�Cih��9'�?���6֍lS�&�r�,+��1/�,�Q.�q�+�cHd��$),-��*��8�4*P0e쬧j0KK���W���� I�����dw�t��s P���R]��-�4�2Wl� ��-IHI�%A���lD#Ja��;eG.9%g?�6 ��H���57��*�䠗N�+��4�-��кu�Tw��6������/���o��E��Z�����m&�<;�3t�r�ۨIo�e۳�\���<���7\���e��V �go~���_�Yl���t��Ț�t�O�: ���z1��#����y�/�s��G;��C��]��E��FC��4�DZ���S�" i�@O��ց�hjC>��zH�;�i_S#F�qMeBP�Ł7��B�ĠE� z�N&�!���Z�]k�fU(y%@o|��,�X>s|`��-��]^���Ek}�����Hc����BU ��4Ғ���!�*@z�R$�= �P��a�� �HE�r�$'��([m��ԡ6��~u,���~@�Joa�L�@��3a;��p��i�+��f������*���)��;�j�,�)�=�ʔx2ٞg��,w���~�G@�N<G%�0�W;����=�!�6��%M��~�����f,�Ӌ\2�Q%��m(E)g�0{�`\zz��/͋3��Q�4}�[�4�?��5�a�P�T�9�|X� ��X�'�&��?�H%*@J��`��h�2�:�K� -r �6LĴ�л��p4J̕gw{��6�k@o2�[ 2fU�Ej�Cg&+�?D��ͬf1!�7�`�d�\�pf���l�P��1�Ԟ��#9�lg�ڲ�r~�i����� n 4�"�!�g�*��JG �i�u��C�,w݄�,!6�z�M�E�r�X[�U��5�zKp�]�ob��<���Q�os;\|�g�u�)�_����r�q�M0'D;ިe��ga�Pxh_� X��[\r1� 3���~���h��H�:�!W����5 �L�|L�}i�Yy;c���wcL ���Lx��^`��N�őkK���v�GF��{�.{��`���L�2��%Ps����/������R;8�nλ�J������~V�L��6�φ6�j��<���/��\=��.f"�{����Lה�$*`�'T��&~���aj��T�K�5�U-�����._R[�McUL�g ���z��~��f��{�i�H�Rh���GH1��GXQ�4ؑ>*F�i��yT7b$^���ټ�D�}�`2U���ۀ7B$�U�8�� w��lh$��@xq����%�>� �T��U����pJa�5�l��`�Ƚ829Y�3�PXw$y.$1���7Kr��S$���(==�9Ȍ���*K�蓮�C(��zD��)`LR����E5��Mlb��A��gD ��S���(v�F�ރ!��h�٥Ü�РIz�r>(�<�9���;��%�T�T_c��u*f��<ױ�p[�2�~R%q�tm��9怮ù�q-i ^��Ϧ�����y�H!tj����Mzeu|ު:~�oo䏑��$~��z��!+U�>U��}�,��X���}탟���ɏ�Ȉ�ΧӃ�h����aǦ�q�7|Z$U��G�'��1�N��oO$����W}�,�4���q�{��d˷�gJ�+Ą0Zǁq�tΔ.䤀��D-/�M��}B�GF��!d�P��/�Q9���J��G_�o�`�c;����J��#�WE`.�J�-I3�FhԄ���7�/'�z��p@�OT�C����0��Lag���(s4/��q��/�WNB0�3u (�T����D%�x��+�L��|Β@)K��k"Gz����q]N�H �D���H8��{n�F�%�N����HN�H Gdo�HS��T2��N�B*�b���y:�DL�ċ�x�ؘ���^�� �%��d/�o�8��$P�ɴǨ߲��-�T�b��x���@�؏����ȆQ�-9���oy!�6>��3��jK@�l)U�)�S����qw��l��>��S��RJEj�=�Q�S�?eSC�W��=�fm��4��~ �=�cv� EUUEr�wU80=@9�@���a�@��9@� F�v )��UvC�I /�e�p6��8��%�U/�9ĕ7#��W�`�yI�נ�n�w981���>i���0���.`�ĥe�恛SU�ax�<��a�ٙV�+��ᙩ�V��:�B���6$D��Y���[e�>��3�"(��w��x9r�99VV��IeI�z}�c�����A6�6�4K�7j�SP`�ieǹYͰj�u9�zZ56Q2XS]x��I:F��i:oEn�@^���� !�YTÔoE�p����3� �|�W�#�y����`dE6c�Y:7 [��'�a��&p�_܉���c1�H3�&8��4��v'f�z� �E���84���9�I[���1��Ɩ)za a�-�Uy�faQ��u�b�b�9�[�尙�y D: Z��3��:K���%�Et�9�������f���bz��%P�a`c�-v�Cj��l9G�c�%��!��7 gb�à���r���4� ���P�{bl Vi#����*���Z�p���QG����~�\�z4��\W:7� �� �sU���ʨj�����F�� �4�aG2��,a�`��:4��Oc�������+��)�Թ��C ����: ����:��*���`��� ѩh[<k<k<Mjh�Y��װ�h" ��F@ ����$[�&{�(K<��%�0(�9z0K6�g��gx�h`F��s�dfgm���V�);���^��A/2�J��9�H���r"T;V;z�x�1;UI��/�U\ێ/��S;�M۵��<��P��c۶^T_�5��Q��i��������П�!�PZ&T���\¥��+��rs�s�[Qַ�%�wk�0r�E�'#���s���K��F�+�!�k��� ����۹�a��=�3����!)�m�i�������i�6T��FW�6������{�&k�m�sk��3*�Le���P=�&R&"��� �;���i�����6�?����5ƻ�@m��mk�-�S~� �I���k������j�C?�&R�un��i+e�A�{i�������C��Vi��`i��3��!��h���j76 �&kγ��"H�h��(q3He�,{�#�(A�|�g�M���P�,�GM�g�~h�K8��'�Ho6������B���!R��5��7|��c��qyzyd2v�q�!fXƄ*�EV�1"e�v�vl"</��Ғ�Ï]�/h��"��uqd{f<M6�ρw���%��"W2z�y�+� w�E�����sAg��Q$9$C�4��9�-�dFC�1��NҔ��xGT �Wq�g�n"!��yot�����C��B#Gr��V���e7Bu�z� �P#(�vb[3�;�s�QC@�$�$<�P�a�g.�\N.h�Q�x� p2y�.Z���G]'��GJu�.���q�jgs0gɣ�0'ˬ� ���HR�BC;�sBx�rx�Nprx&�%G]��w&�7E݉��yX4!���Aw�9- x�6�3Ɂ�-��]amϺV�B��wEbP�@RK�w>�$��`�����XNpbԾR�a�X��-��Lա��yx�x��ѺV��Һ��[��� e�v�]�;��#��'�q�!UR%���1�QK$LJ�%�{E�Du��{^�&oҾ�G� ������q�y�ш�����M)G)��ɝT�Nx�`Lْ���R��-Œd�a���!�{� ���(h�����Mz�Ў����������Q�MV���~��`�N�dLK���P� ����n�-�.��K�� � �� ��33��.��0�2>��6Px� d��20����"�W<A�\'2�y��[��BN�RX��U�}��/��08.��*dQ�|��������<^|�Mr����HH,�%u�*����ǀ��R~H��h�Cߍ�x娊� "��4,�����U��Q��C~㔝�x��v�0 P��|���N�}��E���Tl�'��݃�b0ϴ�s����V��x|��.�DʀAU8{� }��\%���ͧ�?���MFq�>�݈�F�H T�0�t�� ���F�뱾��~��@��{��U�Ů���A���P���@����'�+�l�!b\�ܤt��J��!v��#�M�4g�{^�wKV��UN�4�9��͝�ْ�����rN��N�����9�pJ6���=����x 0����H�����T�pc�J��%0?��1���#�{�����t� �a�G��D�!���!!��������O�= ����?41kR&��f���HO&]�!`?{J���d�~KE�߭�W�'Ԙ� �C$��+#�m� xJ�?� ��u)0�h���0]>!�!��$���ڥ�Ҽ�I40 ����i_.�X�kO��ς�4Nâ/Q%�IO��ŴH�����O�����|��������Nz���p#�����"P�d�2i���0�Q�0�!���+&۸j� ��`a�a9d�p0���)m"M�S��F�TmS��B�gtZ�>_�lx<]�r�Kg،���4���:°�%���-:���B���ʱK�1�Nχ?�PLOKKN2��M�M�R�T�Z�N�L�]���VT�ؿY������YO�S��_��b��M_g�NJX��peomet���Jv�tThJ��J�xwl�|xw� D�NӾ|��%��@����8ȏ�x�!T8ZFw�)��c>��Ya�A�� �L��%�u˽3��\ɒm2����Q}'v3U�����;UsiNj@%UY�k�N-���j���|��z�R;PK粐\���`]`]html/images/quad.jpgnu�[������JFIF��C��C����"�� ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������ ���w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?�?�(�� )~�юq���@ E/�9����A��QK�S�ɣ��z�QK�N �|�>�ڀ�)p} %��L�q���c��QK�L������>��R���lz�=�'�R��RPEPEP]G��!���ž�O����Ox�Y����wIq���kn�8X� y���(!Y&��$w^dz����=�ߵ~���0~Z�#����8�/���x�Uˋ���-w���-����Y� y.u&�<��_��l��{���{%J�:���pT��"i���q�������b�`���S��T��r�[.�I�&~s|v�-�O��⯋�x��-�G�+���Hlu[�ho�oK�T���5m6���B� �Q��sE�oZ���z/���d����|�n!Ҡ��ǖ%�<�e�`Ws����q��x���O���z\j��Ꮙ�An�����<�L�ú���w���lu�w�(4�3?'|E�\���ZZ1��Q������5�d��_���] �6�:|Y����:�R�e�4~���Z��8NXW:3�NP�����j�#���V�R�%_�⢪Bϒ�iJn7N7�X6���^=�|�.~��j��2,���G�P�n�n�`y/�c�����?�f�kw��'����\[j� ?0�k�y<4� H�y�6���5�N��.p�L��O��<~Y����]\Z�bAtݎ���������<=�'�#*�`���2t���Z-_�3�~�3��5}|:���O_�s�Q�RΖ�犔�ˆ�R�M�$嶝Q�_�w���_�'��?n��>(��P�<%���~�[�c���E��7z��$2+�Z�֥�C+��c1�����v�7������բ}k�Z���N�o#0S3��\]̩ ���L��sC M<_�#�O���@o�1����Ͱ�ҏ�E|N���N�"����F�8���L��t� |'��Ɖq��|A�J�w�]jM�&��90إ���DaI�?�|=�4�#����� �L^e����u���f)��P�֩Vt�jS��և��R�*�I����#��?��.�O����01�Ru�0�gfT0��NN�'C-����&�RK�ς��� �=28u���4�V�5{��-��R���v7)w+ǻ�Iy��5���w���4h��Bԗ�/¥�(�|Cee%���ynf���<O��O�3� ���gs=��,�]%��Z�q���|C�ǂ��u���H���j����[i�"�p�(����$�˓�]�0�z��g��� ��_Ə���4MG�͕ߎ<3��麥��Wq:�~P�g۸`6�+�O0�T��e�9�`�s2�R��c��eJΤ"�>�O��D*I~�܍K6�(���ׅ�p���L.u���<� Up�#K��Tܨ�z�Ɲ\5J�F��c>V�9�-?�τ^�>&x+�6��4k����j�|+qymou'��g�è�y�V�kG/���q�1�Z������tK>�s��E��oo<[�'R�u���Is����-,$��Ǣ�꠲�p�=F����t�Q����<m5���YJ��_C�km ����l�-���������A��K�F�^��6cas'*�a�N=�t>�E��X��e,��8�|�8̲�6g8�j�B��mƒ�z~�T��9{G9+r�-��O��Uó��c���9C)�u�8��lR�Zx�B� �I8�RX�gʯ]�=/�+����>k?�?��|D�X��%��`�=| ��p/���t�h���5�ڮ9u3[�]VD�~!�?�/j^���j: i��F�N�4zm��>����)��|@ږ�.���"#�@��> �f{��=O/m��-����Ag�J���q����r+���6����s�f�WmJi�奖��k�$$�gi�_�x��.Q�J� ���f����^�>-˨��ia0��}�YJo�|��ya���p���/�q��.c���~�r���a�a0�|&_J���*s�Vu����ԩR���Tcۓ���r~̟�O�x¾&��u��5֒���O����S�Z����Մ�����������{�����-�~������;�e-/�>Ծ)~ʾ�y�|@��뺍�����5?�7R�_�v�_�:��}.�T�A��5h��/R��J����|*����M��S�1�vFS�h����D�Hu)p7F��@�.���|+x�pDY�oQ�0�{��rs��p��|M�� �Xl��s<w e�s|N&����5X*q�cፔ���i�`��Vo��rp�~E��K��(�sLW�|A���l~�U�����,UJJ� ��*T�d����N�Oƽo���/��^7�]N��:.��/j�\��x�N�L�o�W��,���^x<+i$/l��$O���~�O���{�|6�M�{���W�ᄬ6v6�u��1KM>��%�Ċ?�5�VDo������7Ï�#<=�}J[}͵5��O9S��k;-:6a����?tc�ػƺ��ῆ_<%eau�F��Q�p�Y�u�\�Xhm�pt�|9ps�ʲ�w�]�qǜ/��qo�����Jχrl."�L�:41y��B7�硇�7Ua�4�X����#'?�/��K�p�sg���o$���B9�uO<F/��ɇ���F�4��ʞ5f�N�C�����G�5�z�O��C-���]3�z��t��1�$'\��|=t�斎IW@$rg`���?��w�?`�)����>,�j.�_�����tK)����-��B�N�4����ud�d�2����s)�g�?��_���;O��7����a�/� ��oy���:��D���oP�xn��d-���}{���m�GW���3�x�ƚįx�F�u?xX��-WG��[m�k���.nm!���Yt���(^9R�/eYV��?���E��-�V��o���N�d�z؊�*`�4ڏ4� ��ma�}�8��zx�7�Fy�V�����أ���XgNq������6��R��:n��>�N��:��ں���6�<7>�w�<AmjH��D�5mVbq�屴�!�e�y<W���f�y�]x�>9��ğ��W�| ��:�Ft-R�sU��_�B\iV���[G)i<��{��-���?�O�?j߅����2�����?��g���ކ������Ղ��'�R�-�c��'��b���$��l�����ur��k���pغq88�2�<E*U��&�4#{M������1�����p�<J��W��L�.��fٌ����M�)�p������S�R�j�F�:0�[���xW���-��2��A#�<��M�9Ia�)^)cud�7P��A ���K�i���i��� ��{&�>)��6�FR9�-�G��5�Ԣ��Km-J���&��!��!�#?������L���"��������k�i���=J������6�,qE��w:}͍��ѥ�����· ik�vQ�Yf4��{'Z1��j{4���������en��p��gJ�L��� �W�<%\E��kFJQ���rۚ�I]_� �r�Ş"Ҽ=c�ڕ�B���Pe������m���ec s����k�#�zN��O����+;}:�#vȹ��b�sw1���V�<��3�B|����1��λ�m?�Vw6��M6�X�tCfU�C ��qor�M���Upo����Po؟��<k��k ��s�|d�L������>���M�*�pNs�Q��m�~�p���C�uV�q�m�ܩ�fY���Kr�N�7q��9�\Q���^�ahҏիp��Zp�乪�P�8�+�:��ɇ���%.go���<+�f�<�-5� |E�K�hz�7�J�3�ң�- �E9���&�m�9�u�8�����:x��@���M�3�&in|�O�H�f�@u�_^��ו]|����.��fX�� �\@���,x�Y��<�m#úO��*M��G�t�> �}�tkE��E�.�yo^[t�R��2�ZioD�����M����.���|J�g�?�_����xN�е_j~2��%���4�SUѬ�[/ h�Y6�{.��R}�P���.�y!n��-x�}#���y��i��Vmn*�o��2���,,�_/���|���T��V�KT��j���n�a��8��u�crZ�sl�1���JU���j��V��zP�5)�_�pU)�Fo��m6�r&nq�rI���#5�¸�\ۓد�u���{W杷�M�i�:��5�Y��iqc{c��L�/�y���O ��? �8��/��ar�V8�H�X��C�;'��#ps_�[⯌�$�ar,ƽOf�jx�;Rv��U�lݵ��s�3�'x� ÙN�8���p�j���Ƽ�ӌc4��*�[;r�~��߬�'���m͗���h�6�y;5�k}�,2�Å `W�Q�|Pӵ� �xB��(���������Jy�{[�ec��3�yy0���&��[��-?�i�/��I��9�6x��DŽu�^'���@��&�n�<K}i�Y|.<_�]j�{ut�O�Io4�vʑD�I�5]P�մmF�KԬ�Ym�ln%����$剕ǡ\�#!�3_�� ����48�ř�[C����2jx^+[���毀��W ��<] ��V���nT��O��� �?Ɯq�8ܳ��q�g�V>�%u�َ;�4*S�U��aR��'4�]�V�����?<�/��%]�O�t�ld�i��p$�ԭ��~է��ݹ<o�+|����|H�����#��"�uj3�\4{����ﶾ�.���Ặr1J��`�}��۟��l#��XЯ�2���>�����m���G@FKF.@2����Ο�#��⧊.�a��fM{�7����Akh��yV���X�kk'�P��s�K�r���\�[�*啲�Ѷx|Mzدm�G�<5(Ɠ����>e.NT��i���-�p�O��R���,�~ʥgF�0u02�s�R��uHVQ�Zn):�Ms#����/���|8�����Y֏8��XՔ�H�{;9mav,��6�v���W��z�Łǫt==�:w����;�g��|A��O�O�kZ ߇�Q�E�Q�~�ug;j��$):2ڛk�ċ/�g��ʉ������'��տį B$ua�xt�Ա�K��Fs��w#�\m�7�VcV�E�f�� ����\M:��*��éΔ�.T�H�ͫ���8�P���P�"�eXZ8,|�a����U��s��JT���P���Ni��5���?�=C�~�<i�h��u�*�����+=��Z ��6��Ʒ��3��Xi���!��������Ơ��5?��컪��_�_����#����w���Q�x�"��|Q*��Ki��k{���֧����K4)��wn�9��~�~�?�O�K٣⟆|5�#��G�i���i:�wח�j �-�r��c��[R���*#�&=�dUş|R�<+��玵����5-}3K�/`f�zol���6���3�������-� h��2�|@�N}�y�L��T�y6�3LL-LV+O���\^"�%NU�e�J�K�ƴeBq����g�(��QW��2��b�����15kE`+V��N��<&��N�����$~�s��? ���Gq� ��jH2q�^�5��0�5��6���)�}o�ޏ����]q��_ç\����Z?�}�W���\��</s��t��%���>7�/Qe��T3��p ��Ģ�?4���R���kku��v��]�F��'�n���3`�R:��A㗊�f[<���ҭJ�0�eh�TiN�:����9�--�?C,���ϋ14r�Ʈ"�+1�>�,2�&�I���4�}��i�\�������Yo���?|e�=|t��u���]��~g�����"��<A�p�w�J�</�,O���$hռ�v�����K�LJm�������}�Emh�z�Y�Zϥ$���[�+��U�������O���+Y�x�U�>�_�M�?�2_�O�F�TӴ}oM�� �����mqsk �����\C�� �~k�x����։�A� �$0����W -����[[�&��܄�k�N�x� �̻S6�>'xIN�+���ҭMG����R�R�\=)��W�>z�!R�� �������fY�����qf+<��r������5����2�IM8��R�%Ρ�~�i��7��\�}��G�<w�O�_J'�~ʟ5�^��O�o�l���\ڊ���Q��.�a"B$�ݽ�w�:��X�gK��d�i�54��(��mGھ|=�Ց Dŭ��!�[.������H�!�q�j��6�b���'�r����θ$�4�$}�:T�xkF� �c�B�r������rLj潕B�_���X��qԲ����%���\~=h��RV�k/vRĺN�~�o�?��?�-��s,�/���q&a�br�R�<&x���*�NU'R�:p���yB��>|}�>��^�מ�Vмms��8o7Q��y��!w`g�In� �N��qO&��$��>��/��Ht�/�{�'����Dz���Ϧj�u;ym�-n�b���~T��E#��r�e>�������6̨�?��ׇ�#����ҍz4ܷ�qn2��j2I��e��9._�?�]L����t�5VQk�ԛq��~D����P�c$�Q�5���<E�8j��χ7���tiW�~#�t����k��!x��F����VI��W0O%�ĶRCv���k��O�-�Fx��x�F����4-"o]���\c�pZ\c�]4}��l��hmm�I=��`��d���5뽢������K6�<�m���U9<�N�zr?O�����h�̫�՞x����������R���^���Vz3�N6�r���r��xw,��a�Lf&��_0�b��z�z1u\iR���kNN�:~�NY���mV����kZ�����ڕݽ����-�ԫ1��ZGP�4h��V���Nu�ש 4iS���թ% t���9IF)j�H�b1����)5�+�I�$�ն�In��^�g=3ǽz��O�~>���)x����/�'��m.K�S�k[�;^Ѵ��YӦ�(^�K�4 [M��ۓy�W��Q�^{ᯃ���|5��j�Ö��� �ƻ{�v�U�+I=䶶ؚu�v#&�ڍ$jL�B�j�ㆅ9J��1����r*v�nv��9q�6[Z���|=L]ZЌ�[J��Τ!F3�V���N���e&��u��}:Px=s_Է����t��N���I��U�}B?�O��hd7�h����7~�+�VyT2�+�궅�^����/��J��@��}�R�ֺ�i�����l�U$x"[I]�Y��/F�U�ٺx��9��ڔp� ��gg��O����~Q���"ΖGü�w��eF�^���Tn\��*��~�����?�]��:c8����z�+�������b�?���?��P��/3�:_��G�����|q��h:�=�>�q��k�mgg���Pj�SC�.쥊C5���/���ڢi>�{���bDv���-���zns�1�����|����:8�Ee���兩b�E��s9O�_��N�g�..̱���P˱���t��t��c��u熫���I֥��^��ԡ(��Qi��Q_]Z��z䖢K��������*ǪIpLEv�ܐ� �q�|_��?�<d�U�K�2ipj�,f�g씕I-�a�$ț�텶8_����"���4�1�\��]�cE=�!Q�Ia���e��]�7�,�:�|����U12�:���VQx���Vx[���Di��崼�����}k�g����o�τ��xc��ut��_'��%����ۉ"�f�y�X�>t+}����4�,�T�f�����I�N��uk�0�I�k��W���ckJ���Qq��;UX��/�_7�`^c��8�>ɥψ��{l�7k���� >�\q�W�g�?_(�d�?Zl~;3��x����h��zU��j�R�I�T��c9IIG�$�M�����_B����mgO�4;�t�F'�kh����ؗ( ;Vx& ����Γq�^Gcu$/;Xiw��>�(j�e���� �sj��mw �]�<G%+L�,���18J�5p��MޕHՏ=)��7��iu���8�%�p�}��6�*���V��I�Ӭ�8�V�2R�mN�I�d��V1��3Jw��q�x��/������>5�!�W��z�<E⿴�Ϣ��Ɠ�M[�76��� �{}yk�P5��Z.ZXb��*+M���� �0xO� ��_����O�3���U�<g�i�o�G{�o�)�|aoi{&�5=?��j7{�-�Y-34�W�cx��0��k�qJ8�СW,UN�僖�ܒ����kF/d�In�3 2�{W3��\NK��qJXL����V�IT�����^������M���O=����D��k�j|S�m'Ӡ��<o�][\]�[�c��/�5�)4�O,�՞�g�[���2��K�i8�I�{{�~�K����� j>.�~�:�g�X {�e��/%)k�i�������("ʩb��M��[0�G ��S��eB(BU*ʳ�g���ܹe4�������O-�<naR� <�r��g4!���e^uj8�����Ir��h����m��ëj~�sV��t��� �`�֧��fKE���;Z��H�]d���2�l��&��Y��Y���t�ZG�?\>����]�c6��i�����[�Ӯ/c�w�[���0�g�E���a�ԣJ��ƭ Ҥ���� �'E�F��z3�ỵ̄���q|?���juk`g���*כ�U�������k��e�g�O�f���߳?��H�_�}��W��(��Y�w����J�8��;�&�}h��٥s�^6#uB�j�?�Ju9}y#+m��*�(P��Q�,=�HS��ǞK�^J��+���<Q�J}ž/�[;Gs���H�4MJ�D���R�����#r����Z��D�:rp� Ӝ]� ��Q}�d�O��}V�������s�ŵ_7� N�i��g�*��R�q{v��v�۲��0{��ٷ�WǞ��i^��i��{�l��U�V����pG�i��E�!T����U�;�o��5�E�=���LP+����lpf��ine��-Ʊ����#x]��q�+��L7��x*Y����y�HI�(�%�5�W��Z�8aԕ�g��Y���Z��a�Y�;K�P�MJ�'�{jъ��0������?d������m7�>�4��ώ1Y[��.��Y��Cf�? �R�:���dӼA�λm4��O�K�D�f���Hi����Op���vHq���q_����߂>7�Ț�_�U��<�ྍ�?�36a�4}g¶�wH�� Ȳ �nba5��p�B�,h��j��{ş���?����qsq����Z�q��_����>�*G�"����sgsp�f/ ղ��I���?�q�g��婗�>"�5������7\���Y4���g��A%�L� -qYo�d��O��;O'gʩ���Ei�}hv_�$qǧ�__|#��sc*;��=�:z�q�� F�Go�X{p�g>�<,W�_ ��ŷ�`1�O�8�?�x�x*��-�m�˛T��������.���p�GYS��K���$}���?/7Mu�N���k/�J�� S#���q�o��2H?���_�]���(�〫��K��A��? �s�v�'������E:J�H|��h�� �!CJ��$�o��O�� �9i���/��B�El�������8�*7o�ܹ�v����/��,��'��*�%O� ?��r�fH�f��?�!�ܪF��Z'P�R���m?��>7�ci�ٵL�VQO�֩E�t������|����Um�1���)����T1��)�����n[�EN)���{t����*N���ulڻ=���C�Xx�F�tMJ��md��]CfS�L��e�@��˂� `A��xR�ƞ�4�#k�KZ\����mp�|˱��+��<�� �Z�մ-V�GԚ���O����'��Y"b���e8ʲ���0$�ϊ>"bx/���|-O8�3�-z<��S��eF���E?g(�/�5RVJP�����~<>_���Y�E����5xjr��*x�# ,�/c8T��V��Rj)�Iz/��wX�]���牴9�:��~)xO[ҧ�����E���>����7�u�#��?����u��~6���ij\�S^�2.��{�:�ts#�f��4��$���� ��;_�ԟ�7���;i.�Y�!�,�vH� �ȼO№U�Դ�2M�bc���p��{���-����s���@#=��3_�����8�.�r�h�SR��:g�p�FN��ݚR��o���\k�\]��\U�Ĺ���殎y6i��U�J�r�Nu0�4�Ƶ*r狋��-�K���������:����x�R�]k7~;�5�ç�go<�}���^���D��)���7Uh�F\�� �[�ľ<�7:�5�Z}��u N��¨U7Jv*���P��������!�wź�O����kQc�m���_\ܱ�Hi@�6�d����e�5�͌��_]��t�{X�O �fIol�ɖ].Ѣ1�2�nO��H!�/a�)���q�YC��YM (^�������U��S�J*�R�)��ME[W��G�/��%�{���>ϸ�^Q����?��J���9� U�5jB��{��V�9y�M�GO��؟�����'���߆^?�}���,&�m:����o�}F��GԢmp�]���E�d��V�U����ǁ<G��^%�W���j��M�����.����O�H�m�k[X!��,���̂�1�tUe�?�tx<� xԧ����s9u/w�\./�^�s{rJ�Re%s��ޕ��w�*`��#'�'�N��k���,[�v�O�Xy%$��T�);�$���G����kß��żE��5�bq�A�c�Y�e��㥃�f�a��(�i'NP�,�$��_��ࢺ���_� �8��o h���Z���nmC�~)�����wS\^jw0h�� ����Om�Q���+��&��?�Ʒ?~*kZ�^����ǫg���dž��[�:��M�Q�)$�4�k;Y&��}RiU�" �O����1�U�K��-�J�#�cx/�:=��M�x�> �71h�Ր�z�~�?���-Sv���+iW�*_<Yď����`�����ֱf��if]t;�\��,�X��/�[�K��P�����!�<�k���Q�d��S<eZ���q9����&�K*U+B�~njnm.������|��&�8zXn��52Ln*�x\-,�� �,�IaT)��¤(5E*x�G�s���>8~ϟ�'��uσ��v��{�?J�-��A� �4:�('kG��[��m-��<��>~Ͽ��|c�3�KԼ%��|F�x.]SN>+��c<^"�4�$���p��zf��'���{y�T����ڌ3۴�O�$RB��ʌ9P�F�y���R�����w�2xƟ���i0�5�<=�jq�Y�5�dž��6�$K{u���|� ռS]�qk�7��ar\��d~3c�=x�yFC��0��U�պ�a1��3 ��aRP�iԩ�Ӽ��~�CN��"�Χ�8�weYa��c㲼?��C���bs�F�Zs�]&� ��̬��߀�1�f��~��WƸt��o�����N������X�zť����LWQ�s��[ZY;ݧ��F�k��� q�j�����S��/�z�]��M���>�-|-ms.�a�\��]2�滺��e�+�ͦ���։c�������-���F�z����u}uZi5 7�k{%�$f�^�lIuxo�72y�s��c�_�OA��> |r�e��-��?f_���#x���Ԟ����LH�x�O�D�K������s7�VMN�>�'�y:�1���&ʲ�^!̲n!�1�R��g���i�x.+ȫ�K���sdy�����aiQ���J�_��c��e^)x������1�5��|��2��U�akc(b����.3C��)Ɲ\'֤�Qѩ}���_؟�^5��������.��c|�퍍��mZM�I�1�*x��_�m;��Si2Oow7��=V���_��q���^�?�R_�o���=��w�����W6�᷊d�ƻ�NY�mF���W��-�4�R4�6F��������g��k[��Uj><���m_�4��|AMn�M ���e�u�~M"�Q��m9���k=��[b�i���-x��G��o����]]3B�n�W�Kf�[\���CE�`ҭ4��F�Y�͵��cm�C4�+n.>kˏ��g�\m��g4��Q�>O&��qi�R�VU�,v�z�JT�F��ץGN�� B�z��Z?g.��/�\W� G�a�q-:+���.t����(UȰ��MJ�8��CM�%�J�T�Z���&��<Aw�;�߽��:s6�4æ����"t�G̚{mֹ�Hd�w+ ��G��,��Y���J��x�4V�d��i��z,�ߞ4���}y�_�p�^&�F�s�8��U�J�|L���2\D��[�V���e��5'h�1u*�B�"�b��p�����p�5`1��cR��a1M�G� ,] ��1J<�ɦ���|�6~��5�xG� �g��/ iv:&��΅�]CQ^�m����Z��N���[x�7��E4���a�n~�?�Ro���Q�?�����O���VB���h����2��ږ/�Ʒ�/G��K��h�E�il���(�Ύt~p���=(9��?�~G8¦c_6� �Mz����T�V��RN1��G�����#�r��2J٦#(�0�u\�z��������bk<Ej�#��:�u/�V��-Э/�O��Zh���B�+y��"�$3ƒې���b���Ix���3�:�`H�s�-�Ӝ`�%���[#��z�`��x��?����@���Z�'1�7<�0T��pJ �)�M��y�=�������!ž�Tr��)�q��S�<=\�c'(F6Q�E%Q��o�7[��ǯ����k�O��|P�Ɓ�x.��%�ѵ�ú_�t��hZ��� +�{]kD� 2�5��o5���7��Ƭ�xO�^ �N����老�Q�T =��m�ṁ�џ�XB��Ö����T���_�akU�b�?9a1����8f�֍h��3�H55(�>W��Z]��q�GŹ�V��9�3�Vy)en�����՞ {YԢ���{);{�g�V���������m��E_�Euqo0��[�8��$Ѩ=0Ξ9��As�B�����cG��DD��s�I&���v,�����W�g�q�\K����3�Na��N5)R�)*���jNT��uf�).z���z�Ξ#��x���8�?��,-H֣B�hE*Ќ��'J�:���JQS�)��z����"o����-�#|r��ß�'V�w���M�$�5˪���g�H��|��ؤ�(���OI��L��������o�K�N�ο�i�O��>|L��� ��Z�Y���-u{o�t-J-�Gu��Vv:���Koyi����M\�����ΰ����<�[�`�ku�dl�s�w�?�Yw�4���e��3HP���*q�# ��FS�.j2�%N�y�y��Qjׇ2�����b���*��L�NU�Bp�ʜ�u9��O�9%-e{�{Y�����~���0Oxj���z_�|9� LMg^���ž���}�횁��5MR��mb��ӭ�.&� 9�g�^x#��m�Q�\xoU��ොb9>�?������e�vY���j��ᄐ�������Y܁�Ai]�<�v�~�w��5�|#�W�:#K<N+������%J�\%I*nUP�9�&�m��~w��o��3���s:��x�9��ن"�H���Xl�ƕ:�[� t&���s�֒�RG�m�ŏ �@�o4�Vo.M2�d���G�)~����f�OV*HS�GÝF���;��-m�l�M=�QEhr��� gg ��M~&���J�a�?��U�|�a��*x�g�o�˻�E�>5�s����8*��g�<U � ��;�*uT�M��ז�C������~�,�z�0���s��QQIS�N\=W%���k�=W�ϋ��/|K�`�7�~��-^K9��2����^\�i3�Vh�T�����"��2�x������|C�=V}+R�Z71�{k�w*e����=���T�oq�eI,����I$�s�֒��(b�uV�' ��R�T��Fܢ�՚�ڣ�2���m��aV�3nc����*��MLL๖���5����H��|Yco��R�c��(�`>W�� D��, �� �����x���S�ƈ-��v�w�,��M���[N���.�a�%�R��r�\jWOl�(��<�����/d8,Z�a���E� �uk:M��F�J�����an����(Y4�z9�e�qQ��S�ԧ���Э8�X+/r��|��ox�ž�����Ŀ�:��N���+i���<�Ls,�rr��h�rp�H��1�^�T��SM9 ʜ�8JP��g�(�l�%f��֧���*x����kǾ%��%P���R����+_�Y�4�EX�V��FS��1�d�ܓ�rz���TӣF�j�*t�ժp�}�*W~l����|�,v7��8�S�+[��`��|���l���t-Q�&��h=������Zizu�(d��t���4\�<�H����w���r��R~�3x��m��-{O���L��k�w�⻘�g�2�e�,��i&;��&���9��6�T�e��eN�|>�JRo�������T�Es�?<Aʼ-�%��pX|�.�_BrQx��k�e�wi��r�M���u儚�����ş|u��^7��L�7�o~ũ[n�f�9ึ�����M ե�f;�i��3�E%�>j�� x[��=����}J=>��akj�\���Ͱ3�v���6���!O.0dd��g?d�_xG���$���:�~)��*$:5Ø�'�k�-�;+�>����H��`P��|�į��VM���~�����&-��g�oSO��_rn�rm;�(p#��|� �5�;��i��b�\� ĸJR�S��ѡ�B�G����'Bz�0�n���ͼ+�Ƈ���C���O=����<�.MU���vI���8:��.o�� 8�4jIJ������=�~�|b��EԼy�"�^jWSi�bL�/�-+N�"����w|�a哴f�> YE$�|7(a�n[�3�<���$6{��@��x�����!�e�J�7�� #却�Nt� �ץ�C�L��m.����f�8p�{�j��kY\^�)�����J~\��y?x%� \�ß �MB�̇-�1�����s\&3V�ֳr�%)6�z[���81*���S�����a�9ap�ap���:T��X\= J^�\0�F6j=�{��%��O���]V��l�S��Քs���Y���k8�鼯�ɪk�zEob�u䙮e�kH'���/C�u��V�.���k��+kin�%l�l�v��]��%�����o��<-�N�t�o��7��_�4�=:��=���Ya�� ���k��$Xa3JYv�ί�m�;O�_��3��|3x���Ƣڃ���@[�aӬ-�ԛx�Vrb#�F[4���'�w�9x��l��M��I�k�8��Q�Bp�bf������Qͳ��ҍ*t0�Uj���Q����Η�%�� gYEz8���J�¹V;3�3����3�_3�ʔ9y*W�֬�Ƨ%(Q� Jr���t~���//�4m2f���}ֵfor��csk���+����`�xg�|���Wu�O����m2�[�@�Z�/bb��r?a�/����,�,�+_)�OS��E|��mcJ�֑{�j+�N�m�l-n��rbelo)��6�7R��E�g��,�:ɼ�n$���O��O.Y�c������)�6|��.P䥉�9ӡ9�|5H��7�|^��P�3��,��bj%9�qjac)%�Nuq5�Z4���M)�-&���x>���-�|'��q]�^B�.|�!�).n�����M�~gٴrk���~����q�P���,�Y�$)oDD%S �#v������"xgT�%nt_��2�L��GŻ�3�&X%^3� �Oޯ~�!�`7^�tɣ����[I�.2#2G�ȣ8�$��������ľd�c�Yy���q�G,�]*��U�Ʈ>�x�ƅZ떊��S�^<��W��^�3?Y&A��1�UVxh��a*�u|M4�k��*q��M�7���`أ�@���|X�U�����߇~&x:����/�A�Y�:yn4=n^��;���3Ϧꖶvwv2@��~ ��?��ٻ��_�~%��Ե_��m(�v;��T��/�Rܗ�u-*����%���!-5�*����W����j�P���GԼ7�xg_����햩 �f$�%�����~�ʽԭ�9l� �'�A�C|B�>+|s���ė\j�.��u��!ȷK�V孬b^B[XZy6�)�V��F�(��>����<�ʸq�-x�Tr���/�?V�<�[+�F�N�eW�*o�֔2��&�2�gq'��3�+�\o�,�{��+�c1��[��Zؼ.c�ex�\]Z9}z9V'0���Z���!F�ҭ�Iq��v�Z�(�)"bfav��H�r�����K.�_������:W�_�~�O�/��V��]���N��1�K��vW�mŵ�2j��I��T�+��֒JV($5g�k�uq��Z�7K�f��Yb&7��R�+�� 4���)m�<�����W��k�/ x���5���{I״�鮮"��Z����2�lҕ@��ܼ�W��<.��2n*�.�qF#+�i`q��ܫ��:r���2�U8*U�Ua���ʤ��N�5�]�/�8,Mx/1�9�>�>ɲ�� ����r|t#Z�[�a+єeN� ������:�М�/5����=�?d-[K���[Q���V�I��Z��ms���K�tۋ�b�MJ������R�&�l��2��~�/�~!�v��v�y�����l1 ���H���[!a�\\�)���W�G����� ���w�E��@��A�cMK�w%�~�M��tm�CGe��%�EhSSf�4���ѿ`��O�~ xĒ��!��C����<�c,�.�g��6��U�\�7wK(���&pN}�.��n=� V�8�k�Y�*t���ll�`�{�)c�t��-y��J8���W�2�� �Ӎ�=�)�_��R�q�m�Oi\�/��[��+�iՒ�p�Y�U��,O59F�Z����/�KJҿ�5MWÖ�ďj%���b�1It�b=�ДWM��1�c����o�Z���!���n,�v������ލs_ڇ���;Z��:v������d��3��ȃR8##�ں����K�������h^_��7��.���o �߾�m���:��o�'�.���!��O]�Ҭ7P�U�I⧀?F����S�1�c��R�Φ6�q�bkӧxQ�pU}�&�q\��J h������ �L.W�[��W�ci��d�] �<��j�����q�Ƽ5�ԫ*x|mogv2�?��GwX�F�I0��9f� b��'8�^�e�S���6����7�,�Z����.D/(�C�=O� �����Y������τ'��]�����-z�Q���)�hE�{H�c�D�l$-џ���χ�5�/¾"�T�m*=j+}:�<P����q-��E2�Y�F�Bd�|�d�~�ρ<ż5��_<D���5C�ZU�S�J���<=9Ԕ�V�uk)*t(�9B2��������E.>�xw�\<��7�_���8�iQ�X\N�>2�ң�)ӎF�LEJ��Z�&��ᮭ�kZ�k�iw�]����kg��B�Us�F}�X���ޟ_ֿU<��߶%���)�o�n���4�;Of��}�_��YhV��$z��嵫;��c|Y�H~�_e������Okw6k:]��%��z��s4�Eyc��W�m�)=���Iiw2�q�&��>��G,��^�n���C�,�NQ��x��*4��r��x*��t*{:��& 5iΕzTjr�~��>'d�m>�19nM�40����J��Y�����e���4#t�9���IGSǼ'�_ƞ%�|%��Iy���V����h���{�\�k���<�Wq�\�8���H��|�Y��i����iНR�G��Mr�'W�\X-���1��`��� k����t���{�_�_�z�d�E�$O�͡�֗g�ٮo�SE��/���Oi�������%̷Io,J?���@bX`y?hoD��8�m�E�`o��5�6�uGR ��W���!�p�/9�x���َ;W C*��>3��4�\F�zu`�u�*w��*p�e﴿�/�#������þ �8�xg/����3�xs7�r��8��t��)bpXZ�j�*��|�X�eH�t�)~�j|1�k�ϋ�������?�0�_2;mJ����Ծ�[�Lw�r20��� ��~-�;��S�̇�O����|^��#�Xe� WL�^��H��ğdմ�-���w*N����5/�,��6���k���ex?��6��p�Wlw����hL\�ή8 �j<n��'��� �b�q�o�S�Ï�GU�}����x�]&����ZN� 燧mK��m.�syh�w���6�ch(t��O�� �~�s*�7�،څZ8ܿ�⡎x�DgU��ԩJt�j�V�4�)4�i~G�;�c���[��'����M�Wd8�Elψ2��(�t�X�>7xLf&�q��S.ļ�Z�_R��<4���<�{}�#��O�g�N��g�u�4y|���L~^�3��i�'�?h���|W��1���I�[_A����[k�>G[�[� +,3¯�}����I��[�_VӴ�Qɺԯ�l 1����`FIn2�q_��7���`q3�(��sQ���J���|������u�d��E�W���_�fYf+$̨�0���*a�`1��B����.v�J�ϙZ�m�c�5������ə�|B�G2<�>��!�Apym�2��H8#�%�4��?�ù��"���zq�F�m_6�@con�����%���YAa9ǘC9�?۫� W���>"�%�_�������w������A�ݿ�t��.�T�u�]>Y�!��H4}>{��.#D��ϊD����ٓ�����.x�_�&k]GF�L1x���ǟ&��hK���pM�����1�ԭ�Mj��m$��~��B�>�S��>=�s���x֟�%:ؚ)fRT�W��a�u\+� G�oJ�Z�9�!���c�0x���8�*�d����!P�>���e��Tid4r�u*��������G��B0�zP�Vs�X?�x �Y��� �m�S�~&�4�n�wc�[mJ��%�pVX�:�WpR�rC�S�C�/��E�|�%a��xU�&�s����k�h�3�7�4��$`$�@̤�r�����?lt���~�B��b���^��� .�� F�K�-�+�c��Y�}~�?�U�����/� ic�_��&�mG�6:����䵞;�O�K����akq7V�-��Q�*�y&�4�����xaŹ��3�i���18<�(��EW(�b�|��R�S��u�z�&�7�ܗ�}���2���k�?�|��p�>ο��R���B�g���e�6mZx�f*��<5�S�)�3�ק��)|2�տǏږ��HҠ�3�x�Z�֛eCc�xpk�k#L��(�+{s��Z�F��0�6����c��g�9�}�_��i�oß >-�}����E�ɠ^�&�t������e�4��'�T�xդ�yn����jzN�ce�h�����ܢIm}��Ayg<x4W�$R�\�zb��~�Y���A�Τ�X\&wF��;�X�K�i�c:���RnS�ڝ����s�k��O>��5�}C�xr�'�8V���^�25qrr��� XN5&��F7;��׀#Il��<�NG?�������>��������Is��em�|?�&��� ^ CI��T��5�5����m�0#���M��[O�Z����ZF��y���u��h3�wu$PD�FF�w�����|/�/���'�_�0A�xg��&��=��k�!�k����6\Gtt�־�Ӭ.%�5��:�$�'�pO�9Ǎ^2���#��p],��9�aVtr�51�?f��iӞ*�%��Ԕ!*�����@����O��p�K��p�e�����q4��ʨ��+��'��-b1����d�}Z�j��i6�N~� ��}� �.�$�=J���tC���->�w��������R��}�q��o�d'�?�r��:W+�;|U�M�Ax_M�7Ï麤�6�˩�}�!��Z �Q�� [Jr�q=���)�]"�ť����+}�� ,Mc�r���:z�<W�_�Gѫ����,߇!���<Er��9��О B*���9�q���Ԣ�RW����q�<��\W�̲�$���^g�����OZ��W���%9�R���Bqq��$������_��2��H|5�_�>�o#Vh��G��kXnXe :���n�Bspt}M�n�{w�w➑��v���F|K��G�u�"��[��+����m6��Y�#�>�.�����P|��1�ه���ψ��Zo��H�=ž�m�?D�5[-u;�X���b]U�=2)Mݦ�ms.��������7���Wo�/�~ �еxWʸDĶ:��u��5K)[�Y�����%����/�X� x�x�K�OR2�Ns��l"�[���8�M^��'J\�2��K�׆�a�Г�8o��X�⌣����VoF��f���c1�gMb(`��<:������P�Zuc�?�o8�BA���q�;t��DZ�|��&���z���U��h��}��z��������Iuu4�?GX�wI,��F�#������Z]_G����5Mv�-�U>����í�����ء#�Q|s� ���g���T����a�/��+�� �q'���8���nu� �VH`HltȤH�M<\/�ޗ�����)�!F�?ig*���)��������굶��*���3q���<g��xk�if��g���Y�j�}:��jyNR�"�+IJ*Z4�>jҊ\�����k���?�x������-����_��ڍ��}rN�m�%����^d7%�vέ�S��K�3�XxkE��Is ��w��o�{�E�-m/K��p�]Yj�=����'���I?�/�}~��_��S��� mo����m�Z�o�~��_�-Աv���R�w����+a5�����O�¾"c2�Ø�,� �����)JrSo�ME���*R�yӚv��3�_ѓ���$�����F㼃-��p�z��`�\�Y�K*8���p��U�6�aЦ�9T����?�?��a��1x��)�N��6O �z��?`��+_ e��k+ :�WY5������f�L1ư*M�~$��y�1�G�G�����m5Mg�w�����g"̶ƻ����q*d��{�w7ٞ�A&˄�4�g��V_��z$����Eqo�k���r�O��C��=N�MN��Y0di4�e��FR0����jΡy���Z�����{�_O-����č,�773�<�J�$�����Y�$��x���a�n-���Yc��HM�Pu%RrQs�Y����TnU�����?G���5��i��nj�"�F'*�Qʧ�W�'.��}k3�S�e�(Q�d����)µZ��C��,���d��Β���9�����IEz�S�t��4��):��X�Z6Sү]x��7�o��V�0b��.���y�~U�Ee*%5RTiJ��r�5�&���� ���YУ:��T�(Jj�Zn.J�5�q9��99?��M����(��\���3����xS�į�ox��^' ���W��-������܊ਬ1\62������Q�NTqiפ�ٸU��������x�2�c��lnv硋�KFV�sR� �Vz����/�Z���� ㏈�6�G��Q��B�h_�;˜��1���(���apT����j��:�{�N�c�V����pYu���x\-���xzXj1oV�*0�4�V��SgD����?�Z����wC��\�א���\�IѰ�G�5�:��Q�MkZK����VФ�A&��|P���"m>�Z�ѣJ1 J��+�h�c��:2��3,�Bw硇�b(Q�՟5:U# ]h�tq��4�K�d�Nc��gC��px��y_4}�\E�)��$��Z�O<�2�=ĒM4�^I�����c�wf$�19$�I�CE��m��m��ն�m�o�ꤒI$�I$��KD�Z$��(��C?�}=�(�� (��?��PK粐\����html/images/ring.gifnu�[���GIF89a||���Ÿ���ؖ��� ������W*�R/ܜ�ͯӧ����L4�H8�Ȫ�q�h�Ͱ֥9F�D;�����A�?>�B_$�P0��e �]&1�P8�G��� ������y�n���� �E:W�*I�6�ú��v�f� ۞�j'�[�xr�����-U�,||E�@�pH,�Ȥr�l:�ШtJ�Z�ؐɤ��v��x�u�!�z������C�|��A�z���?">)(>"= :l�F&#))< f' 176/..+**554�����*��/661 Z9r�&�R:?v?�&21���483,-�-$$%�%��%���cA���Pqk�9h��?x�v$Ď <�\��c�!b�Z���Z�k��A�r��ɳ'���4�,x��.��@��v��BG�PX�P��T�p)�^>~ ~��۷pa�l`3�B��ō�H�`Ň=rp� $ <�aB�^̘Q/_M�k㊎��&]}w7P�p��z`���� rH���W��ԭ`���PH�v��>�R؇o�4j ���`�G�[ȉ�+y�`�6Za}�+`�ti�\��?�ԑ@� ��v.�� 0A<��S�w�`0@%��A9��:+�(ƣb<�ɳ�A�6\�7ܠ�;8�4�1lc��Q4@5w0B ��`BȐNWb)�Zp� ,���RI @�Bia�9�"�P�|�|���\P�#p�A��4U�n6�裐F*餔Vj饘>ѝ`Ё��¨�^R꩗|`A<tp��K�T�����i?��:�K�6Т̱��xCX6�� ���PX��<�f��" B5>�a{"�SKX��@�q,n�Aw�5��v��`�2��4�(�m�&h�%?��fJ���K��OM�U@��7m��it1 �@D!�o_���u`�� �rØcl":�AY�xF��;�\[>�TS?$(�1���d@ƼF�m�X�QfY.4�`�Y�H�\NC�-�N�5�]a��/8��` �Hőp�zl+7�"Y��rA���h<�P����v6.�op��FT�a"$�92�+qf0���̝���@�@f��p~��r�PG��>$c�>�@IQ��&N��d�ړpW-�s�^� U�m [Hh�ì�v;�Shz��!�W��p�(�y�c �j����H�@ v0Z"�z��`�\@��@0V�(L!�t@��%.�+l � �B��4XM�@��H�"�HL�5�@L�?��ăXq<� �H � ���-, �.��Q�@U��"�~�` v�@~����*�y�@c<�k�&��yp��?(�X�:�6��.H)x�ѩ�Ad�dD<�s��Q�z�DI��0���������HƲ��Pj`Z?�QoF�mY09@E�С|��B�:�Ŏv�E� �8Q#_�i \��(@���bⷁ�-`f+�����z }b������AP$�!7���YB]���G�k��,�8�ŮggI�B�� �w!P�|�P���K�����$�&p�l�P�$j_k �g��Ih���ض��dy1@Bj���(�)PAP$�0���9pH"ℍg�sn���Iή;��i`���,�|1`�D�U���7&�90�%��Eqb�T�Eur��+�Ӽ@n��iD4�-�� H���2е��l���OO0;��X��Nv� �e ��y@�5h 2�M�[9���$r��K^�cU�d�����p��U�A������f�{q�Ӹ�<��ѕ.ۨk�q�}Z�: ̓Aj�Tw岗l���e�[9�!-5z�� �7 �J�ȡY�j4�=�S�Ό3���rQ���-w����@����۽��e��G&м���u��^K�vҦ�T�;����ڟ��([�N_�;ڊVc`�u� �T�3�p];2�������lj�Rio@�j���/�%+�{_�<҃8��@�I��:��^���=z�c3�EQ��,�f�(X�)����K��h�*F�����f0�r�+! =��,�AC�P ���Е ��;`Ml@��,f��قn �_��ɬ�<K��.*��c Bd� 9�d��N�,yI)���b�( ��i��&xC �Q��S$ @�R���*@�p(O{:�%�P�=2V���n�QS�FNB �0��e�5���0���gN���8Ϲ�w�s������y�Q� �"'9 �`�DMI�E�B��E';�A<�~�S� e(�M����������p���SHEq��a�7����>҃\��z��@���46��4�� W^Dh����}��r�P"û� ��{+��))q��ۆ8T�(�{�S�@I���p!e�Y�o����h}�L�j��z��V�Rۖ �������Y����o1�d1�_� ӎ<��NЙA��:�$c�B�?�S]@�З�N 1q&U+��d0ϴ}K�`M�=��?�@���j���U��P�/�q2 "�k�7y�(��2O� �"+aV"�M��"��Y*R/1"k��%�7q�>�$��&��g���&+�sh�=51ia/��I�%8'��&A�&)��<��%d6�.�Tfvf��=��=��Y�bN��/ ��!"!�\�>�O`)�K�Q/�=)u15����7q�5XSgQ�Q0A��Ňؠ `31�QPe�R��7�'vU�C/&g]�>� R���W��=�����3d�Q1>�19�\�q�1���O&SFq2�#X�E�w�k�a:��X�C���hf>SƘb*�̡�1��1ev3X��<TR�0�1:���3�pu1?�*֏�H_�/E�9%c4�7Z#V��; ��i�fB6YL�s%�iS9@S�H &cJ�LA��_�H$v <�:��V-Ab�C;K6[�U44qUi2q�]ē 9V=H�p:}X8���8bcf���_x�\7Y�#��:&�18�Q���e^�5��$VP�w�lAUn�>��M���iX�_:�Z|"V�5��;1�3@#4lٖIVUp�;e���P#5|b��5u�a^C�5���\�_lY��`�q]�95z3*`�2c��1��y�%;h�b�I4��6b������7 p�P�c����)���4��s�b��"��5���E�P`x�iab`�8�R��Y!����4XI��[`��X�V3��W���5)��C�3c/ Z �F�5)�3;`\�PT�8��������Y��dXa<8R#!�� U��V'�5Jٙh&2 V��������bE��XZ�$:Ai|�$aK�����0� V;��ynƘz�S�S��QO�I$�+7� ߉�#W$�f���X��;N�;�&>7�t�7�n�0���uT��3�Wh���39���WkX2�5e�pi�ac.�<�Q�#Ѓ�h"��R.�1GC��32TɌ !��3v�cO�2)ް0)�0�p�hh��(u���Rф��[(��5�}?�ZO��^!�d٧~�.KhP�jP�6i��\pkw6�����(�AX� .�Fi���Mi�6 �>�k�Ri�5!v蚕M�d��!�4h�D����BN�N�TN�b@ԦN"9~�tc���" B?�0j����F��1,K4k��%�7 <�k� �D�6?�7�DK�4%�Z#��K�T>�4#��g|���i$�C���r&�0KO�l�(�?�g,��,�R#VBL�$~�T��W T�J;�H�d Pn}�{�V��I|�^Pz �q��)�g ���gd��q0�z�E�`l�?�P����KoG7'"@pvp����rR �F�g{>�* GtTGy�{�S�Gy�H�y �'as��)jH�����x�*@H�+(��w#9�D� ETtEV�E\� 2hPWF��_�Fe�I��C���۾����;�8;PK粐\���O@O@html/images/smallliz.jpgnu�[������JFIF��C��C����"�� ���}!1AQa"q2���#B��R��$3br� %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������ ���w!1AQaq"2�B���� #3R�br� $4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz�����������������������������������������������������������������������?�.������Q�D�ڿئH��G �B��>��NB�7X�`W���'n1����3�o�o4�|�W�6˵ ,��v�@�?{����#8n��ũMyp�f�v�78�9�F2?�+����x��1��3�,���u��RW_*Mꛓ٫+�����^����6�2��h�����Jr�|��ͻ�٥���S4E�^r���M�>��l�Ea-��_Cu5��~Y-�<�~O(FCG;r �-R=+J�me�8�"���sD�~Y��s�$7�UA�Ic�| �n��6�2\��l�4)?�����F�X{1[t%�� �6Y����,����j�9J 5�)s{���i+J�o�~���gF���W�&��h���j�r�D�v��|+�-^mE!��2Z+qԮ�2 [$�J��9'�_L|)������ $ y�Hf7)�bo=Y�㪶!`n��V�S��A�~��s�)thVQ.��\E�p�J�3��yl�I«2�9 �?�^��|?�,u GW��rF��r�¡���8ԄN0 ���W��&I��R�`��[�֥�}�8�:����������O�r��q�p�&e��ֱ�ӣJjMԛ�t�P�oGtݚ�ꏚ�iړ�i��Z�f�� ���hD�\e �vE~����p����-�焴�[I��.o�X[���&r]�rY˞���9<�f�U~"����Y��܈�4 �3��p2�FH;�p{�g�C�&�� jkw�H,n��ە�<��W:���� tp�|�/\3�a#�c��,Mz���.���*����([�1�Q��~G��E�0�^]��N�z�K_�r�����Y*�(�݅��_ex�����t��o�|@acl�TH"��W���ȑoV�d�t�?K�.o���]� ���������+�4�u�\�X�.���;L6VB�z�fi.��/n�O���gJ�����T�h���t"�b^�AB�s�ۚ.�*�\����)J���^Όӌ�6�b���Wm�{ߏ�/ x?ö�k���h�X��Q.n�i�&��q��A?���[�N�}�x�F��:χ5Ym�d���?+�%�T�H�|��@2:��\��K}>X��m��"����f�V�d��V��K*e��f/�Hrli�o��y?�����$��|����z�ޙ�~]�a)V��,�U�^�Z��+F���J��\��Ӌ�����̛�6G�fYW�p�~�F�U��|�Wj�iMI4��z�՞�՟�=��T�df�Sym#!�bD�;���aI<~��ouK�y~"�;c�����F9�_)i0x�Ʒ���+Yi9��Af�Z�e�)��V B��x�+��[���G��6�Z� ,�h�V̐�9Tyd9�|n;���<6ѭ����Ⱚ\��)N���Q�� :�벿T�8��[���,�7���ԣ�*3��{E�;k'{i嗫�S���W��t�f [@2��h��`I;���̍� �x#<����Ѻ�)��Yq.���&�E�u� ��u+&����ߎ���=�ե��Y�L�l"�F�����gH�0/�~����ѿeώ3]cA�ocm��O,�d��<��RE���B�=����⌞+���4b�^�5z��uN>ʬ����V�*������ ���e��N"�"��������*�Z�ʽ�~@x'�2隤�f��E�نPcG�����y���7�j6�Xnfd$lpz�������^��H~�xz�K�][^E�3X�p���2�27g�������m�����TʡW�c;GbH��1�A��u�6�`*W�6%��\�j���7Eg���G�<J�;a��n}�a�p��yn{�ԥ��'{sP�.����4�'g}-g���&�s�G�\��l�O2;f`ѕ!@' � cֲ�ٌ��%W!=�����}_Ś �V�$�tfLy� ���*��͜�u�|������@�*V�8�G{���-,����0��Ԫ�E%��6�-T.����{�^#e~!�i���f,F#���qp�u��)��s��=�{F�n4�i:��<�{jP�̭ī�'�Hny�����c��2ҵ���s�]�6� .3�%s!{�����3�K�^�>uk[��MN=�ww�"�+�\�)'�}k�]��CA�nY}��+y�%2�O䑼L�V10rA_��:x��� 5)b(T�uyTa8�N�[sO�M#g��C�r�y�3-�T��|1�j�*%�&�y�S�r��R{�9�\���K�^�XŸ#���M�[v���8�x���i�4Ė�t��\��c�d�2�ʼn�N: �O�1�K ou�b����&2�Wi�1�I�+�a���&�4�1�9��>��1s,` ��8�r� �=�_O*�R��K9��Ξ'��0��ګ+5v�����%����d�?yR�I�&�מ��d����~���/��qOkqb�#3�(i����`:���G^�E�*��^�e�ڜ�y,�[�"�q&�C�,BB��UY �e�8L`n�Sa�[�ͩ�j���4��t�"Fwz���t��Z�Ư�]j�ڼ)qqq5��.��E�煈!r�ـs��M�+�̱�|K��ҧZ��RPJQ��-xC�^-+�-_.���|��TQ�c�Ҩ��xʧ*vpMh����{��-C�m�?K�TԁK�_Y�W�G�����o��T��m|=5�֡�m��K��K..4��Z�1n��K<����n1����������z����72[}�F���9X�T<�?7���I�qm����]���M*�E;;�k�U`�I$���y�K��`��p8 ��T�Ab��T'�'VR�3�`����c��U�5�����8KE�S�(7I���[�^EK�?�5oi���_�֜���∤qI�>P��2������%<i⧑� ��G�͜��/�*�igg�=䪦��W�|-M/�&��4�w ސ�e�+P6xr�%A<t�a���:�'�}�-C_�&��ͬ�2����s�`!yL��ѐq|�ps��a�V�.#��¸�c��a�U�%E*q�h�B��(8�^J\�D~q��xG�����X�����N�u�[NJ�S~��)6�0>�1�G����-�x��$�-��/$�D�mk`����v�J�'ϳ�5�_���6�������nK�4Z�Mqh��!2C�(A0��j�}/�^!�5��Ӡ���?�I�r�̨���I�2�1b�����]�+�CM�|V�jVm�j:@���S�1�*�s1;�5��E�apo �e�V��E�f��SV�9��Mݴ���ug�qn�/�f����b�W���u���IJ�v�S�[��I/u~U�8�/�� �l� �=�Ky慺����m���2Kes�8���|G�{L����O[x�#���I��0���m�Q��1�1bh��%����^K�Οf����h������-�aq��;�&�vRi"�ȁBI�$lT�^�u��p��������3���X���'�j��FK��\��Kng.��;�~��,�K/OO���^k RO�<��朽�{�9�)+)j����/�oxJ��%|?�i�M9[�<�L�����"�9�K�uV�.�~Ox�J�5���6�qc������//ʕЖ�����_��Ə�����Fh� |G�}��������I.-沲����a6�q�/&�D�ie��l�^P��ʟ�7�����5�Ǎ�ox�]j̷%�[�t������� ./�ݘ���c � �`rL�'�g�؊���4��_ �9Ԕ��K�M'd֫C��>�����q=j�e��^>/�G��6�-����������[���t�F�r\���鬌>t2ݡF�&�D�����p �Fk����Ǿ�n4���y,ri���UY>��mv$-K�9 ����?i�ُ@�G��S�����y���/���%�m��@�-o���ӣ�g�g�8���yQw��;�'\���K�+�yC#��F�xb�[�a�$ �#��㰵��F\��^|��]��2��ߥ�bp��~-p�`\�W�Ӣ�5i:�����K��=N�\��j��}Q��(�le��t�sT��o�%�b'vv�ۂz�i�I|:�e���J�yV�6?��[����O�/�:͟��oo&�d7�@d�3�[�VA(C���Td�Kd��x�F��\�geԯ��˸Yc2�!� V*�-��8��<[��r����.p��K ��9b�W��於��n�4_���\�yR��8�)ӒR�+甜�6�om4K��Ǜ��������{Ս6a2r��9ޠ���u���N�Y��ŝ�����ж�HS��3��3w�����y�=E�i+yy�5����V�raie�A\n��u���E�a�!��(.�/���f �Iq�F �'������r��.t�[ (��m��>{5t��ݣ��?�2>-�sj_X�Υ' �Gۿ+���g�j�eh�{Guie_4E�#��?2�*��lÐ+��ºv� ��Ol_cG�����O�dr=���_G�xR���R{�w!�!�I|�����8���6Wg�Giw�j:\��O=����G�Us��S8b�<ey�<��ey��aa�����H�՝�ߺ���[;3ڥ[���n��>gʯ��U�ﭻz����xV��Ҥ�t��M�l2c����6�b 9"DPH�Z�8� ⛿&����Y;]V})��i�2�$�q�S�N� �!�_�~��R��k/>T�k[�i�?��4�)v��8���7c�1�@���=Z�C����ScB�_�i��\���%�dPs�f`岂��\NY���)}RT��y:�{X��&���o�9s.��p�lڪ��T�Rp�"2��M;�B2���ݛ��nz]�����.��}J��PMf��-��^&�vImzʃ��(H#vs���_�ho�^?�M3�7ZDp[��}�y^M�:w��Ѭl�D���8�5�~�,S�6� ��n���X�m�x�EȍSr�uH `�H2����x�����t��|�LK��~�,��-ke����~f�ԒÊ���b�yN+F�I�Nud��ڻ�6彯��6�~�j���mL�����8�� ���h'KSN����5$⹒���(�E�E���ivzl-�i�)�l@$��P �ֻ���,�́U�}� �8���#��<�Hʎ2OJ�j�)�c��o4�ռ�K�c��ڟ�#�����>�o�ZC�l��#$�������(ȯ�!��?n_��ֿ�E�ցmu>�o��k�j�5����P���3[P1���8�5y������*Xl.�;�ί�F�J�Ҽ�e�}^����)�A���xʮ�d�YO����T�N}ye{E=SV_���3��_�U�_��uw����ݿ�"�%t�5��1�}5�HF_�V�"V�Q8S���!�����,�[�x��� x���{{����a���U��K�l^��^8�e�gYE~g�0�G�|k�L���V��K��q_��>�%ȱK}gN��o5;�%���PZIS��ߣ?�·�xW�qj������TԵN���ږ�5[k;X|2�L����FF��Ά/.H6�fP̕�%�[����a�w�\���m_�(�;�S��.�F]��W�I,.KG+�6Q� ��FN1�j��7)/y+.{+��^7��8<mk�f�B�<k�_x��:�<�Šh:kD���5X!1}��Xm�$�#66�;��Oⶻ���i� �>���}v�J�RB�i�k95 $��ݖ(��<�qn��@�Ef�b�_�1}c�ş������O��@�uYJ����n$��HR_�ų���W�E��Ï��z6��|7����-"��5��J� k�1QD`X�vvbd\������s,]�<���Z�cSS��éƵLUkS�)(E˚P\�j\�W�����_�甸O7y�[���}C�+���ex:ѕH�Q�]Z��.G7UԽ6Ҝ`����^�]|7�{uu�Ol�&�SJky�F��\Km#��0��J��G��~�|Y����G�}h��ms�����A�v��8��A�����#_�.��1��?�� ��K�F�Gד_i�[�,NY�m��i�ά�7-Y��wk���c�Ɗ������X�ZMB��6e���\yJ�;C�lA�&���U2�/�)c���xP�Vt�%S ՝NyJ1\�R�m^�-F�4iey��R��c!��r�*�cNRxi�)B��]�T���%Λ���o�������j�]]��9�x�q�MԱ*�H�`I��8n�=k�6�kag��sk|$zj@��x�so0�Q�U#,��?'?%�>,�5!0�P��Y��5���&��%����C��'@�dTPjI ����m@\$v���ط��AT��1��`<;�a��b�[^JjS�:\�{�J��msk��i�'��-���"5�F)�(��m$��"Փz���{�W�%ѵ�Z�~��'pc6ڇ�.7�_�l1 �1�@�R3�מ���z�ݪ�Zj4w���P/wk3pp��/�{�(��h�SK-g�a�L$��`�wc��}k���N=;���^w�u�Mr�F@Qae*�+/@={��xLnIR3��%%Nߍ�ɹ6�d�}5v[�M|�� �+�ŵ}b�w��W3�9�}|1mm�]v�G�#��K�X�֥H&U���1e�r8��|\��I4�;m��[[��E���(\���$`g<���ėw����}?��Ɓ�b�U�-��zFO�^��5?� ��>��b�nKy�����Ub3���}��C7̜���uê�����BIE��������X�M����r�����d�葧��5�-�x�E�u�C�ѾשEb�Xجr�]K����V*cEPh�q��>?э��0A5�j��j�-�q��/�ч ���r7� O��>x__�v���n�g}c�h��&�4��$�&T9X��I��rA��<U��n�ݠ�ڭ,ΛZ6e����9�q�W�C �a~�S6����U�d��jr�I�vr�z�����w�>J��8�:y�O-u/����GO�<��9*�vP���Rm6Ȿ�X�</����b��9��� ���,�U���Α��>V����f�qb�C���su��=����O]�ц���]S�����6h�*���z��WM°�[�g�H�8��u�?������=��0�i�;[��l�K�U�Q�����!n�i�kRٗ+�^B2OЗ�~|��t�/ŽR���]Я<'��ѡy/,���N�|e%ů����[j�>"�"�o-�>j����3�e�%L]w��9�r���9�u�k���q��x���~&�KOsVNJ�կ�i�]���/�/ٟ����h|'�3F���k��}��S {�v�$��+3�S��Q�s�(�M���������Xt�)��B�?������#��Ӂ_���� <;�C�����Lj~�x�|M����i���3.��] ,b�g�l��{�B�f��b��k�"S�o����?iI�}��[���S�qi�i�7/c%�� �N3�����\#��ӥC�T���c�V+I6���wzY\��qVw���c���r�Bu���EѫV.s巴QPz�A�}RM~�Gw��c��u��s�yRIi�T�,띣:�ǽrt-+� ��{���ާ��iڤ�Z\������v+n;T���O[��^�^��Y#-�jvZ�]B����.������۫]<�+� <���6�D�ʛd�F��'`���H �֥U�X� ��<3i$��̜'�zo��������[���q�^5�x�b!M�[ÖQq�'Ȝ��J��KGc�f����#�}�ۿ���;� x����)#���市�g+�����lG2D���F�N��!K�3X�:d��9'H���6>�jdtSj�۶���a������Ko�^�;�g��g�h�]�xD\��5䊊L��\כ��%J�Ј��S�>M+@��[X�����ɻ���xa��h>[ȂO7 ���R3�dW��'���mZ�}.g��j��hR�����[R�T���,�������<S��7�{�1�������4�kMʜ�%Ju'Z���Ua��E�u�#�:ߌ-u}Ve��L��a_1�$�pNG��5��ou�_�m'�c�Z�ˑ�p��y8'z����w�����.a�����mB`��9�.����b���5{�^��x�k[@�m�1 ݤ��ַDqq0f.�ؠ2���)O$^.�:�T�,�p��i��rN-^7�j�ҽ�ѣ���*���֊��I�%YΚ�ķ�(6�I���&�п�a�%�O� �-e�Vc|Lqyp8P~���=0Gֽ?���:T�h��, ����"�%�bUbkvٕ�X;���8�|C�6ږ�rn-%��tx��)�|��y��+e�� ����}x��H,o��]?Sӏ�u�$rr����p�~ )MU����r��t���劚|�Z��|��<���X\UJ��V1M����-m����E��w�[���c1��7fY|��x�O�l���x�}��{l5q}�� "^d�p�Co�ĝ���9�הi1G�� ij��Ė�%�I�dBeS#����f�c��sJ�H��(o!��$����@S#�o��n�c9�� ������'���O�mӿ;�o�sJ\�m�+�5t��Y�L6[?oI{ޑ��s����D�ӻ�O��>���G�x^���D�zrO6yv�}��&H��|Ǔ#������a��D�, �?֤���%����qڽ����47�ե��5���8���Dڀ�n[vwp;�~i�����&}R��M6��KȢ�oo�q�RM0��� �B�Sq6�Fy[:��4s:�<$_%>[Ɯ�g��Y��\ڣ���cs,$q�#B3I.f�u��掫]�����_�����{º��=-~.�K�(|C��o�|�M�<S�K� ��� ���dfK�;�sO�����DV��Z~��I��_�����[��7�~x[\��[���� <? �:���?_��H�u��R-3N��(�as-�W�����S����<s��O�E�{��n�R��_F�5?x�;�f��J�~|��Z^�<m�)$=PL֏�|_����|<�N��x��:lw:��ե�����F�5�,���n����7^4�Ĺ/����U:�q�u!g)�Ž����v���������+:�����nv��Q�]6�v���oS���/�%��m?�w��?��|b�G�|-a��c������5���P�o�ӵm=�K�Pb�]?H��]�h�]����B���cO�&/x��??jx�\���|�S��P�T���Mi�j^���u�8n��]+É.�ڀ*���A�?�G�%�[Wִ-��=��֣��ajZ�ԎCE�kV�$�c�N�f�7ى�[�*v��K�oZ�����Ax��j7z�1\@�7��4���㲞��K��,mRd�a��$�����,~QMUq�*X����ʃm%��|ܾ��~����*1������Q��W�-�J�T�w��%mn��o�w� ŦM��������OA������Occ�oxo��G0��K�xz=6 I�� fڒ@�\�.��ݯ�?�������?�OǶ��m��4 ��p�g�Zl(����6�%�u[ n����%�?�� c�<Y�����?��x�=�&���f��w~#��|-6��Ƌ��A�^_܆.t4���ݸ������8��������uo�C�>U����7!$���MV�[�N�� t����G �E|vk��8�p����wus%{IZN���֗G��t�c$��Ue��ys-%��M�t�w�&��_��|e�s��M'���k�/������xf��>3�����J̀[�X�]��D����og�G{rfkx���;� ��^����; ����Yi�ǭ�iwb�Kۆ���ӑ�͚[v��'��h�T��W��o�����Gԡ�>��i���wsj�M?W���d����4�ɖI�yM*�'������Z���4�[�V��D���E�n���}Af�4F�D)�����q��^��W�p��-�ݾe��٦�6֝O��8ˋ�Y����a�a2�]�Ӥ㇣��`�' 2Q�QJ<˙��Z��?��bO��$z����[N�֕�}�tjӼA3�@/�˧γ�v��4R�*\����va�j^���i�5����-��%���� ���J#q@��_' �9�_ ~#�B;F_^�Z-֗�j��_��ê�#M�K��G�@�]�Vh��xm�f������o��ڍ��X�-���vzM�3�k=N�0O+\$R�ʄ�pq�xܖ�ӚQ��̽�-U��[����Z�ל�������Yfu_ R3y�"�E���{���/���oM�6�m�}�5�W�3�dU&����$j9�l.̎=���Ou�!�[���Q���u�bc(��o ��c�z�����|�$�>�r� �_]j0YN���v���K�c���3|�-�|�W��C}KS��N��t�#r��j&�I�)��$K�A�(������>˖u�B��#�VM�F�$�y���I;���P<&�'�(qY�K^��JT��精#�'b��~>d�u#��=�մQ}%�����k=���+1%VM�yP��#��u�R�ŝM���W���MF�O�Z��G��Z��3)��e�p�v�;�ڥO�����a������8ѧ����$R t^)�N�����#k�c�iL�3�萤&��<�+����W�X��.�*TgCUʓ�Ez���s��FVPr�T���s��c3�����c)�(�T�R��T!-y\�=�d��~�A�[o h@�m�""i�[�\�����t�lL5��[� �d�\��Q�G�@��B�}ZX�O2�=��j֒J��)�bG�QBT��+��)k�i��><]oSӓO��эܷG��S�ۆ�4�4F���P]��}I�t�h�>#����������#��5�Cql�5��eLLb��)s���G#�d�Fa�V�-'%��[���~�#(٫|RWI���7��̯2�O���_����>\��rT�x��g(���.�]I_�������~ ��q��v�Z%ŭ�^�jH�g����SU����i���Q��iڥ��M�.og#[�5K�,m�H�-��$���2h�&�6輹/��0#aMoj�mB7���%���;�4�k���{j���w!�O2��nŞ&�U�4� i��]���jVp����[��5e� �k{K�ѥ�H�r?�D����2��N8|m�jV�9^�l���h�j�������a0��d50zҋ~�PSi�,t����'��?i��" BkDKvw�E����}�i4��+�/�o��Kk����H�of4������ h������Ӎ\�9r/g�D��YY�F�Y���(�/ xV[�]k~7��M� {�WR��f�4�,�ia���kȡ��I���HayZBF܀+��>)|/A�kŃG�]�-%���qd�Bm�{�]��G�m�eN;�x�C��e��bg��*����J1vp�,R�m;o��lC7�aa:Pº�Tp�!R��j�m�yn�{'��Zxn�O�2�R�J��^xkK�֩0��"U�K�q�jR(B�Ta�nRد����_����'�дo��O�҅���O}�_Y�Z����CbKx�"�*N�_J�S��_���4$|<����ӧ������х�g������O�5�8��f_��7��A�Ch�� >$Š��L�U���n_T���Хޛs�XY��i��1�[I��@)i�T�r�bx�/�ѕ,]V�T�U���̞ѼRt�{��א�>�x;���S�jUh`�V�{$۽z��|�E��i���|s��yqw���>3��.%J��kki�vĒ�snd�V�P��%#b�l[���m��~���j�>\á^�/Q�G�涳�L�#� �����1����k���H������~�[��}3��뫧Z���V��0���Kɭ��ij;I$sKLfC(��o�O�y�N�K��4���O<��V�g+;F���b,�+?�,�vr��]|�T�K��PV�^j������w�9V����:�+є��k�Q�������i��NN.�Vӧ�ߵ?��|T�����V��!����x�P2x3�:e��`�兎�n�i���Gx���$�[�E;}g�����"�W��{40k쯵�'Q��<A��[j�}z�����o���XD���˧���/p"�)4��{���Ss�����O��&x6�#�G�6���֛y-ƕ�Ǝ�����5��&H��_�_*�����E�&��K�����5��M���6�QGkqn��ZJ�QYވ������a+�(�9i�����V���F����Y])7��,S��yp�;_[ �X8��-:�u=���|�p}�t{�?d�#�Z��.��5���ص{M_X��o쯃�\���4-��Z�q<q�1����`Bߛ�A�x���v��j�]�:LJ�e��L�+�A=�ɘƠ֬�O���LB�z'�;�^"�d����oO�[Zj�K�[�Oj��za���5����Fg�L2F]�LĨ����T�G�ƾ���7��v�jL꺅�Μ�W����ż��l\� �x̓�e�:�|d��eNJ7�鹹K�5ݫ^�~�៊Q�6s�$ǹ唹V/�d�a�hNP�!8�W�oG����p��k�f��������z��lH� ��-�����z��7�u�[�B�&�5�A���2Lr��RL���:��g�w�|c�u���H�� ��3���ic}�m%�a�$���v!Df�>���'�Oڗ�~ �4[/�6�M�$[y&�Pe��0 P�|�� �\?���Ȝd����55©^>�aR.��9��4�J�L�c<3�w!�g�p���0��:�R������N�\�MMM4ޜ�o[�>�ia���Q��K[KX>�~��7�C�e�6)y ��_T|X��~�J��- ����'�3�G�/�,�1F��%��X���~o��^��x��!���V��k�7R��iok`��^��L-\H�3$�8����p�����z�ݻ�Z�Z�;n��u��H<�K}�C��ˏ �2���p��enM��u�S���`�F�"����Rը4�w�ӕ��Z�Q>O�,���(��E�(`e��-)K�Q��[o%Q���j+Kݙ߶?�xO[�#qk�i_��-�X��x�cW�ѢM��Y�ھ>յ��`<|O�xgU����h,폇�>��i�a��_K�1���缊�2f�K�)� ���-�~���?Zj�-�]_�ڣB�HZI��� �WY�U��[D�"��(�Y�o����OԖ������C�x�{�]�M�R�]�ED�����͞[2)�.&e��̻����'��K�8[ N��N�.R�|C��Q�+ɷ6�j�k}v�Ux��<A�?bro��s+l�~mT�l���F?j�������x�S��e�� &�n�]6���I�i�7�iy������kWIq�I{h�725���h�"��w~H|x�7��kz�.��j���K=�1ݛk�Q���Q�Z^���?h�F�o�ʗ"�|l?fύ���F���Ë�=,<#�m.�{Xt�H���ݙ$���{g"M�������?hs�_跾>�~��U<K��:v���Z6��u �Ju_.FtVr(P���&�,�"�cpYE�3S�o��+�RNt�*�J�7(���QM�/�)�3�3̿,��q˲�>&�><�0�+���b�`�B0�J5��Q;]]~"x������kٮ�f�y��Jf2\�E��{U�!��Vlm�$~��1��� �m5��-ռ0 � Kn�va��6���RӤ��l�1(�?,�x����~�Yj�&��,���m[My`������/.�w�R0wm���G�>N������u$�灵{�9$�m-4�]D}�����M��쨿�V�Y�$q�ϊ�&u �:�W�q�����R�U9>[S�&����n��Ri;�/��>�_�b2�8�*�ҧK0�iQ�[=�i����j��Wk��Nͫ$�}�¯�+/���wz_��1g�S^�l$�Weq��̉"y�c��v�FE��{��7?D���g-�˱n<qᇺ������c����D�-���H�6���l��6Y� [�#đi:����h�E�����+a��C�ź5�v��瓷b��x��g�nL��Z�N�Q�w��3(�ؗ��q����xc�U�,��LDc*M��.2mF�NIIm''gu%��>��qtj���9��a�_X�<"��*�V��� sFRJ�W�[��k�C�KKx��^.��Bhw֞.ӓ�O{7�wƐ]}�ݒ�F��yn������Y��l�m��d:�֓�CG�<E�Y��v�h�[y�eh����@���ݰK����~<�b�|u���g �A�/o!��'%����]]FK#��\FFk�|'�⧁��|��^#��_���:r1Z^E�G������<.��<��/4�Q�����"�5FW��Q�1v��5��Wg����k�x��pχp�3^��9�Uq��2�ɧ�v�����#�'�S��t��&��Β����4����K�kK50y�o���B��Y��"��O�����~��Oh�S2�u5�tۙ'�[H�Mvwl�t�����ڤ����+��� i��'� ��a�յi�������S�\Qd.�Qq��+�o٫� 7�U�!�m/�+�h\i��4�6�Vr��{xm�Rſ{0w���8�üeU3ib�!�n���N)BZ�9Ir����߈���f�'��U�a��8���s{)8ƊV�t�j�/&�����>!�3�nu���=� �+_A5��.�6����I��Z���A$-������[yCd~D~Ѿ,𧊾+O��S�tt���Z��;�;^��t��ɘ`gK�,\HPO�ܟ��9~տ?�%�X����4w>"�k�-��hU��Ff��'l|�rI=�����β<.�WQ/�I���5���� ���q#4��٧�*�� n"����<��ӧ�qu�3N �>YK�7��S�b��W3R���l����9��E_�s�,��X�:�1�ʧ%��'.d�S�p�~Y(��1t�,����Kw��x;���j�����D�`i$���Fv��Y��?{��^�O�����kmA��UY�X|�7� #w��8�+O����%��3ά%,I�ǜ�%T�6��~}[��n��薞%��xuh��G+9#�s�����\�r�9E8d��4g�͒�X���˥ӳQiE-�*Ot��̱�HW�bjҌ�bc�*RR�j�=ߕ�O�m���PK粐\T'O+��html/images/strike.gifnu�[���GIF89a�d���Y�`tH s=��嗼k2�d&`L'^A _-\�>�.7':�uΫuq3r��u��O��7��)�o-�a �L�H��Ӹ�vstkc[ͨ\��W�v%�lHGHB9+O=>1��F��@�Y�T�[&�Y&��F��]�q)�b�I(!%�c1nX,��xL" �8��K�{>�n:,�dE���pH,�Ȥr�l:��ht��Z�Xl�׃�r��Ƭ!|#���x�@L��U���h���f()6? >wYB ./=�L/�l�:/]0/6�M6 �8#4� � �)8 90\4 �O 5(8>8'808!_ !7>>7))5 [>�\�Xy(6��)��x�0<<"<#<�8 pxCQo�&j�XXc��d8�@Ĉ�tM��Q�E�o܈�r�L%A�e�/��#�.�$�5���� JQ�S�z���Q�Ȓ'�m� ���8'BB�$��X��Z��N�qF�n#I�G�0`����0J�t�<X0�$g�<����`@�p�a����h�� �6r�:th��P���� Z�9��!C� ;��ȐA�zt�@�Awg͞En�{r��e�X�Å 2vh8`��,0�������w����w�5��`:p�]��=hr��P�,���r�`�� *�� �PB�$\�!�h���P7��3�B^�� ���˽r� Ʒ�~;`��/h����`����%����RG��ԍH��7*7�)�y��,�P�� $�&�y��hb�!Nw���iȁw�����b�p��3l���� ��`�B��p" ��BF*�A�ݧ��@�*�p�b�)�t��\h�!�ޅ�"�3p�H 0�2!�p�&D�mC'�CN� )p�B�"��՚KE� ��PC?\b QC���>����/,]�C8�]�0�"��k�6>�/��2p�D�Hؐ�40`�5��Q<D���]@��V,���],b����B*�����HD���a��2r�El��~@�� <�&��µW(�9�U@��� 4QT!pa�=t!Bx@�#�`�7&[�O0ܴ4F�tkE D�ӏL�X}D ��my^(�K H�qJ}Q�p�P7��5� '$��4!�Ό�UY!P� �4d�����]8�bRC�af��V�% � ��k� u/���NN�)��`)�\��[nTU��z ��?��~����ͻRBH��Ah��s��HB1=�5�լ&A��w$��G�1L��p@�H�&8p܀�*�A�d�z��Kb DAEVr@��"R����Z�"7�S��]��l(C4ځ���$��C���vp��`�?͙�2��f���Z��M�`@���!H �B�)���4&����:$��x���B)�W���B2G�#�0�"<�,�I ��4�� ���ԍx5�_��N���d�J_��,ǚM$&=��kb�� � *Lw���",�2Q�d������\�M�����������"��(A)�ʈ_��J �7��S4(VY�yNU���a�X��8`bM�B�І:�_�Cel��]�����F8!7�*��B3��J�֕�K��(7v!�G,`d�`��P�ru��� [�| �a0��K��>�f���<��THEJ��� ���ʜ��`_=B*�h�@:�F���6�;�� �k�0ָ u�@��������W�(�B` �I�N{�5o�m���x� 'Y� N��^�tOA�0j�]�[b��x�sP����уT�+ �5F�\�֥n�k���o�T ��]����F 2c�DF>ddum����n����Y� ��x[;a9b��v�.Q�X�����I�P7<�^UslK�F|"���͇���T�#��^�e�]���P������ZS+ ?E�����%yB0X2�Sd�*��I N� Fz�h]��b���}���b�6'b��KwI"�AL�j���"�LP���홂�xO"�ED8���P��-�mCx�S���ZT�0X>�[7n���]J~�a�*���&^xP`3��4`�浵ӘLUP0��0`�`��n=�L���Mm|�l_�|�{^XǓw�7(���u�=QtO C�Z�Gd��.8F(��b�7�Ѥ��?�Yk������gC,�Ё p��,�Q��|�C�4:�!��S�hA>���DGeyA��l�[��A�x��9��� ��+nD�o�� �h9/���3���2����,�43�Y`�6>���@?Z��$�S)�����\}��ң�e�Y(V�~y�G]hP�b"[@�C�hY3XO�d O!U'S-�'����9; ��7�M��B'�����G��W\N�5H=��WW��Zt�4��F/2| D� Q�Prd�5]H<�bx�E}r�h��%(6r��7&ۤ�b���RgR&I �A�H�����(Cf��r��Gb9�B����tvr{��"�"�r#�t�"��"3�,~&^4$�r)uB'orL}�E; �B!��1,���Ld)�RKL�G�$Fd{��b,U�y�"y�wIZt+B,-�JprL3|PEH��uB�"�$M�b)�G��)�MXrN�B"�I,@%�$ 0 x�E��Dp��'+p5�+�4'o��TpEGf!,�gP u��M�`���@�7F���M�0 פn�a�y��)�q&�M��)�b�4�A��on�B-p�Ge�� P����-�_�h��-��!!�bB��¸��������8��X��x�ؘ�ڨ����bcj�7�Ts^��h��D�3}�cr�_�"�X%iYpS��\��0�T���UQ0�� \�wU�Q8�ZO�Rs�R�nB03�3)��sxCF�L�(p\v�U�0�#��P\]007����pW�UTb�"p@*"���9f@=@ i�#_!)�H�v����2)6��R �@�q�2E)b�XpeX)�2 )P0� yf���p ^o�U/0�7��J�U��9P�V9�0VY`�4���:@`>����Y@�I����66�C��R� �� �� ��bU���4�_�^@X�T`�iM32Ǡu%6 _��`!` P9� ��fU4/�S LE5��x7���Vf�W0�� 8�!��"3�Z�2� �R)��?��U7.Z�Z�cf�C�8�eI����U�c�V�եPb�\��G��Sc"����T��fP7���O�\@8_���Zj�6�65`��9�ؠ �g#a:�)�h � P]*f]��^RLu2_a��_�S#7�cwћ����x&RQa�Uj�u�J`V����aǀ3�\u7qU�9�����P5 �S4�����r!"�]�� �3T�vS6T:S��Z7*��i��H���-HeI���g2q06"Щ2���Q;3��N�c��q9�*Wc�:d�I樷e$�R�����-J9�� @f?�0�C�=u��c���f6dE� ��W��&4E@/� e�c9u�u�[�� ��X��$���;=`{��{�8�ej��c��N�E �c�:MH1i�1E��s��\�ғ�Лa��i���f�nQ�|бy�?�vs$k�g�s�="`L�;��S�� ���D15�� z�a�U�# 7�/pmFXa��y� �!@��e� �~�l���>X�_�s��<:��{bz;FQ �=���jd�jCγ[�%=ax1=z[� [@�fm��: =�AӃ���<�6i(q=�F��aAߦ��p�p��Sf�p���m�6��k;�����<��=`�aW�<�B6�i�A�q��{=�����g5�k�V�C=�Kϻ>����Q?��:`��&k*d���B�$\n�� �!l���k'|2��!m(����T 7l�F?�iE7GRD�Xa=�7�v�Vr�f�{@#��o�A��xs�O1�BE������i��k�i�q����C@���!�A���!7o�q@�A,'t�qn�s-�qeH�Ô�n7w�C� G$ cs�I�u��,@Gu0p�!E��iD�@��$h��I�Ɔa�A%Q� O�"@u����'s%�F*ǽ&Wo��`LH{��vZ$"��equ���2} 4},���/�*T�W���;�s�9ɅsR�ƾ�J�Ѿ��~�¤�E�ґnB�u/H'ktG��̱�$����)��vaW�g��L��BGRE�/�GV��x���L4���! �/�~��%�"�L�r�W@F.�M$�M�F�9�IH�+Q�=@%�lmҀ�+!"x���ޗ!�L��l|~D:������yˡb��++��1%\�+�q )�B$/{�w^�E)�t��(��*�8�'"K�)�7"�4#}�!%�K��m�*��(�`o-NG$~tL�$I�,}�{ErH�"��$��nr!P|�7x��&�B�M�|rK��u/�KO}q�rP��}ݧIi�'a�tIe�"2H*��`�~AR6`��z]ϙ#ԡ%Є��B�I�ĝJ��L�g~i�J8կ}��d~$pI�E�rF���tHD��X"}hQ��RE��Ԯ�/��}�d&~2ؓ���8�}M'��w�~�"�wH�ǁ���!L��%}̲!�/���{��J�$u��&$�L)�V"(�TD�zƄE�WH��!GE��(��/���B���{oB|n$c��5��t!�~�wێw�H��9xE�(N�G��/C�+�'�ROaۓ�5x#h�*��]����"$�͂��=��(��L�W�w�/]�J;�)�!Z����#;΄T�Ą#E��K�a�^{B�D�RKH^�Q,�Q}8�,��!�9�%�%p[x�Ȋ3݅VH��W�R�2�x�M�1*g��+�&2`"R�4��}x�I�r�,�2��@B�}< �D�z�B���=�A�v1m�brF�T"�4��)�wBŜO���D�G2�����/�) �Q�ü%#/��ttL�(�wBW����)XR��.aE0s0� J�OWQ%�D,�V`���¤�Ȍ�ȤL:M�-$�� �;B�-�B� Q��Ȥ�ʎ���Ro! ��;PK粐\��}jhtml/images/warning.gifnu�[���GIF89a((����nnn�����!�,((���p�H+�ͻ�`�)f�h���؆p�Y)�0M�0�=��u�������<��A����C6�\��Uh�u����-�Ң��4�7� {�~MzsK��p`�3�e���!�����|�y�q������ ���a������f�.��A�B�>1xu��e���{��wÃ���!��\ΟX��Ƚ�W?�����H������r��I����#+��� Đ;PK粐\���OO!html/man/TIFFFieldName.3tiff.htmlnu�[���<!-- Creator : groff version 1.21 --> <!-- CreationDate: Sun Jul 29 12:12:01 2012 --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <meta name="Content-Style" content="text/css"> <style type="text/css"> p { margin-top: 0; margin-bottom: 0; vertical-align: top } pre { margin-top: 0; margin-bottom: 0; vertical-align: top } table { margin-top: 0; margin-bottom: 0; vertical-align: top } h1 { text-align: center } </style> <title>TIFFFieldName</title> </head> <body> <h1 align="center">TIFFFieldName</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <h2>NAME <a name="NAME"></a> </h2> <p style="margin-left:11%; margin-top: 1em">TIFFFieldName − Get TIFF field name from field information</p> <h2>SYNOPSIS <a name="SYNOPSIS"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>#include <tiffio.h></b></p> <p style="margin-left:11%; margin-top: 1em"><b>const char* TIFFFieldName(const TIFFField*</b> <i>fip</i><b>)</b></p> <h2>DESCRIPTION <a name="DESCRIPTION"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldName</b> returns the textual name for a TIFF field.</p> <p style="margin-left:11%; margin-top: 1em"><i>fip</i> is a field information pointer previously returned by <b>TIFFFindField</b>, <b>TIFFFieldWithTag</b>, or <b>TIFFFieldWithName</b>.</p> <h2>RETURN VALUES <a name="RETURN VALUES"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldName</b> returns a constant C string.</p> <h2>SEE ALSO <a name="SEE ALSO"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>libtiff</b>(3TIFF),</p> <p style="margin-left:11%; margin-top: 1em">Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> <hr> </body> </html> PK粐\���<4 4 &html/man/TIFFFieldPassCount.3tiff.htmlnu�[���<!-- Creator : groff version 1.21 --> <!-- CreationDate: Sun Jul 29 12:12:01 2012 --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <meta name="Content-Style" content="text/css"> <style type="text/css"> p { margin-top: 0; margin-bottom: 0; vertical-align: top } pre { margin-top: 0; margin-bottom: 0; vertical-align: top } table { margin-top: 0; margin-bottom: 0; vertical-align: top } h1 { text-align: center } </style> <title>TIFFFieldPassCount</title> </head> <body> <h1 align="center">TIFFFieldPassCount</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <h2>NAME <a name="NAME"></a> </h2> <p style="margin-left:11%; margin-top: 1em">TIFFFieldPassCount − Get whether to pass a count to TIFFGet/SetField</p> <h2>SYNOPSIS <a name="SYNOPSIS"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>#include <tiffio.h></b></p> <p style="margin-left:11%; margin-top: 1em"><b>int TIFFFieldPassCount(const TIFFField*</b> <i>fip</i><b>)</b></p> <h2>DESCRIPTION <a name="DESCRIPTION"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldPassCount</b> returns true (nonzero) if <b>TIFFGetField</b> and <b>TIFFSetField</b> expect a <i>count</i> value to be passed before the actual data pointer.</p> <p style="margin-left:11%; margin-top: 1em"><i>fip</i> is a field information pointer previously returned by <b>TIFFFindField</b>, <b>TIFFFieldWithTag</b>, or <b>TIFFFieldWithName</b>.</p> <p style="margin-left:11%; margin-top: 1em">When a <i>count</i> is required, it will be of type <b>uint32</b> when <b>TIFFFieldReadCount</b> reports <b>TIFF_VARIABLE2</b>, and of type <b>uint16</b> otherwise. (This distinction is critical for use of <b>TIFFGetField</b>, but normally not so for use of <b>TIFFSetField</b>.)</p> <h2>RETURN VALUES <a name="RETURN VALUES"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldPassCount</b> returns an integer that is always 1 (true) or 0 (false).</p> <h2>SEE ALSO <a name="SEE ALSO"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>libtiff</b>(3TIFF),</p> <p style="margin-left:11%; margin-top: 1em">Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> <hr> </body> </html> PK粐\.�Q&html/man/TIFFFieldReadCount.3tiff.htmlnu�[���<!-- Creator : groff version 1.21 --> <!-- CreationDate: Sun Jul 29 12:12:01 2012 --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <meta name="Content-Style" content="text/css"> <style type="text/css"> p { margin-top: 0; margin-bottom: 0; vertical-align: top } pre { margin-top: 0; margin-bottom: 0; vertical-align: top } table { margin-top: 0; margin-bottom: 0; vertical-align: top } h1 { text-align: center } </style> <title>TIFFFieldReadCount</title> </head> <body> <h1 align="center">TIFFFieldReadCount</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <h2>NAME <a name="NAME"></a> </h2> <p style="margin-left:11%; margin-top: 1em">TIFFFieldReadCount − Get number of values to be read from field</p> <h2>SYNOPSIS <a name="SYNOPSIS"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>#include <tiffio.h></b></p> <p style="margin-left:11%; margin-top: 1em"><b>int TIFFFieldReadCount(const TIFFField*</b> <i>fip</i><b>)</b></p> <h2>DESCRIPTION <a name="DESCRIPTION"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldReadCount</b> returns the number of values available to be read from the specified TIFF field; that is, the number of arguments that should be supplied to <b>TIFFGetField</b>. For most field types this is a small positive integer, typically 1 or 2, but there are some special values: <b><br> TIFF_VARIABLE</b> indicates that a variable number of values is possible; then, a <b>uint16</b> <i>count</i> argument and a pointer <i>data</i> argument must be supplied to <b>TIFFGetField</b>. <b><br> TIFF_VARIABLE2</b> is the same as <b>TIFF_VARIABLE</b> except that the <i>count</i> argument must have type <b>uint32</b>. <b><br> TIFF_SPP</b> indicates that the number of arguments is equal to the image’s number of samples per pixel.</p> <p style="margin-left:11%; margin-top: 1em"><i>fip</i> is a field information pointer previously returned by <b>TIFFFindField</b>, <b>TIFFFieldWithTag</b>, or <b>TIFFFieldWithName</b>.</p> <h2>RETURN VALUES <a name="RETURN VALUES"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldReadCount</b> returns an integer.</p> <h2>SEE ALSO <a name="SEE ALSO"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>libtiff</b>(3TIFF),</p> <p style="margin-left:11%; margin-top: 1em">Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> <hr> </body> </html> PK粐\�z���� html/man/TIFFFieldTag.3tiff.htmlnu�[���<!-- Creator : groff version 1.21 --> <!-- CreationDate: Sun Jul 29 12:12:01 2012 --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <meta name="Content-Style" content="text/css"> <style type="text/css"> p { margin-top: 0; margin-bottom: 0; vertical-align: top } pre { margin-top: 0; margin-bottom: 0; vertical-align: top } table { margin-top: 0; margin-bottom: 0; vertical-align: top } h1 { text-align: center } </style> <title>TIFFFieldTag</title> </head> <body> <h1 align="center">TIFFFieldTag</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <h2>NAME <a name="NAME"></a> </h2> <p style="margin-left:11%; margin-top: 1em">TIFFFieldTag − Get TIFF field tag value from field information</p> <h2>SYNOPSIS <a name="SYNOPSIS"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>#include <tiffio.h></b></p> <p style="margin-left:11%; margin-top: 1em"><b>uint32 TIFFFieldTag(const TIFFField*</b> <i>fip</i><b>)</b></p> <h2>DESCRIPTION <a name="DESCRIPTION"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldTag</b> returns the numeric tag value for a TIFF field. This can be compared to various constants exported by the <b>libtiff</b> header files, such as <b>TIFFTAG_IMAGEWIDTH</b>.</p> <p style="margin-left:11%; margin-top: 1em"><i>fip</i> is a field information pointer previously returned by <b>TIFFFindField</b>, <b>TIFFFieldWithTag</b>, or <b>TIFFFieldWithName</b>.</p> <h2>RETURN VALUES <a name="RETURN VALUES"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldTag</b> returns an integer tag value.</p> <h2>SEE ALSO <a name="SEE ALSO"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>libtiff</b>(3TIFF),</p> <p style="margin-left:11%; margin-top: 1em">Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> <hr> </body> </html> PK粐\���HH'html/man/TIFFFieldWriteCount.3tiff.htmlnu�[���<!-- Creator : groff version 1.21 --> <!-- CreationDate: Sun Jul 29 12:12:01 2012 --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <meta name="Content-Style" content="text/css"> <style type="text/css"> p { margin-top: 0; margin-bottom: 0; vertical-align: top } pre { margin-top: 0; margin-bottom: 0; vertical-align: top } table { margin-top: 0; margin-bottom: 0; vertical-align: top } h1 { text-align: center } </style> <title>TIFFFieldWriteCount</title> </head> <body> <h1 align="center">TIFFFieldWriteCount</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <h2>NAME <a name="NAME"></a> </h2> <p style="margin-left:11%; margin-top: 1em">TIFFFieldWriteCount − Get number of values to be written to field</p> <h2>SYNOPSIS <a name="SYNOPSIS"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>#include <tiffio.h></b></p> <p style="margin-left:11%; margin-top: 1em"><b>int TIFFFieldWriteCount(const TIFFField*</b> <i>fip</i><b>)</b></p> <h2>DESCRIPTION <a name="DESCRIPTION"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldWriteCount</b> returns the number of values to be written into the specified TIFF field; that is, the number of arguments that should be supplied to <b>TIFFSetField</b>. For most field types this is a small positive integer, typically 1 or 2, but there are some special values: <b><br> TIFF_VARIABLE</b> indicates that a variable number of values is possible; then, a <b>uint16</b> <i>count</i> argument and a pointer <i>data</i> argument must be supplied to <b>TIFFSetField</b>. <b><br> TIFF_VARIABLE2</b> is the same as <b>TIFF_VARIABLE</b> except that the <i>count</i> argument must have type <b>uint32</b>. (On most modern machines, this makes no practical difference, and the <i>count</i> argument can simply be an <b>int</b> in either case.) <b><br> TIFF_SPP</b> indicates that the number of arguments must be equal to the image’s number of samples per pixel.</p> <p style="margin-left:11%; margin-top: 1em"><i>fip</i> is a field information pointer previously returned by <b>TIFFFindField</b>, <b>TIFFFieldWithTag</b>, or <b>TIFFFieldWithName</b>.</p> <p style="margin-left:11%; margin-top: 1em">For most field types, <b>TIFFFieldWriteCount</b> returns the same value as <b>TIFFFieldReadCount</b>, but there are some exceptions.</p> <h2>RETURN VALUES <a name="RETURN VALUES"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldWriteCount</b> returns an integer.</p> <h2>SEE ALSO <a name="SEE ALSO"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>libtiff</b>(3TIFF),</p> <p style="margin-left:11%; margin-top: 1em">Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> <hr> </body> </html> PK粐\X�O html/man/TIFFFlush.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:16 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFFlush</title> </head> <body> <h1 align=center>TIFFFlush</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFFlush, TIFFFlushData − flush pending writes to an open <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>int TIFFFlush(TIFF *</b><i>tif</i><b>)<br> int TIFFFlushData(TIFF *</b><i>tif</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFFlush</i> 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.</p> <!-- INDENTATION --> <p><i>TIFFFlushData</i> 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.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>0 is returned if an error is encountered, otherwise 1 is returned.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <b>TIFFError</b>(3TIFF) routine.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFWriteEncodedStrip</b>(3TIFF), <b>TIFFWriteEncodedTile</b>(3TIFF), <b>TIFFWriteRawStrip</b>(3TIFF), <b>TIFFWriteRawTile</b>(3TIFF), <b>TIFFWriteScanline</b>(3TIFF), <b>TIFFWriteTile</b>(3TIFF) <b>libtiff</b>(3TIFF),</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\2|������ html/man/TIFFGetField.3tiff.htmlnu�[���<!-- Creator : groff version 1.20.1 --> <!-- CreationDate: Thu May 6 13:48:43 2010 --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <meta name="Content-Style" content="text/css"> <style type="text/css"> p { margin-top: 0; margin-bottom: 0; vertical-align: top } pre { margin-top: 0; margin-bottom: 0; vertical-align: top } table { margin-top: 0; margin-bottom: 0; vertical-align: top } h1 { text-align: center } </style> <title>TIFFGetField</title> </head> <body> <h1 align="center">TIFFGetField</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#AUTOREGISTERED TAGS">AUTOREGISTERED TAGS</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <h2>NAME <a name="NAME"></a> </h2> <p style="margin-left:11%; margin-top: 1em">TIFFGetField, TIFFVGetField − get the value(s) of a tag in an open <small>TIFF</small> file</p> <h2>SYNOPSIS <a name="SYNOPSIS"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>#include <tiffio.h></b></p> <p style="margin-left:11%; margin-top: 1em"><b>int TIFFGetField(TIFF *</b><i>tif</i><b>, ttag_t</b> <i>tag</i><b>,</b> <i>...</i><b>)</b></p> <p style="margin-left:11%; margin-top: 1em"><b>#include <stdarg.h></b></p> <p style="margin-left:11%; margin-top: 1em"><b>int TIFFVGetField(TIFF *</b><i>tif</i><b>, ttag_t</b> <i>tag</i><b>, va_list</b> <i>ap</i><b>) <br> int TIFFGetFieldDefaulted(TIFF *</b><i>tif</i><b>, ttag_t</b> <i>tag</i><b>,</b> <i>...</i><b>) <br> int TIFFVGetFieldDefaulted(TIFF *</b><i>tif</i><b>, ttag_t</b> <i>tag</i><b>, va_list</b> <i>ap</i><b>)</b></p> <h2>DESCRIPTION <a name="DESCRIPTION"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b><i>TIFFGetField</i></b> returns the value of a tag or pseudo-tag associated with the the current directory of the opened <small>TIFF</small> file <i>tif</i>. (A <i>pseudo-tag</i> is a parameter that is used to control the operation of the <small>TIFF</small> library but whose value is not read or written to the underlying file.) The file must have been previously opened with <i>TIFFOpen</i>(3TIFF). The tag is identified by <i>tag</i>, one of the values defined in the include file <b>tiff.h</b> (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 <i>stdarg</i>(3) interface. The returned values should only be interpreted if <i>TIFFGetField</i> returns 1.</p> <p style="margin-left:11%; margin-top: 1em"><i>TIFFVGetField</i> is functionally equivalent to <i>TIFFGetField</i> except that it takes a pointer to a variable argument list. <i>TIFFVGetField</i> is useful for layering interfaces on top of the functionality provided by <i>TIFFGetField</i>.</p> <p style="margin-left:11%; margin-top: 1em"><i>TIFFGetFieldDefaulted</i> and <i>TIFFVGetFieldDefaulted</i> are identical to <i>TIFFGetField</i> and <i>TIFFVGetField</i>, except that if a tag is not defined in the current directory and it has a default value, then the default value is returned.</p> <p style="margin-left:11%; margin-top: 1em">The tags understood by <i>libtiff(3TIFF),</i> 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 <i>TIFFSetField</i>(3TIFF). Remember that <i>TIFFGetField</i> returns parameter values, so all the listed data types are pointers to storage where values should be returned. Consult the <small>TIFF</small> specification (or relevant industry specification) for information on the meaning of each tag and their possible values.</p> <table width="100%" border="0" rules="none" frame="void" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p><i>Tag Name</i></p></td> <td width="11%"></td> <td width="28%"> <p><i>Count</i></p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p><i>Types</i></p></td> <td width="12%"> <p><i>Notes</i></p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_ARTIST</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>char**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_BADFAXLINES</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_BITSPERSAMPLE</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_CLEANFAXDATA</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_COLORMAP</p></td> <td width="11%"></td> <td width="28%"> <p>3</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16**</p></td> <td width="12%"> <p>1<<BitsPerSample arrays</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_COMPRESSION</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_CONSECUTIVEBADFAXLINES</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_COPYRIGHT</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>char**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_DATATYPE</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_DATETIME</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>char**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_DOCUMENTNAME</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>char**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_DOTRANGE</p></td> <td width="11%"></td> <td width="28%"> <p>2</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_EXTRASAMPLES</p></td> <td width="11%"></td> <td width="28%"> <p>2</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*,uint16**</p></td> <td width="12%"> <p>count & types array</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_FAXFILLFUNC</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>TIFFFaxFillFunc*</p></td> <td width="12%"> <p>G3/G4 compression pseudo-tag</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_FAXMODE</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>int*</p></td> <td width="12%"> <p>G3/G4 compression pseudo-tag</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_FILLORDER</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_GROUP3OPTIONS</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_GROUP4OPTIONS</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_HALFTONEHINTS</p></td> <td width="11%"></td> <td width="28%"> <p>2</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_HOSTCOMPUTER</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>char**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_ICCPROFILE</p></td> <td width="11%"></td> <td width="28%"> <p>2</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*,void**</p></td> <td width="12%"> <p>count, profile data</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_IMAGEDEPTH</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_IMAGEDESCRIPTION</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>char**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_IMAGELENGTH</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_IMAGEWIDTH</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_INKNAMES</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>char**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_INKSET</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_JPEGCOLORMODE</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>int*</p></td> <td width="12%"> <p>JPEG pseudo-tag</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_JPEGQUALITY</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>int*</p></td> <td width="12%"> <p>JPEG pseudo-tag</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_JPEGTABLES</p></td> <td width="11%"></td> <td width="28%"> <p>2</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*,void**</p></td> <td width="12%"> <p>count & tables</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_JPEGTABLESMODE</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>int*</p></td> <td width="12%"> <p>JPEG pseudo-tag</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_MAKE</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>char**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_MATTEING</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_MAXSAMPLEVALUE</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_MINSAMPLEVALUE</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_MODEL</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>char**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_ORIENTATION</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PAGENAME</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>char**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PAGENUMBER</p></td> <td width="11%"></td> <td width="28%"> <p>2</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PHOTOMETRIC</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PHOTOSHOP</p></td> <td width="11%"></td> <td width="28%"> <p>2</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*,void**</p></td> <td width="12%"> <p>count, data</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PLANARCONFIG</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PREDICTOR</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PRIMARYCHROMATICITIES</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>float**</p></td> <td width="12%"> <p>6-entry array</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_REFERENCEBLACKWHITE</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>float**</p></td> <td width="12%"> <p>6-entry array</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_RESOLUTIONUNIT</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_RICHTIFFIPTC</p></td> <td width="11%"></td> <td width="28%"> <p>2</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*,void**</p></td> <td width="12%"> <p>count, data</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_ROWSPERSTRIP</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SAMPLEFORMAT</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SAMPLESPERPIXEL</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SMAXSAMPLEVALUE</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>double*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SMINSAMPLEVALUE</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>double*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SOFTWARE</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>char**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_STONITS</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>double**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_STRIPBYTECOUNTS</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_STRIPOFFSETS</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SUBFILETYPE</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SUBIFD</p></td> <td width="11%"></td> <td width="28%"> <p>2</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*,uint32**</p></td> <td width="12%"> <p>count & offsets array</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_TARGETPRINTER</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>char**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_THRESHHOLDING</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_TILEBYTECOUNTS</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_TILEDEPTH</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_TILELENGTH</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_TILEOFFSETS</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32**</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_TILEWIDTH</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_TRANSFERFUNCTION</p></td> <td width="11%"></td> <td width="28%"> <p>1 or 3†</p></td> <td width="12%"> <p>uint16**1<<BitsPerSample entry arrays</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_WHITEPOINT</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>float**</p></td> <td width="12%"> <p>2-entry array</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_XMLPACKET</p></td> <td width="11%"></td> <td width="28%"> <p>2</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint32*,void**</p></td> <td width="12%"> <p>count, data</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_XPOSITION</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>float*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_XRESOLUTION</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>float*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_YCBCRCOEFFICIENTS</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>float**</p></td> <td width="12%"> <p>3-entry array</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_YCBCRPOSITIONING</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_YCBCRSUBSAMPLING</p></td> <td width="11%"></td> <td width="28%"> <p>2</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>uint16*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_YPOSITION</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>float*</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_YRESOLUTION</p></td> <td width="11%"></td> <td width="28%"> <p>1</p></td> <td width="12%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="28%"> <p>float*‡</p></td> <td width="12%"> </td></tr> </table> <p style="margin-left:11%;">† If <i>SamplesPerPixel</i> is one, then a single array is returned; otherwise three arrays are returned. <br> ‡ The contents of this field are quite complex. See <i>The ICC Profile Format Specification</i>, Annex B.3 "Embedding ICC Profiles in TIFF Files" (available at http://www.color.org) for an explanation.</p> <h2>AUTOREGISTERED TAGS <a name="AUTOREGISTERED TAGS"></a> </h2> <p style="margin-left:11%; margin-top: 1em">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:</p> <p style="margin-left:22%; margin-top: 1em">uint16 count; <br> void *data;</p> <p style="margin-left:22%; margin-top: 1em">TIFFGetField(tiff, 33424, &count, &data); <br> printf("Tag %d: %d, count %d0, 33424, *(uint32 *)data, count); <br> TIFFGetField(tiff, 36867, &count, &data); <br> printf("Tag %d: %s, count %d0, 36867, (char *)data, count);</p> <p style="margin-left:11%; margin-top: 1em">is not supported by <b>libtiff(3TIFF),</b> library</p> <h2>RETURN VALUES <a name="RETURN VALUES"></a> </h2> <p style="margin-left:11%; margin-top: 1em">1 is returned if the tag is defined in the current directory; otherwise a 0 is returned.</p> <h2>DIAGNOSTICS <a name="DIAGNOSTICS"></a> </h2> <p style="margin-left:11%; margin-top: 1em">All error messages are directed to the <b>TIFFError</b>(3TIFF) routine.</p> <p style="margin-left:11%; margin-top: 1em"><b>Unknown field, tag 0x%x</b>. An unknown tag was supplied.</p> <h2>SEE ALSO <a name="SEE ALSO"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFOpen</b>(3TIFF), <b>TIFFSetField</b>(3TIFF), <b>TIFFSetDirectory</b>(3TIFF), <b>TIFFReadDirectory</b>(3TIFF), <b>TIFFWriteDirectory</b>(3TIFF) <b>libtiff</b>(3TIFF),</p> <p style="margin-left:11%; margin-top: 1em">Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> <hr> </body> </html> PK粐\f�:�5�5html/man/TIFFOpen.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:16 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFOpen</title> </head> <body> <h1 align=center>TIFFOpen</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#BYTE ORDER">BYTE ORDER</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFOpen, TIFFFdOpen, TIFFClientOpen − open a <small>TIFF</small> file for reading or writing</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>TIFF* TIFFOpen(const char *</b><i>filename</i><b>, const char *</b><i>mode</i><b>)<br> TIFF* TIFFFdOpen(const int</b> <i>fd</i><b>, const char *</b><i>filename</i><b>, const char *</b><i>mode</i><b>)</b></p> <!-- INDENTATION --> <p><b>typedef tsize_t (*TIFFReadWriteProc)(thandle_t, tdata_t, tsize_t);<br> typedef toff_t (*TIFFSeekProc)(thandle_t, toff_t, int);<br> typedef int (*TIFFCloseProc)(thandle_t);<br> typedef toff_t (*TIFFSizeProc)(thandle_t);<br> typedef int (*TIFFMapFileProc)(thandle_t, tdata_t*, toff_t*);<br> typedef void (*TIFFUnmapFileProc)(thandle_t, tdata_t, toff_t);</b></p> <!-- INDENTATION --> <p><b>TIFF* TIFFClientOpen(const char *</b><i>filename</i><b>, const char *</b><i>mode</i><b>, thandle_t</b> <i>clientdata</i><b>, TIFFReadWriteProc</b> <i>readproc</i><b>, TIFFReadWriteProc</b> <i>writeproc</i><b>, TIFFSeekProc</b> <i>seekproc</i><b>, TIFFCloseProc</b> <i>closeproc</i><b>, TIFFSizeProc</b> <i>sizeproc</i><b>, TIFFMapFileProc</b> <i>mapproc</i><b>, TIFFUnmapFileProc</b> <i>unmapproc</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFOpen</i> opens a <small>TIFF</small> file whose name is <i>filename</i> and returns a handle to be used in subsequent calls to routines in <i>libtiff</i>. If the open operation fails, then zero is returned. The <i>mode</i> 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.</p> <!-- INDENTATION --> <p>If a file is opened for reading, the first <small>TIFF</small> directory in the file is automatically read (also see <i>TIFFSetDirectory</i>(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 <small>TIFF</small> Revision 6.0: <i>BitsPerSample</i>=1, <i>ThreshHolding</i>=bilevel art scan, <i>FillOrder</i>=1 (most significant bit of each data byte is filled first), <i>Orientation</i>=1 (the 0th row represents the visual top of the image, and the 0th column represents the visual left hand side), <i>SamplesPerPixel</i>=1, <i>RowsPerStrip</i>=infinity, <i>ResolutionUnit</i>=2 (inches), and <i>Compression</i>=1 (no compression). To alter these values, or to define values for additional fields, <i>TIFFSetField</i>(3TIFF) must be used.</p> <!-- INDENTATION --> <p><i>TIFFFdOpen</i> is like <i>TIFFOpen</i> except that it opens a <small>TIFF</small> file given an open file descriptor <i>fd</i>. The file’s name and mode must reflect that of the open descriptor. The object associated with the file descriptor <b>must support random access</b>.</p> <!-- INDENTATION --> <p><i>TIFFClientOpen</i> is like <i>TIFFOpen</i> except that the caller supplies a collection of functions that the library will use to do <small>UNIX</small> -like I/O operations. The <i>readproc</i> and <i>writeproc</i> are called to read and write data at the current file position. <i>seekproc</i> is called to change the current file position a la <i>lseek</i>(2). <i>closeproc</i> is invoked to release any resources associated with an open file. <i>sizeproc</i> is invoked to obtain the size in bytes of a file. <i>mapproc</i> and <i>unmapproc</i> are called to map and unmap a file’s contents in memory; c.f. <i>mmap</i>(2) and <i>munmap</i>(2). The <i>clientdata</i> parameter is an opaque ‘‘handle’’ passed to the client-specified routines passed as parameters to <i>TIFFClientOpen</i>.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>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.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>l</b></p> </td> <td width="6%"></td> <td width="80%"> <p>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 <small>CPU</small> byte order.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>b</b></p> </td> <td width="6%"></td> <td width="80%"> <p>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 <small>CPU</small> byte order.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>L</b></p> </td> <td width="6%"></td> <td width="80%"> <p>Force image data that is read or written to be treated with bits filled from Least Significant Bit ( <small>LSB</small> ) to Most Significant Bit ( <small>MSB</small> ). Note that this is the opposite to the way the library has worked from its inception.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>B</b></p> </td> <td width="6%"></td> <td width="80%"> <p>Force image data that is read or written to be treated with bits filled from Most Significant Bit ( <small>MSB</small> ) to Least Significant Bit ( <small>LSB</small> ); this is the default.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>H</b></p> </td> <td width="6%"></td> <td width="80%"> <p>Force image data that is read or written to be treated with bits filled in the same order as the native <small>CPU.</small></p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>M</b></p> </td> <td width="6%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>m</b></p> </td> <td width="6%"></td> <td width="80%"> <p>Disable the use of memory-mapped files.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>C</b></p> </td> <td width="6%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>c</b></p> </td> <td width="6%"></td> <td width="80%"> <p>Disable the use of strip chopping when reading images.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>h</b></p> </td> <td width="6%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> </table> <a name="BYTE ORDER"></a> <h2>BYTE ORDER</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The <small>TIFF</small> specification (<b>all versions</b>) states that compliant readers <i>must be capable of reading images written in either byte order</i>. Nonetheless some software that claims to support the reading of <small>TIFF</small> images is incapable of reading images in anything but the native <small>CPU</small> 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 <small>CPU</small> 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’’.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Upon successful completion <i>TIFFOpen</i>, <i>TIFFFdOpen</i>, and <i>TIFFClientOpen</i> return a <small>TIFF</small> pointer. Otherwise, NULL is returned.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <i>TIFFError</i>(3TIFF) routine. Likewise, warning messages are directed to the <i>TIFFWarning</i>(3TIFF) routine.</p> <!-- INDENTATION --> <p><b>"%s": Bad mode</b>. The specified <i>mode</i> parameter was not one of ‘‘r’’ (read), ‘‘w’’ (write), or ‘‘a’’ (append).</p> <!-- INDENTATION --> <p><b>%s: Cannot open</b>. <i>TIFFOpen</i>() was unable to open the specified filename for read/writing.</p> <!-- INDENTATION --> <p><b>Cannot read TIFF header</b>. An error occurred while attempting to read the header information.</p> <!-- INDENTATION --> <p><b>Error writing TIFF header</b>. An error occurred while writing the default header information for a new file.</p> <!-- INDENTATION --> <p><b>Not a TIFF file, bad magic number %d (0x%x)</b>. The magic number in the header was not (hex) 0x4d4d or (hex) 0x4949.</p> <!-- INDENTATION --> <p><b>Not a TIFF file, bad version number %d (0x%x)</b>. The version field in the header was not 42 (decimal).</p> <!-- INDENTATION --> <p><b>Cannot append to file that has opposite byte ordering</b>. 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.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>libtiff</i>(3TIFF), <i>TIFFClose</i>(3TIFF)</p> </td> </table> <hr> </body> </html> PK粐\bɹ}}&html/man/TIFFPrintDirectory.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:16 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFPrintDirectory</title> </head> <body> <h1 align=center>TIFFPrintDirectory</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFPrintDirectory − print a description of a <small>TIFF</small> directory</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>void TIFFPrintDirectory(TIFF *</b><i>tif</i><b>, FILE *</b><i>fd</i><b>, long</b> <i>flags</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFPrintDirectory</i> prints a description of the current directory in the specified <small>TIFF</small> file to the standard I/O output stream <i>fd</i>. The <i>flags</i> parameter is used to control the <i>level of detail</i> of the printed information; it is a bit-or of the flags defined in <b>tiffio.h</b>:</p></td> </table> <!-- TABS --> <p>#define TIFFPRINT_NONE 0x0 /* no extra info */</p> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="1%"> <p>#define</p> </td> <td width="30%"> <p>TIFFPRINT_STRIPS</p> </td> <td width="10%"> <p>0x1</p> </td> <td width="48%"> <p>/* strips/tiles info */</p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="1%"> <p>#define</p> </td> <td width="30%"> <p>TIFFPRINT_CURVES</p> </td> <td width="10%"> <p>0x2</p> </td> <td width="48%"> <p>/* color/gray response curves */</p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="1%"> <p>#define</p> </td> <td width="30%"> <p>TIFFPRINT_COLORMAP</p> </td> <td width="10%"> <p>0x4</p> </td> <td width="48%"> <p>/* colormap */</p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="1%"> <p>#define</p> </td> <td width="30%"> <p>TIFFPRINT_JPEGQTABLES</p> </td> <td width="10%"> <p>0x100</p> </td> <td width="48%"> <p>/* JPEG Q matrices */</p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="1%"> <p>#define</p> </td> <td width="30%"> <p>TIFFPRINT_JPEGACTABLES</p> </td> <td width="10%"> <p>0x200</p> </td> <td width="48%"> <p>/* JPEG AC tables */</p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="1%"> <p>#define</p> </td> <td width="30%"> <p>TIFFPRINT_JPEGDCTABLES</p> </td> <td width="10%"> <p>0x200</p> </td> <td width="48%"> <p>/* JPEG DC tables */</p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>In C++ the <i>flags</i> parameter defaults to 0.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>None.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>None.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>libtiff</i>(3TIFF), <i>TIFFOpen</i>(3TIFF), <i>TIFFReadDirectory</i>(3TIFF), <i>TIFFSetDirectory</i>(3TIFF)</p> </td> </table> <hr> </body> </html> PK粐\K�d=00!html/man/TIFFRGBAImage.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:17 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFRGBAImage</title> </head> <body> <h1 align=center>TIFFRGBAImage</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#ALTERNATE RASTER FORMATS">ALTERNATE RASTER FORMATS</a><br> <a href="#SIMULTANEOUS RASTER STORE AND DISPLAY">SIMULTANEOUS RASTER STORE AND DISPLAY</a><br> <a href="#SUPPORTING ADDITIONAL TIFF FORMATS">SUPPORTING ADDITIONAL TIFF FORMATS</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFRGBAImageOK, TIFFRGBAImageBegin, TIFFRGBAImageGet, TIFFRGBAImageEnd − read and decode an image into a raster</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>typedef unsigned char TIFFRGBValue; typedef struct _TIFFRGBAImage TIFFRGBAImage;</b></p> <!-- INDENTATION --> <p><b>int TIFFRGBAImageOK(TIFF *</b><i>tif</i><b>, char</b> <i>emsg[1024]</i><b>)<br> int TIFFRGBAImageBegin(TIFFRGBAImage *</b><i>img</i><b>, TIFF*</b> <i>tif</i><b>, int</b> <i>stopOnError</i><b>, char</b> <i>emsg[1024]</i><b>)<br> int TIFFRGBAImageGet(TIFFRGBAImage *</b><i>img</i><b>, uint32*</b> <i>raster</i><b>, uint32</b> <i>width</i> <b>, uint32</b> <i>height</i><b>)<br> void TIFFRGBAImageEnd(TIFFRGBAImage *</b><i>img</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The routines described here provide a high-level interface through which <small>TIFF</small> 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 <i>TIFFRGBAImage</i> 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.</p> <!-- INDENTATION --> <p>The default usage for these routines is: check if an image can be processed using <i>TIFFRGBAImageOK</i>, construct a decoder state block using <i>TIFFRGBAImageBegin</i>, read and decode an image into a target raster using <i>TIFFRGBAImageGet</i>, and then release resources using <i>TIFFRGBAImageEnd</i>. <i>TIFFRGBAImageGet</i> 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 <i>TIFFRGBAImageGet</i> as needed to display an image.</p> <!-- INDENTATION --> <p>The generated raster is assumed to be an array of <i>width</i> times <i>height</i> 32-bit entries, where <i>width</i> must be less than or equal to the width of the image (<i>height</i> 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 (<i>x</i>,<i>y</i>) is <i>raster</i>[<i>y</i>*<i>width</i>+<i>x</i>]; with the raster origin in the <b>lower-left</b> hand corner.)</p> <!-- INDENTATION --> <p>Raster pixels are 8-bit packed red, green, blue, alpha samples. The macros <i>TIFFGetR</i>, <i>TIFFGetG</i>, <i>TIFFGetB</i>, and <i>TIFFGetA</i> should be used to access individual samples. Images without Associated Alpha matting information have a constant Alpha of 1.0 (255).</p> <!-- INDENTATION --> <p><i>TIFFRGBAImageGet</i> converts non-8-bit images by scaling sample values. Palette, grayscale, bilevel, <small>CMYK</small> , and YCbCr images are converted to <small>RGB</small> transparently. Raster pixels are returned uncorrected by any colorimetry information present in the directory.</p> <!-- INDENTATION --> <p>The parameter <i>stopOnError</i> specifies how to act if an error is encountered while reading the image. If <i>stopOnError</i> is non-zero, then an error will terminate the operation; otherwise <i>TIFFRGBAImageGet</i> will continue processing data until all the possible data in the image have been requested.</p> </td> </table> <a name="ALTERNATE RASTER FORMATS"></a> <h2>ALTERNATE RASTER FORMATS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>To use the core support for reading and processing <small>TIFF</small> images, but write the resulting raster data in a different format one need only override the ‘‘<i>put methods</i>’’ used to store raster data. These methods are are defined in the <i>TIFFRGBAImage</i> structure and initially setup by <i>TIFFRGBAImageBegin</i> to point to routines that pack raster data in the default <small>ABGR</small> pixel format. Two different routines are used according to the physical organization of the image data in the file: <i>PlanarConfiguration</i>=1 (packed samples), and <i>PlanarConfiguration</i>=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.</p> </td> </table> <a name="SIMULTANEOUS RASTER STORE AND DISPLAY"></a> <h2>SIMULTANEOUS RASTER STORE AND DISPLAY</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>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 <i>TIFFRGBAImageBegin</i> and then invoke them before or after each display operation. For example, the <i>tiffgt</i>(1) utility uses the following put method to update the display as the raster is being filled:</p> <!-- INDENTATION --> <pre>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); } } </pre> <!-- INDENTATION --> <p>(the original routine provided by the library is saved in the variable <i>putContig</i>.)</p> </td> </table> <a name="SUPPORTING ADDITIONAL TIFF FORMATS"></a> <h2>SUPPORTING ADDITIONAL TIFF FORMATS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The <i>TIFFRGBAImage</i> routines support the most commonly encountered flavors of <small>TIFF.</small> It is possible to extend this support by overriding the ‘‘<i>get method</i>’’ invoked by <i>TIFFRGBAImageGet</i> to read <small>TIFF</small> 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.</p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Samples must be either 1, 2, 4, 8, or 16 bits. Colorimetric samples/pixel must be either 1, 3, or 4 (i.e. <i>SamplesPerPixel</i> minus <i>ExtraSamples</i>).</p> <!-- INDENTATION --> <p>Palette image colormaps that appear to be incorrectly written as 8-bit values are automatically scaled to 16-bits.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All routines return 1 if the operation was successful. Otherwise, 0 is returned if an error was encountered and <i>stopOnError</i> is zero.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <i>TIFFError</i>(3TIFF) routine.</p> <!-- INDENTATION --> <p><b>Sorry, can not handle %d-bit pictures</b>. The image had <i>BitsPerSample</i> other than 1, 2, 4, 8, or 16.</p> <!-- INDENTATION --> <p><b>Sorry, can not handle %d-channel images</b>. The image had <i>SamplesPerPixel</i> other than 1, 3, or 4.</p> <!-- INDENTATION --> <p><b>Missing needed "PhotometricInterpretation" tag</b>. The image did not have a tag that describes how to display the data.</p> <!-- INDENTATION --> <p><b>No "PhotometricInterpretation" tag, assuming RGB</b>. 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 <small>RGB.</small></p> <!-- INDENTATION --> <p><b>No "PhotometricInterpretation" tag, assuming min-is-black</b>. 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.</p> <!-- INDENTATION --> <p><b>No space for photometric conversion table</b>. There was insufficient memory for a table used to convert image samples to 8-bit <small>RGB.</small></p> <!-- INDENTATION --> <p><b>Missing required "Colormap" tag</b>. A Palette image did not have a required <i>Colormap</i> tag.</p> <!-- INDENTATION --> <p><b>No space for tile buffer</b>. There was insufficient memory to allocate an i/o buffer.</p> <!-- INDENTATION --> <p><b>No space for strip buffer</b>. There was insufficient memory to allocate an i/o buffer.</p> <!-- INDENTATION --> <p><b>Can not handle format</b>. The image has a format (combination of <i>BitsPerSample</i>, <i>SamplesPerPixel</i>, and <i>PhotometricInterpretation</i>) that can not be handled.</p> <!-- INDENTATION --> <p><b>No space for B&W mapping table</b>. There was insufficient memory to allocate a table used to map grayscale data to <small>RGB.</small></p> <!-- INDENTATION --> <p><b>No space for Palette mapping table</b>. There was insufficient memory to allocate a table used to map data to 8-bit <small>RGB.</small></p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFReadRGBAImage</b>(3TIFF), <b>TIFFReadRGBAImageOriented</b>(3TIFF), <b>TIFFReadRGBAStrip</b>(3TIFF), <b>TIFFReadRGBATile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�8Bæ�%html/man/TIFFReadDirectory.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:16 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFReadDirectory</title> </head> <body> <h1 align=center>TIFFReadDirectory</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>TIFFReadDirectory − get the contents of the next directory in an open</big> TIFF <big>file</big></p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big><b>#include <tiffio.h></b></big></p> <!-- INDENTATION --> <p><big><b>int TIFFReadDirectory(TIFF *</b><i>tif</i><b>)</b></big></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>Read the next directory in the specified file and make it the current directory. Applications only need to call <i>TIFFReadDirectory</i> to read multiple subfiles in a single</big> TIFF <big>file— the first directory in a file is automatically read when <i>TIFFOpen</i> is called.</big></p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>If the library is compiled with</big> STRIPCHOP_SUPPORT <big>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 <i>TIFFNumberOfStrips</i> [<i>TIFFNumberOfTiles</i>].</big></p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>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.</big></p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>All error messages are directed to the <i>TIFFError</i>(3TIFF) routine. All warning messages are directed to the <i>TIFFWarning</i>(3TIFF) routine.</big></p> <!-- INDENTATION --> <p><big><b>Seek error accessing TIFF directory</b>. An error occurred while positioning to the location of the directory.</big></p> <!-- INDENTATION --> <p><big><b>Wrong data type %d for field "%s"</b>. The tag entry in the directory had an incorrect data type. For example, an <i>ImageDescription</i> tag with a</big> SHORT <big>data type.</big></p> <!-- INDENTATION --> <p><big><b>TIFF directory is missing required "%s" field</b>. The specified tag is required to be present by the</big> TIFF <big>5.0 specification, but is missing. The directory is (usually) unusable.</big></p> <!-- INDENTATION --> <p><big><b>%s: Rational with zero denominator</b>. A directory tag has a</big> RATIONAL <big>value whose denominator is zero.</big></p> <!-- INDENTATION --> <p><big><b>Incorrect count %d for field "%s" (%lu, expecting %lu); tag ignored</b>. The specified tag’s count field is bad. For example, a count other than 1 for a <i>SubFileType</i> tag.</big></p> <!-- INDENTATION --> <p><big><b>Cannot handle different per-sample values for field "%s"</b>. The tag has <i>SamplesPerPixel</i> values and they are not all the same; e.g. <i>BitsPerSample</i>. The library is unable to handle images of this sort.</big></p> <!-- INDENTATION --> <p><big><b>Count mismatch for field "%s"; expecting %d, got %d</b>. 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.</big></p> <!-- INDENTATION --> <p><big><b>Invalid TIFF directory; tags are not sorted in ascending order</b>. The directory tags are not properly sorted as specified in the</big> TIFF <big>5.0 specification. This error is not fatal.</big></p> <!-- INDENTATION --> <p><big><b>Ignoring unknown field with tag %d (0x%x)</b>. An unknown tag was encountered in the directory; the library ignores all such tags.</big></p> <!-- INDENTATION --> <p><big><b>TIFF directory is missing requred "ImageLength" field</b>. The image violates the specification by not having a necessary field. There is no way for the library to recover from this error.</big></p> <!-- INDENTATION --> <p><big><b>TIFF directory is missing requred "PlanarConfig" field</b>. The image violates the specification by not having a necessary field. There is no way for the library to recover from this error.</big></p> <!-- INDENTATION --> <p><big><b>TIFF directory is missing requred "StripOffsets" field</b>. 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.</big></p> <!-- INDENTATION --> <p><big><b>TIFF directory is missing requred "TileOffsets" field</b>. 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.</big></p> <!-- INDENTATION --> <p><big><b>TIFF directory is missing required "StripByteCounts" field</b>. 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.</big></p> <!-- INDENTATION --> <p><big><b>TIFF directory is missing required "StripByteCounts" field, calculating from imagelength</b>. 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.</big></p> <!-- INDENTATION --> <p><big><b>Bogus "StripByteCounts" field, ignoring and calculating from imagelength</b>. 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.</big></p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big><b>TIFFOpen</b>(3TIFF), <b>TIFFWriteDirectory</b>(3TIFF), <b>TIFFSetDirectory</b>(3TIFF), <b>TIFFSetSubDirectory</b>(3TIFF), <b>libtiff</b>(3TIFF)</big></p> <!-- INDENTATION --> <p><big>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></big></p> </td> </table> <hr> </body> </html> PK粐\9�r0��(html/man/TIFFReadEncodedStrip.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:16 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFReadEncodedStrip</title> </head> <body> <h1 align=center>TIFFReadEncodedStrip</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>TIFFReadEncodedStrip − read and decode a strip of data from an open</big> TIFF <big>file</big></p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big><b>#include <tiffio.h></b></big></p> <!-- INDENTATION --> <p><big><b>tsize_t TIFFReadEncodedStrip(TIFF *</b><i>tif</i><b>, tstrip_t</b> <i>strip</i><b>, tdata_t</b> <i>buf</i><b>, tsize_t</b> <i>size</i><b>)</b></big></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>Read the specified strip of data and place up to <i>size</i> bytes of decompressed information in the (user supplied) data buffer.</big></p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>The value of <i>strip</i> is a ‘‘raw strip number.’’ That is, the caller must take into account whether or not the data are organized in separate planes (<i>PlanarConfiguration</i>=2). To read a full strip of data the data buffer should typically be at least as large as the number returned by <b>TIFFStripSize</b>(3TIFF). If the -1 passed in <i>size</i> parameter, the whole strip will be read. You should be sure you have enough space allocated for the buffer.</big></p> <!-- INDENTATION --> <p><big>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 <i>FillOrder</i> 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,</big></p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>The actual number of bytes of data that were placed in <i>buf</i> is returned; <i>TIFFReadEncodedStrip</i> returns −1 if an error was encountered.</big></p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>All error messages are directed to the <b>TIFFError</b>(3TIFF) routine.</big></p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big><b>TIFFOpen</b>(3TIFF), <b>TIFFReadRawStrip</b>(3TIFF), <b>TIFFReadScanline</b>(3TIFF), <b>libtiff</b>(3TIFF)</big></p> <!-- INDENTATION --> <p><big>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></big></p> </td> </table> <hr> </body> </html> PK粐\z�ar%%'html/man/TIFFReadEncodedTile.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:17 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFReadEncodedTile</title> </head> <body> <h1 align=center>TIFFReadEncodedTile</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFReadEncodedTile − read and decode a tile of data from an open <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>int TIFFReadEncodedTile(TIFF *</b><i>tif</i><b>, ttile_t</b> <i>tile</i><b>, tdata_t</b> <i>buf</i><b>, tsize_t</b> <i>size</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Read the specified tile of data and place up to <i>size</i> bytes of decompressed information in the (user supplied) data buffer.</p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The value of <i>tile</i> is a ‘‘raw tile number.’’ That is, the caller must take into account whether or not the data are organized in separate planes (<i>PlanarConfiguration</i>=2). <i>TIFFComputeTile</i> 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 <i>TIFFTileSize</i>.</p> <!-- INDENTATION --> <p>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 <i>FillOrder</i> 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,</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The actual number of bytes of data that were placed in <i>buf</i> is returned; <i>TIFFReadEncodedTile</i> returns −1 if an error was encountered.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <b>TIFFError</b>(3TIFF) routine.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFReadRawTile</b>(3TIFF), <b>TIFFReadTile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�8��(�(%html/man/TIFFReadRGBAImage.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:17 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFReadRGBAImage</title> </head> <body> <h1 align=center>TIFFReadRGBAImage</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFReadRGBAImage, TIFFReadRGBAImageOriented − read and decode an image into a fixed-format raster</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>#define TIFFGetR(abgr) ((abgr) & 0xff)<br> #define TIFFGetG(abgr) (((abgr) >> 8) & 0xff)<br> #define TIFFGetB(abgr) (((abgr) >> 16) & 0xff)<br> #define TIFFGetA(abgr) (((abgr) >> 24) & 0xff)</b></p> <!-- INDENTATION --> <p><b>int TIFFReadRGBAImage(TIFF *</b><i>tif</i><b>, uint32</b> <i>width</i><b>, uint32</b> <i>height</i><b>, uint32 *</b><i>raster</i><b>, int</b> <i>stopOnError</i><b>)<br> int TIFFReadRGBAImageOriented(TIFF *</b><i>tif</i><b>, uint32</b> <i>width</i><b>, uint32</b> <i>height</i><b>, uint32 *</b><i>raster</i><b>, int</b> <i>orientation</i><b>, int</b> <i>stopOnError</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFReadRGBAImage</i> reads a strip- or tile-based image into memory, storing the result in the user supplied <i>raster</i>. The raster is assumed to be an array of <i>width</i> times <i>height</i> 32-bit entries, where <i>width</i> must be less than or equal to the width of the image (<i>height</i> 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 (<i>x</i>,<i>y</i>) is <i>raster</i>[<i>y</i>*<i>width</i>+<i>x</i>]; with the raster origin in the lower-left hand corner.)</p> <!-- INDENTATION --> <p><i>TIFFReadRGBAImageOriented</i> works like <i>TIFFReadRGBAImage</i> with except of that user can specify the raster origin position with the <i>orientation</i> parameter. Four orientations supported:</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>ORIENTATION_TOPLEFT</b></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>origin in top-left corner,</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>ORIENTATION_TOPRIGHT</b></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>origin in top-right corner,</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>ORIENTATION_BOTLEFT</b></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>origin in bottom-left corner and</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>ORIENTATION_BOTRIGHT</b></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>origin in bottom-right corner.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>If you choose <b>ORIENTATION_BOTLEFT</b> result will be the same as returned by the <i>TIFFReadRGBAImage.</i></p> <!-- INDENTATION --> <p>Raster pixels are 8-bit packed red, green, blue, alpha samples. The macros <i>TIFFGetR</i>, <i>TIFFGetG</i>, <i>TIFFGetB</i>, and <i>TIFFGetA</i> should be used to access individual samples. Images without Associated Alpha matting information have a constant Alpha of 1.0 (255).</p> <!-- INDENTATION --> <p><i>TIFFReadRGBAImage</i> converts non-8-bit images by scaling sample values. Palette, grayscale, bilevel, <small>CMYK</small> , and YCbCr images are converted to <small>RGB</small> transparently. Raster pixels are returned uncorrected by any colorimetry information present in the directory.</p> <!-- INDENTATION --> <p>The paramater <i>stopOnError</i> specifies how to act if an error is encountered while reading the image. If <i>stopOnError</i> is non-zero, then an error will terminate the operation; otherwise <i>TIFFReadRGBAImage</i> will continue processing data until all the possible data in the image have been requested.</p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>In C++ the <i>stopOnError</i> parameter defaults to 0.</p> <!-- INDENTATION --> <p>Samples must be either 1, 2, 4, 8, or 16 bits. Colorimetric samples/pixel must be either 1, 3, or 4 (i.e. <i>SamplesPerPixel</i> minus <i>ExtraSamples</i>).</p> <!-- INDENTATION --> <p>Palettte image colormaps that appear to be incorrectly written as 8-bit values are automatically scaled to 16-bits.</p> <!-- INDENTATION --> <p><i>TIFFReadRGBAImage</i> is just a wrapper around the more general <i>TIFFRGBAImage</i>(3TIFF) facilities.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>1 is returned if the image was successfully read and converted. Otherwise, 0 is returned if an error was encountered and <i>stopOnError</i> is zero.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <i>TIFFError</i>(3TIFF) routine.</p> <!-- INDENTATION --> <p><b>Sorry, can not handle %d-bit pictures</b>. The image had <i>BitsPerSample</i> other than 1, 2, 4, 8, or 16.</p> <!-- INDENTATION --> <p><b>Sorry, can not handle %d-channel images</b>. The image had <i>SamplesPerPixel</i> other than 1, 3, or 4.</p> <!-- INDENTATION --> <p><b>Missing needed "PhotometricInterpretation" tag</b>. The image did not have a tag that describes how to display the data.</p> <!-- INDENTATION --> <p><b>No "PhotometricInterpretation" tag, assuming RGB</b>. 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 <small>RGB.</small></p> <!-- INDENTATION --> <p><b>No "PhotometricInterpretation" tag, assuming min-is-black</b>. 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.</p> <!-- INDENTATION --> <p><b>No space for photometric conversion table</b>. There was insufficient memory for a table used to convert image samples to 8-bit <small>RGB.</small></p> <!-- INDENTATION --> <p><b>Missing required "Colormap" tag</b>. A Palette image did not have a required <i>Colormap</i> tag.</p> <!-- INDENTATION --> <p><b>No space for tile buffer</b>. There was insufficient memory to allocate an i/o buffer.</p> <!-- INDENTATION --> <p><b>No space for strip buffer</b>. There was insufficient memory to allocate an i/o buffer.</p> <!-- INDENTATION --> <p><b>Can not handle format</b>. The image has a format (combination of <i>BitsPerSample</i>, <i>SamplesPerPixel</i>, and <i>PhotometricInterpretation</i>) that <i>TIFFReadRGBAImage</i> can not handle.</p> <!-- INDENTATION --> <p><b>No space for B&W mapping table</b>. There was insufficient memory to allocate a table used to map grayscale data to <small>RGB.</small></p> <!-- INDENTATION --> <p><b>No space for Palette mapping table</b>. There was insufficient memory to allocate a table used to map data to 8-bit <small>RGB.</small></p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFRGBAImage</b>(3TIFF), <b>TIFFReadRGBAStrip</b>(3TIFF), <b>TIFFReadRGBATile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\B��[99%html/man/TIFFReadRGBAStrip.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:17 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFReadRGBAStrip</title> </head> <body> <h1 align=center>TIFFReadRGBAStrip</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFReadRGBAStrip − read and decode an image strip into a fixed-format raster</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>#define TIFFGetR(abgr) ((abgr) & 0xff)<br> #define TIFFGetG(abgr) (((abgr) >> 8) & 0xff)<br> #define TIFFGetB(abgr) (((abgr) >> 16) & 0xff)<br> #define TIFFGetA(abgr) (((abgr) >> 24) & 0xff)</b></p> <!-- INDENTATION --> <p><b>int TIFFReadRGBAStrip(TIFF *</b><i>tif</i><b>, uint32</b> <i>row</i><b>, uint32 *</b><i>raster</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFReadRGBAStrip</i> reads a single strip of a strip-based image into memory, storing the result in the user supplied RGBA <i>raster</i>. 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).</p> <!-- INDENTATION --> <p>The <i>row</i> value should be the row of the first row in the strip (strip * rowsperstrip, zero based).</p> <!-- INDENTATION --> <p>Note that the raster is assume to be organized such that the pixel at location (<i>x</i>,<i>y</i>) is <i>raster</i>[<i>y</i>*<i>width</i>+<i>x</i>]; with the raster origin in the <i>lower-left hand corner</i> 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.</p> <!-- INDENTATION --> <p>Raster pixels are 8-bit packed red, green, blue, alpha samples. The macros <i>TIFFGetR</i>, <i>TIFFGetG</i>, <i>TIFFGetB</i>, and <i>TIFFGetA</i> should be used to access individual samples. Images without Associated Alpha matting information have a constant Alpha of 1.0 (255).</p> <!-- INDENTATION --> <p>See the <i>TIFFRGBAImage</i>(3TIFF) page for more details on how various image types are converted to RGBA values.</p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Samples must be either 1, 2, 4, 8, or 16 bits. Colorimetric samples/pixel must be either 1, 3, or 4 (i.e. <i>SamplesPerPixel</i> minus <i>ExtraSamples</i>).</p> <!-- INDENTATION --> <p>Palette image colormaps that appear to be incorrectly written as 8-bit values are automatically scaled to 16-bits.</p> <!-- INDENTATION --> <p><i>TIFFReadRGBAStrip</i> is just a wrapper around the more general <i>TIFFRGBAImage</i>(3TIFF) facilities. It’s main advantage over the similar <i>TIFFReadRGBAImage()</i> 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 <i>TIFFReadRGBATile()</i> function does a similar operation for tiled images.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>1 is returned if the image was successfully read and converted. Otherwise, 0 is returned if an error was encountered.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <i>TIFFError</i>(3TIFF) routine.</p> <!-- INDENTATION --> <p><b>Sorry, can not handle %d-bit pictures</b>. The image had <i>BitsPerSample</i> other than 1, 2, 4, 8, or 16.</p> <!-- INDENTATION --> <p><b>Sorry, can not handle %d-channel images</b>. The image had <i>SamplesPerPixel</i> other than 1, 3, or 4.</p> <!-- INDENTATION --> <p><b>Missing needed "PhotometricInterpretation" tag</b>. The image did not have a tag that describes how to display the data.</p> <!-- INDENTATION --> <p><b>No "PhotometricInterpretation" tag, assuming RGB</b>. 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 <small>RGB.</small></p> <!-- INDENTATION --> <p><b>No "PhotometricInterpretation" tag, assuming min-is-black</b>. 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.</p> <!-- INDENTATION --> <p><b>No space for photometric conversion table</b>. There was insufficient memory for a table used to convert image samples to 8-bit <small>RGB.</small></p> <!-- INDENTATION --> <p><b>Missing required "Colormap" tag</b>. A Palette image did not have a required <i>Colormap</i> tag.</p> <!-- INDENTATION --> <p><b>No space for tile buffer</b>. There was insufficient memory to allocate an i/o buffer.</p> <!-- INDENTATION --> <p><b>No space for strip buffer</b>. There was insufficient memory to allocate an i/o buffer.</p> <!-- INDENTATION --> <p><b>Can not handle format</b>. The image has a format (combination of <i>BitsPerSample</i>, <i>SamplesPerPixel</i>, and <i>PhotometricInterpretation</i>) that <i>TIFFReadRGBAImage</i> can not handle.</p> <!-- INDENTATION --> <p><b>No space for B&W mapping table</b>. There was insufficient memory to allocate a table used to map grayscale data to <small>RGB.</small></p> <!-- INDENTATION --> <p><b>No space for Palette mapping table</b>. There was insufficient memory to allocate a table used to map data to 8-bit <small>RGB.</small></p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFRGBAImage</b>(3TIFF), <b>TIFFReadRGBAImage</b>(3TIFF), <b>TIFFReadRGBATile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\����!!$html/man/TIFFReadRGBATile.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:17 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFReadRGBATile</title> </head> <body> <h1 align=center>TIFFReadRGBATile</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFReadRGBATile − read and decode an image tile into a fixed-format raster</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="-2%"> <p><b>#define TIFFGetR(abgr)</b></p> </td> <td width="25%"></td> <td width="6%"></td> <td width="61%"> <p><b>((abgr) & 0xff)</b></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="-2%"> <p><b>#define TIFFGetG(abgr)</b></p> </td> <td width="25%"></td> <td width="6%"></td> <td width="61%"> <p><b>(((abgr) >> 8) & 0xff)</b></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="-2%"> <p><b>#define TIFFGetB(abgr)</b></p> </td> <td width="25%"></td> <td width="6%"></td> <td width="61%"> <p><b>(((abgr) >> 16) & 0xff)</b></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="-2%"> <p><b>#define TIFFGetA(abgr)</b></p> </td> <td width="25%"></td> <td width="6%"></td> <td width="61%"> <p><b>(((abgr) >> 24) & 0xff)</b></p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>int TIFFReadRGBATile(TIFF *</b><i>tif</i><b>, uint32</b> <i>x</i><b>, uint32</b> <i>y</i><b>, uint32 *</b><i>raster</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFReadRGBATile</i> reads a single tile of a tile-based image into memory, storing the result in the user supplied RGBA <i>raster</i>. 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).</p> <!-- INDENTATION --> <p>The <i>x</i> and <i>y</i> 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.</p> <!-- INDENTATION --> <p>Note that the raster is assume to be organized such that the pixel at location (<i>x</i>,<i>y</i>) is <i>raster</i>[<i>y</i>*<i>width</i>+<i>x</i>]; with the raster origin in the <i>lower-left hand corner</i> 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.</p> <!-- INDENTATION --> <p>Raster pixels are 8-bit packed red, green, blue, alpha samples. The macros <i>TIFFGetR</i>, <i>TIFFGetG</i>, <i>TIFFGetB</i>, and <i>TIFFGetA</i> should be used to access individual samples. Images without Associated Alpha matting information have a constant Alpha of 1.0 (255).</p> <!-- INDENTATION --> <p>See the <i>TIFFRGBAImage</i>(3TIFF) page for more details on how various image types are converted to RGBA values.</p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Samples must be either 1, 2, 4, 8, or 16 bits. Colorimetric samples/pixel must be either 1, 3, or 4 (i.e. <i>SamplesPerPixel</i> minus <i>ExtraSamples</i>).</p> <!-- INDENTATION --> <p>Palette image colormaps that appear to be incorrectly written as 8-bit values are automatically scaled to 16-bits.</p> <!-- INDENTATION --> <p><i>TIFFReadRGBATile</i> is just a wrapper around the more general <i>TIFFRGBAImage</i>(3TIFF) facilities. It’s main advantage over the similar <i>TIFFReadRGBAImage()</i> 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 <i>TIFFReadRGBAStrip()</i> function does a similar operation for stripped images.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>1 is returned if the image was successfully read and converted. Otherwise, 0 is returned if an error was encountered.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <i>TIFFError</i>(3TIFF) routine.</p> <!-- INDENTATION --> <p><b>Sorry, can not handle %d-bit pictures</b>. The image had <i>BitsPerSample</i> other than 1, 2, 4, 8, or 16.</p> <!-- INDENTATION --> <p><b>Sorry, can not handle %d-channel images</b>. The image had <i>SamplesPerPixel</i> other than 1, 3, or 4.</p> <!-- INDENTATION --> <p><b>Missing needed "PhotometricInterpretation" tag</b>. The image did not have a tag that describes how to display the data.</p> <!-- INDENTATION --> <p><b>No "PhotometricInterpretation" tag, assuming RGB</b>. 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 <small>RGB.</small></p> <!-- INDENTATION --> <p><b>No "PhotometricInterpretation" tag, assuming min-is-black</b>. 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.</p> <!-- INDENTATION --> <p><b>No space for photometric conversion table</b>. There was insufficient memory for a table used to convert image samples to 8-bit <small>RGB.</small></p> <!-- INDENTATION --> <p><b>Missing required "Colormap" tag</b>. A Palette image did not have a required <i>Colormap</i> tag.</p> <!-- INDENTATION --> <p><b>No space for tile buffer</b>. There was insufficient memory to allocate an i/o buffer.</p> <!-- INDENTATION --> <p><b>No space for strip buffer</b>. There was insufficient memory to allocate an i/o buffer.</p> <!-- INDENTATION --> <p><b>Can not handle format</b>. The image has a format (combination of <i>BitsPerSample</i>, <i>SamplesPerPixel</i>, and <i>PhotometricInterpretation</i>) that <i>TIFFReadRGBAImage</i> can not handle.</p> <!-- INDENTATION --> <p><b>No space for B&W mapping table</b>. There was insufficient memory to allocate a table used to map grayscale data to <small>RGB.</small></p> <!-- INDENTATION --> <p><b>No space for Palette mapping table</b>. There was insufficient memory to allocate a table used to map data to 8-bit <small>RGB.</small></p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFRGBAImage</b>(3TIFF), <b>TIFFReadRGBAImage</b>(3TIFF), <b>TIFFReadRGBAStrip</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\\�\y $html/man/TIFFReadRawStrip.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:17 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFReadRawStrip</title> </head> <body> <h1 align=center>TIFFReadRawStrip</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFReadRawStrip − return the undecoded contents of a strip of data from an open <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>tsize_t TIFFReadRawStrip(TIFF *</b><i>tif</i><b>, tstrip_t</b> <i>strip</i><b>, tdata_t</b> <i>buf</i><b>, tsize_t</b> <i>size</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Read the contents of the specified strip into the (user supplied) data buffer. Note that the value of <i>strip</i> is a ‘‘raw strip number.’’ That is, the caller must take into account whether or not the data is organized in separate planes (<i>PlanarConfiguration</i>=2). To read a full strip of data the data buffer should typically be at least as large as the number returned by <i>TIFFStripSize</i>.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The actual number of bytes of data that were placed in <i>buf</i> is returned; <i>TIFFReadEncodedStrip</i> returns −1 if an error was encountered.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <b>TIFFError</b>(3TIFF) routine.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFReadEncodedStrip</b>(3TIFF), <b>TIFFReadScanline</b>(3TIFF), <b>TIFFStripSize</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\��[&a a #html/man/TIFFReadRawTile.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:17 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFReadRawTile</title> </head> <body> <h1 align=center>TIFFReadRawTile</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFReadRawTile − return an undecoded tile of data from an open <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>tsize_t TIFFReadRawTile(TIFF *</b><i>tif</i><b>, ttile_t</b> <i>tile</i><b>, tdata_t</b> <i>buf</i><b>, tsize_t</b> <i>size</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Read the contents of the specified tile into the (user supplied) data buffer. Note that the value of <i>tile</i> is a ‘‘raw tile number.’’ That is, the caller must take into account whether or not the data is organized in separate planes (<i>PlanarConfiguration</i>=2). <i>TIFFComputeTile</i> 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 <i>TIFFTileSize</i>.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The actual number of bytes of data that were placed in <i>buf</i> is returned; <i>TIFFReadEncodedTile</i> returns −1 if an error was encountered.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <b>TIFFError</b>(3TIFF) routine.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFReadEncodedTile</b>(3TIFF), <b>TIFFReadTile</b>(3TIFF), <b>TIFFTileSize</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\z�!���$html/man/TIFFReadScanline.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:17 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFReadScanline</title> </head> <body> <h1 align=center>TIFFReadScanline</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#BUGS">BUGS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFReadScanline − read and decode a scanline of data from an open <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>int TIFFReadScanline(TIFF *</b><i>tif</i><b>, tdata_t</b> <i>buf</i><b>, uint32</b> <i>row</i><b>, tsample_t</b> <i>sample</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Read the data for the specified row into the (user supplied) data buffer <i>buf</i>. 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 <i>TIFFScanlineSize</i> to find out the size (in bytes) of a scanline buffer. The <i>row</i> parameter is always used by <i>TIFFReadScanline</i>; the <i>sample</i> parameter is used only if data are organized in separate planes (<i>PlanarConfiguration</i>=2).</p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>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 <i>FillOrder</i> 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,</p> <!-- INDENTATION --> <p>In C++ the <i>sample</i> parameter defaults to 0.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFReadScanline</i> returns −1 if it detects an error; otherwise 1 is returned.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <i>TIFFError</i>(3TIFF) routine.</p> <!-- INDENTATION --> <p><b>Compression algorithm does not support random access</b>. Data was requested in a non-sequential order from a file that uses a compression algorithm and that has <i>RowsPerStrip</i> 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.</p> </td> </table> <a name="BUGS"></a> <h2>BUGS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Reading subsampled YCbCR data does not work correctly because, for <i>PlanarConfiguration</i>=2 the size of a scanline is not calculated on a per-sample basis, and for <i>PlanarConfiguration</i>=1 the library does not unpack the block-interleaved samples; use the strip- and tile-based interfaces to read these formats.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFReadEncodedStrip</b>(3TIFF), <b>TIFFReadRawStrip</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�)̐�� html/man/TIFFReadTile.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:17 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFReadTile</title> </head> <body> <h1 align=center>TIFFReadTile</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFReadTile − read and decode a tile of data from an open <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>tsize_t TIFFReadTile(TIFF *</b><i>tif</i><b>, tdata_t</b> <i>buf</i><b>, uint32</b> <i>x</i><b>, uint32</b> <i>y</i><b>, uint32</b> <i>z</i><b>, tsample_t</b> <i>sample</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Return the data for the tile <i>containing</i> the specified coordinates. The data placed in <i>buf</i> 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 <i>TIFFTileSize</i> to find out the size (in bytes) of a tile buffer. The <i>x</i> and <i>y</i> parameters are always used by <i>TIFFReadTile</i>. The <i>z</i> parameter is used if the image is deeper than 1 slice (<i>ImageDepth</i>>1). The <i>sample</i> parameter is used only if data are organized in separate planes (<i>PlanarConfiguration</i>=2).</p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>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 <i>FillOrder</i> 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,</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFReadTile</i> returns −1 if it detects an error; otherwise the number of bytes in the decoded tile is returned.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <b>TIFFError</b>(3TIFF) routine.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFCheckTile</b>(3TIFF), <b>TIFFComputeTile</b>(3TIFF), <b>TIFFOpen</b>(3TIFF), <b>TIFFReadEncodedTile</b>(3TIFF), <b>TIFFReadRawTile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�i���$html/man/TIFFSetDirectory.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:17 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFSetDirectory</title> </head> <body> <h1 align=center>TIFFSetDirectory</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFSetDirectory, TIFFSetSubDirectory − set the current directory for an open <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>int TIFFSetDirectory(TIFF *</b><i>tif</i><b>, tdir_t</b> <i>dirnum</i><b>)<br> int TIFFSetSubDirectory(TIFF *</b><i>tif</i><b>, uint32</b> <i>diroff</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFSetDirectory</i> changes the current directory and reads its contents with <i>TIFFReadDirectory</i>. The parameter <i>dirnum</i> specifies the subfile/directory as an integer number, with the first directory numbered zero.</p> <!-- INDENTATION --> <p><i>TIFFSetSubDirectory</i> acts like <i>TIFFSetDirectory</i>, except the directory is specified as a file offset instead of an index; this is required for accessing subdirectories linked through a <i>SubIFD</i> tag.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>On successful return 1 is returned. Otherwise, 0 is returned if <i>dirnum</i> or <i>diroff</i> specifies a non-existent directory, or if an error was encountered while reading the directory’s contents.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <i>TIFFError</i>(3TIFF) routine.</p> <!-- INDENTATION --> <p><b>%s: Error fetching directory count</b>. An error was encountered while reading the ‘‘directory count’’ field.</p> <!-- INDENTATION --> <p><b>%s: Error fetching directory link</b>. An error was encountered while reading the ‘‘link value’’ that points to the next directory in a file.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFCurrentDirectory</i>(3TIFF), <i>TIFFOpen</i>(3TIFF), <i>TIFFReadDirectory</i>(3TIFF), <i>TIFFWriteDirectory</i>(3TIFF), <i>libtiff</i>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\ӹ�uyuy html/man/TIFFSetField.3tiff.htmlnu�[���<!-- Creator : groff version 1.20.1 --> <!-- CreationDate: Thu May 6 13:48:46 2010 --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <meta name="Content-Style" content="text/css"> <style type="text/css"> p { margin-top: 0; margin-bottom: 0; vertical-align: top } pre { margin-top: 0; margin-bottom: 0; vertical-align: top } table { margin-top: 0; margin-bottom: 0; vertical-align: top } h1 { text-align: center } </style> <title>TIFFSetField</title> </head> <body> <h1 align="center">TIFFSetField</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <h2>NAME <a name="NAME"></a> </h2> <p style="margin-left:11%; margin-top: 1em">TIFFSetField, TIFFVSetField − set the value(s) of a tag in a <small>TIFF</small> file open for writing</p> <h2>SYNOPSIS <a name="SYNOPSIS"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>#include <tiffio.h></b></p> <p style="margin-left:11%; margin-top: 1em"><b>int TIFFSetField(TIFF *</b><i>tif</i><b>, ttag_t</b> <i>tag</i><b>,</b> <i>...</i><b>)</b></p> <p style="margin-left:11%; margin-top: 1em"><b>#include <stdarg.h></b></p> <p style="margin-left:11%; margin-top: 1em"><b>int TIFFVSetField(TIFF *</b><i>tif</i><b>, ttag_t</b> <i>tag</i><b>, va_list</b> <i>ap</i><b>)</b></p> <h2>DESCRIPTION <a name="DESCRIPTION"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b><i>TIFFSetField</i></b> sets the value of a field or pseudo-tag in the current directory associated with the open <small>TIFF</small> file <i>tif</i>. (A <i>pseudo-tag</i> is a parameter that is used to control the operation of the <small>TIFF</small> 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 <i>TIFFOpen</i>(3TIFF); pseudo-tags can be set whether the file was opened for reading or writing. The field is identified by <i>tag</i>, one of the values defined in the include file <b>tiff.h</b> (see also the table below). The actual value is specified using a variable argument list, as prescribed by the <i>stdarg</i>(3) interface (or, on some machines, the <i>varargs</i>(3) interface.)</p> <p style="margin-left:11%; margin-top: 1em"><i>TIFFVSetField</i> is functionally equivalent to <i>TIFFSetField</i> except that it takes a pointer to a variable argument list. <i>TIFFVSetField</i> is useful for writing routines that are layered on top of the functionality provided by <i>TIFFSetField</i>.</p> <p style="margin-left:11%; margin-top: 1em">The tags understood by <i>libtiff</i>, the number of parameter values, and the expected types for the parameter values are shown below. The data types are: <i>char*</i> is null-terminated string and corresponds to the <small>ASCII</small> data type; <i>uint16</i> is an unsigned 16-bit value; <i>uint32</i> is an unsigned 32-bit value; <i>uint16*</i> is an array of unsigned 16-bit values. <i>void*</i> is an array of data values of unspecified type.</p> <p style="margin-left:11%; margin-top: 1em">Consult the <small>TIFF</small> specification for information on the meaning of each tag.</p> <table width="100%" border="0" rules="none" frame="void" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p><i>Tag Name</i></p></td> <td width="11%"></td> <td width="29%"> <p><i>Count</i></p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p><i>Types</i></p></td> <td width="11%"> <p><i>Notes</i></p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_ARTIST</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>char*</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_BADFAXLINES</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_BITSPERSAMPLE</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_CLEANFAXDATA</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_COLORMAP</p></td> <td width="11%"></td> <td width="29%"> <p>3</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16*</p></td> <td width="11%"> <p>1<<BitsPerSample arrays</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_COMPRESSION</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_CONSECUTIVEBADFAXLINES</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_COPYRIGHT</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>char*</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_DATETIME</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>char*</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_DOCUMENTNAME</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>char*</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_DOTRANGE</p></td> <td width="11%"></td> <td width="29%"> <p>2</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_EXTRASAMPLES</p></td> <td width="11%"></td> <td width="29%"> <p>2</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16,uint16*</p></td> <td width="11%"> <p>† count & types array</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_FAXFILLFUNC</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>TIFFFaxFillFunc</p></td> <td width="11%"> <p>G3/G4 compression pseudo-tag</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_FAXMODE</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>int</p></td> <td width="11%"> <p>† G3/G4 compression pseudo-tag</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_FILLORDER</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_GROUP3OPTIONS</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_GROUP4OPTIONS</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_HALFTONEHINTS</p></td> <td width="11%"></td> <td width="29%"> <p>2</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_HOSTCOMPUTER</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>char*</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_ICCPROFILE</p></td> <td width="11%"></td> <td width="29%"> <p>2</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32,void*</p></td> <td width="11%"> <p>count, profile data</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_IMAGEDEPTH</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_IMAGEDESCRIPTION</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>char*</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_IMAGELENGTH</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_IMAGEWIDTH</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_INKNAMES</p></td> <td width="11%"></td> <td width="29%"> <p>2</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16, char*</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_INKSET</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_JPEGCOLORMODE</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>int</p></td> <td width="11%"> <p>† JPEG pseudo-tag</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_JPEGQUALITY</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>int</p></td> <td width="11%"> <p>JPEG pseudo-tag</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_JPEGTABLES</p></td> <td width="11%"></td> <td width="29%"> <p>2</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32*,void*</p></td> <td width="11%"> <p>† count & tables</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_JPEGTABLESMODE</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>int</p></td> <td width="11%"> <p>† JPEG pseudo-tag</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_MAKE</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>char*</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_MATTEING</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_MAXSAMPLEVALUE</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_MINSAMPLEVALUE</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_MODEL</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>char*</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_ORIENTATION</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PAGENAME</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>char*</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PAGENUMBER</p></td> <td width="11%"></td> <td width="29%"> <p>2</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PHOTOMETRIC</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PHOTOSHOP</p></td> <td width="11%"></td> <td width="29%"> <p>?</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32,void*</p></td> <td width="11%"> <p>count, data</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PLANARCONFIG</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PREDICTOR</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_PRIMARYCHROMATICITIES</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>float*</p></td> <td width="11%"> <p>6-entry array</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_REFERENCEBLACKWHITE</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>float*</p></td> <td width="11%"> <p>† 6-entry array</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_RESOLUTIONUNIT</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_RICHTIFFIPTC</p></td> <td width="11%"></td> <td width="29%"> <p>2</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32,void*</p></td> <td width="11%"> <p>count, data</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_ROWSPERSTRIP</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32</p></td> <td width="11%"> <p>† must be > 0</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SAMPLEFORMAT</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SAMPLESPERPIXEL</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> <p>† value must be <= 4</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SMAXSAMPLEVALUE</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>double</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SMINSAMPLEVALUE</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>double</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SOFTWARE</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>char*</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_STONITS</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>double</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SUBFILETYPE</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_SUBIFD</p></td> <td width="11%"></td> <td width="29%"> <p>2</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16,uint32*</p></td> <td width="11%"> <p>count & offsets array</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_TARGETPRINTER</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>char*</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_THRESHHOLDING</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_TILEDEPTH</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_TILELENGTH</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32</p></td> <td width="11%"> <p>† must be a multiple of 8</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_TILEWIDTH</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32</p></td> <td width="11%"> <p>† must be a multiple of 8</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_TRANSFERFUNCTION</p></td> <td width="11%"></td> <td width="29%"> <p>1 or 3‡ uint16*</p></td> <td width="11%"> <p>1<<BitsPerSample entry arrays</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_WHITEPOINT</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>float*</p></td> <td width="11%"> <p>2-entry array</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_XMLPACKET</p></td> <td width="11%"></td> <td width="29%"> <p>2</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint32,void*</p></td> <td width="11%"> <p>count, data</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_XPOSITION</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>float</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_XRESOLUTION</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>float</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_YCBCRCOEFFICIENTS</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>float*</p></td> <td width="11%"> <p>† 3-entry array</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_YCBCRPOSITIONING</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_YCBCRSAMPLING</p></td> <td width="11%"></td> <td width="29%"> <p>2</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>uint16</p></td> <td width="11%"> <p>†</p></td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_YPOSITION</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>float</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"> <p>TIFFTAG_YRESOLUTION</p></td> <td width="11%"></td> <td width="29%"> <p>1</p></td> <td width="11%"> </td></tr> <tr valign="top" align="left"> <td width="11%"></td> <td width="38%"></td> <td width="11%"></td> <td width="29%"> <p>float</p></td> <td width="11%"> </td></tr> </table> <p style="margin-left:11%;">† Tag may not have its values changed once data is written. <br> ‡ If <i>SamplesPerPixel</i> is one, then a single array is passed; otherwise three arrays should be passed. <br> * The contents of this field are quite complex. See <b>The ICC Profile Format Specification</b>, Annex B.3 "Embedding ICC Profiles in TIFF Files" (available at http://www.color.org) for an explanation.</p> <h2>RETURN VALUES <a name="RETURN VALUES"></a> </h2> <p style="margin-left:11%; margin-top: 1em">1 is returned if the operation was successful. Otherwise, 0 is returned if an error was detected.</p> <h2>DIAGNOSTICS <a name="DIAGNOSTICS"></a> </h2> <p style="margin-left:11%; margin-top: 1em">All error messages are directed to the <b>TIFFError</b>(3TIFF) routine.</p> <p style="margin-left:11%; margin-top: 1em"><b>%s: Cannot modify tag "%s" while writing</b>. 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.</p> <p style="margin-left:11%; margin-top: 1em"><b>%d: Bad value for "%s"</b>. An invalid value was supplied for the named tag.</p> <h2>SEE ALSO <a name="SEE ALSO"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFOpen</b>(3TIFF), <b>TIFFGetField</b>(3TIFF), <b>TIFFSetDirectory</b>(3TIFF), <b>TIFFWriteDirectory</b>(3TIFF), <b>TIFFReadDirectory</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <p style="margin-left:11%; margin-top: 1em">Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> <hr> </body> </html> PK粐\s�}u html/man/TIFFWarning.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:18 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFWarning</title> </head> <body> <h1 align=center>TIFFWarning</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFWarning, TIFFSetWarningHandler − library warning interface</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>void TIFFWarning(const char *</b><i>module</i><b>, const char *</b><i>fmt</i><b>,</b> <i>...</i><b>)</b></p> <!-- INDENTATION --> <p><b>#include <stdarg.h></b></p> <!-- INDENTATION --> <p><b>typedef void (*TIFFWarningHandler)(const char *</b><i>module</i><b>, const char *</b><i>fmt</i><b>, va_list</b> <i>ap</i><b>);</b></p> <!-- INDENTATION --> <p><b>TIFFWarningHandler TIFFSetWarningHandler(TIFFWarningHandler</b> <i>handler</i><b>);</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFWarning</i> invokes the library-wide warning handler function to (normally) write a warning message to the <b>stderr</b>. The <i>fmt</i> parameter is a <i>printf</i>(3S) format string, and any number arguments can be supplied. The <i>module</i> 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.</p> <!-- INDENTATION --> <p>Applications that desire to capture control in the event of a warning should use <i>TIFFSetWarningHandler</i> to override the default warning handler. A <small>NULL</small> (0) warning handler function may be installed to suppress error messages.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFSetWarningHandler</i> returns a reference to the previous error handling function.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFError</b>(3TIFF), <b>libtiff</b>(3TIFF), <b>printf</b>(3)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�Uk�VV&html/man/TIFFWriteDirectory.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:18 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFWriteDirectory</title> </head> <body> <h1 align=center>TIFFWriteDirectory</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFWriteDirectory, TIFFRewriteDirectory, TIFFCheckpointDirectory − write the current directory in an open <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>int TIFFWriteDirectory(TIFF *</b><i>tif</i><b>)<br> int TIFFRewriteDirectory(TIFF *</b><i>tif</i><b>)<br> int TIFFCheckpointDirectory(TIFF *</b><i>tif</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFWriteDirectory</i> 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 <i>TIFFWriteDirectory</i> when writing multiple subfiles to a single <small>TIFF</small> file. <i>TIFFWriteDirectory</i> is automatically called by <i>TIFFClose</i> and <i>TIFFFlush</i> to write a modified directory if the file is open for writing.</p> <!-- INDENTATION --> <p>The <i>TIFFRewriteDirectory</i> function operates similarly to <i>TIFFWriteDirectory,</i> 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 <i>TIFFWriteDirectory</i> 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.</p> <!-- INDENTATION --> <p>The <i>TIFFCheckpointDirectory</i> writes the current state of the tiff directory into the file to make what is currently in the file readable. Unlike <i>TIFFWriteDirectory, TIFFCheckpointDirectory</i> 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 <i>TIFFWriteDirectory</i> as usual to finish it off cleanly.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>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.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <i>TIFFError</i>(3TIFF) routine.</p> <!-- INDENTATION --> <p><b>Error post-encoding before directory write</b>. Before writing the contents of the current directory, any pending data are flushed. This message indicates that an error occurred while doing this.</p> <!-- INDENTATION --> <p><b>Error flushing data before directory write</b>. Before writing the contents of the current directory, any pending data are flushed. This message indicates that an error occurred while doing this.</p> <!-- INDENTATION --> <p><b>Cannot write directory, out of space</b>. There was not enough space to allocate a temporary area for the directory that was to be written.</p> <!-- INDENTATION --> <p><b>Error writing directory count</b>. A write error occurred when writing the count of fields in the directory.</p> <!-- INDENTATION --> <p><b>Error writing directory contents</b>. A write error occurred when writing the directory fields.</p> <!-- INDENTATION --> <p><b>Error writing directory link</b>. A write error occurred when writing the link to the next directory.</p> <!-- INDENTATION --> <p><b>Error writing data for field "%s"</b>. A write error occurred when writing indirect data for the specified field.</p> <!-- INDENTATION --> <p><b>Error writing TIFF header</b>. A write error occurred when re-writing header at the front of the file.</p> <!-- INDENTATION --> <p><b>Error fetching directory count</b>. 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.</p> <!-- INDENTATION --> <p><b>Error fetching directory link</b>. 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.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFError</b>(3TIFF), <b>TIFFReadDirectory</b>(3TIFF), <b>TIFFSetDirectory</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�>���)html/man/TIFFWriteEncodedStrip.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:18 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFWriteEncodedStrip</title> </head> <body> <h1 align=center>TIFFWriteEncodedStrip</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>TIFFWritedEncodedStrip − compress and write a strip of data to an open</big> TIFF <big>file</big></p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big><b>#include <tiffio.h></b></big></p> <!-- INDENTATION --> <p><big><b>tsize_t TIFFWriteEncodedStrip(TIFF *</b><i>tif</i><b>, tstrip_t</b> <i>strip</i><b>, tdata_t</b> <i>buf</i><b>, tsize_t</b> <i>size</i><b>)</b></big></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>Compress <i>size</i> bytes of raw data from <i>buf</i> and write the result to the specified strip; replacing any previously written data. Note that the value of <i>strip</i> is a ‘‘raw strip number.’’ That is, the caller must take into account whether or not the data are organized in separate planes (<i>PlanarConfiguration</i>=2).</big></p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>The library writes encoded data using the native machine byte order. Correctly implemented</big> TIFF <big>readers are expected to do any necessary byte-swapping to correctly process image data with BitsPerSample greater than 8.</big></p> <!-- INDENTATION --> <p><big>The strip number must be valid according to the current settings of the <i>ImageLength</i> and <i>RowsPerStrip</i> tags. An image may be dynamically grown by increasing the value of <i>ImageLength</i> prior to each call to <i>TIFFWriteEncodedStrip</i>.</big></p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>−1 is returned if an error was encountered. Otherwise, the value of <i>size</i> is returned.</big></p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>All error messages are directed to the <i>TIFFError</i>(3TIFF) routine.</big></p> <!-- INDENTATION --> <p><big><b>%s: File not open for writing</b>. The file was opened for reading, not writing.</big></p> <!-- INDENTATION --> <p><big><b>Can not write scanlines to a tiled image</b>. The image is assumed to be organized in tiles because the <i>TileWidth</i> and <i>TileLength</i> tags have been set with <i>TIFFSetField</i>(3TIFF).</big></p> <!-- INDENTATION --> <p><big><b>%s: Must set "ImageWidth" before writing data</b>. The image’s width has not be set before the first write. See <i>TIFFSetField</i>(3TIFF) for information on how to do this.</big></p> <!-- INDENTATION --> <p><big><b>%s: Must set "PlanarConfiguration" before writing data</b>. The organization of data has not be defined before the first write. See <i>TIFFSetField</i>(3TIFF) for information on how to do this.</big></p> <!-- INDENTATION --> <p><big><b>%s: No space for strip arrays"</b>. There was not enough space for the arrays that hold strip offsets and byte counts.</big></p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big><b>TIFFOpen</b>(3TIFF), <b>TIFFWriteScanline</b>(3TIFF), <b>TIFFWriteRawStrip</b>(3TIFF), <b>libtiff</b>(3TIFF)</big></p> <!-- INDENTATION --> <p><big>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></big></p> </td> </table> <hr> </body> </html> PK粐\���(html/man/TIFFWriteEncodedTile.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:18 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFWriteEncodedTile</title> </head> <body> <h1 align=center>TIFFWriteEncodedTile</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>TIFFWritedEncodedTile − compress and write a tile of data to an open</big> TIFF <big>file</big></p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big><b>#include <tiffio.h></b></big></p> <!-- INDENTATION --> <p><big><b>tsize_t TIFFWriteEncodedTile(TIFF *</b><i>tif</i><b>, ttile_t</b> <i>tile</i><b>, tdata_t</b> <i>buf</i><b>, tsize_t</b> <i>size</i><b>)</b></big></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>Compress <i>size</i> bytes of raw data from <i>buf</i> and <b>append</b> the result to the end of the specified tile. Note that the value of <i>tile</i> is a ‘‘raw tile number.’’ That is, the caller must take into account whether or not the data are organized in separate places (<i>PlanarConfiguration</i>=2). <i>TIFFComputeTile</i> automatically does this when converting an (x,y,z,sample) coordinate quadruple to a tile number.</big></p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>The library writes encoded data using the native machine byte order. Correctly implemented</big> TIFF <big>readers are expected to do any necessary byte-swapping to correctly process image data with BitsPerSample greater than 8.</big></p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>−1 is returned if an error was encountered. Otherwise, the value of <i>size</i> is returned.</big></p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>All error messages are directed to the <b>TIFFError</b>(3TIFF) routine.</big></p> <!-- INDENTATION --> <p><big><b>%s: File not open for writing</b>. The file was opened for reading, not writing.</big></p> <!-- INDENTATION --> <p><big><b>Can not write tiles to a stripped image</b>. The image is assumed to be organized in strips because neither of the <i>TileWidth</i> or <i>TileLength</i> tags have been set with <b>TIFFSetField</b>(3TIFF).</big></p> <!-- INDENTATION --> <p><big><b>%s: Must set "ImageWidth" before writing data</b>. The image’s width has not be set before the first write. See <b>TIFFSetField</b>(3TIFF) for information on how to do this.</big></p> <!-- INDENTATION --> <p><big><b>%s: Must set "PlanarConfiguration" before writing data</b>. The organization of data has not be defined before the first write. See <b>TIFFSetField</b>(3TIFF) for information on how to do this.</big></p> <!-- INDENTATION --> <p><big><b>%s: No space for tile arrays"</b>. There was not enough space for the arrays that hold tile offsets and byte counts.</big></p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big><b>TIFFOpen</b>(3TIFF), <b>TIFFWriteTile</b>(3TIFF), <b>TIFFWriteRawTile</b>(3TIFF), <b>libtiff</b>(3TIFF)</big></p> <!-- INDENTATION --> <p><big>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></big></p> </td> </table> <hr> </body> </html> PK粐\E0Q��%html/man/TIFFWriteRawStrip.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:18 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFWriteRawstrip</title> </head> <body> <h1 align=center>TIFFWriteRawstrip</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFWriteRawStrip − write a strip of raw data to an open <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>tsize_t TIFFWriteRawStrip(TIFF *</b><i>tif</i><b>, tstrip_t</b> <i>strip</i><b>, tdata_t</b> <i>buf</i><b>, tsize_t</b> <i>size</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Append <i>size</i> bytes of raw data to the specified strip.</p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The strip number must be valid according to the current settings of the <i>ImageLength</i> and <i>RowsPerStrip</i> tags. An image may be dynamically grown by increasing the value of <i>ImageLength</i> prior to each call to <i>TIFFWriteRawStrip</i>.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>−1 is returned if an error occurred. Otherwise, the value of <i>size</i> is returned.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <b>TIFFError</b>(3TIFF) routine.</p> <!-- INDENTATION --> <p><b>%s: File not open for writing</b>. The file was opened for reading, not writing.</p> <!-- INDENTATION --> <p><b>Can not write scanlines to a tiled image</b>. The image is assumed to be organized in tiles because the <i>TileWidth</i> and <i>TileLength</i> tags have been set with <b>TIFFSetField</b>(3TIFF).</p> <!-- INDENTATION --> <p><b>%s: Must set "ImageWidth" before writing data</b>. The image’s width has not be set before the first write. See <b>TIFFSetField</b>(3TIFF) for information on how to do this.</p> <!-- INDENTATION --> <p><b>%s: Must set "PlanarConfiguration" before writing data</b>. The organization of data has not be defined before the first write. See <b>TIFFSetField</b>(3TIFF) for information on how to do this.</p> <!-- INDENTATION --> <p><b>%s: No space for strip arrays"</b>. There was not enough space for the arrays that hold strip offsets and byte counts.</p> <!-- INDENTATION --> <p><b>%s: Strip %d out of range, max %d</b>. The specified strip is not a valid strip according to the currently specified image dimensions.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFWriteEncodedStrip</b>(3TIFF), <b>TIFFWriteScanline</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\Se�E��$html/man/TIFFWriteRawTile.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:18 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFWriteRawtile</title> </head> <body> <h1 align=center>TIFFWriteRawtile</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFWriteRawTile − write a tile of raw data to an open <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>tsize_t TIFFWriteRawTile(TIFF *</b><i>tif</i><b>, ttile_t</b> <i>tile</i><b>, tdata_t</b> <i>buf</i><b>, tsize_t</b> <i>size</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Append <i>size</i> bytes of raw data to the specified tile.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>−1 is returned if an error occurred. Otherwise, the value of <i>size</i> is returned.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <b>TIFFError</b>(3TIFF) routine.</p> <!-- INDENTATION --> <p><b>%s: File not open for writing</b>. The file was opened for reading, not writing.</p> <!-- INDENTATION --> <p><b>Can not write tiles to a stripped image</b>. The image is assumed to be organized in strips because neither of the <i>TileWidth</i> or <i>TileLength</i> tags have been set with <b>TIFFSetField</b>(3TIFF).</p> <!-- INDENTATION --> <p><b>%s: Must set "ImageWidth" before writing data</b>. The image’s width has not be set before the first write. See <b>TIFFSetField</b>(3TIFF) for information on how to do this.</p> <!-- INDENTATION --> <p><b>%s: Must set "PlanarConfiguration" before writing data</b>. The organization of data has not be defined before the first write. See <b>TIFFSetField</b>(3TIFF) for information on how to do this.</p> <!-- INDENTATION --> <p><b>%s: No space for tile arrays"</b>. There was not enough space for the arrays that hold tile offsets and byte counts.</p> <!-- INDENTATION --> <p><b>%s: Specified tile %d out of range, max %d</b>. The specified tile is not valid according to the currently specified image dimensions.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFWriteEncodedTile</b>(3TIFF), <b>TIFFWriteScanline</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\R����%html/man/TIFFWriteScanline.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:18 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFWriteScanline</title> </head> <body> <h1 align=center>TIFFWriteScanline</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#NOTES">NOTES</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#BUGS">BUGS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFWriteScanline − write a scanline to an open <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>int TIFFWriteScanline(TIFF *</b><i>tif</i><b>, tdata_t</b> <i>buf</i><b>, uint32</b> <i>row</i><b>, tsample_t</b> <i>sample</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Write data to a file at the specified row. The <i>sample</i> parameter is used only if data are organized in separate planes (<i>PlanarConfiguration</i>=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 <small>TIFF</small> directory (see further below). If the current scanline is past the end of the current subfile, the <i>ImageLength</i> field is automatically increased to include the scanline (except for <i>PlanarConfiguration</i>=2, where the <i>ImageLength</i> cannot be changed once the first data are written). If the <i>ImageLength</i> is increased, the <i>StripOffsets</i> and <i>StripByteCounts</i> fields are similarly enlarged to reflect data written past the previous end of image.</p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The library writes encoded data using the native machine byte order. Correctly implemented <small>TIFF</small> 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.</p> <!-- INDENTATION --> <p>In C++ the <i>sample</i> parameter defaults to 0.</p> <!-- INDENTATION --> <p>Once data are written to a file for the current directory, the values of certain tags may not be altered; see <i>TIFFSetField</i>(3TIFF) for more information.</p> <!-- INDENTATION --> <p>It is not possible to write scanlines to a file that uses a tiled organization. The routine <i>TIFFIsTiled</i> can be used to determine if the file is organized as tiles or strips.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFWriteScanline</i> returns −1 if it immediately detects an error and 1 for a successful write.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <i>TIFFError</i>(3TIFF) routine.</p> <!-- INDENTATION --> <p><b>%s: File not open for writing .</b> The file was opened for reading, not writing.</p> <!-- INDENTATION --> <p><b>Can not write scanlines to a tiled image</b>. An attempt was made to write a scanline to a tiled image. The image is assumed to be organized in tiles because the <i>TileWidth</i> and <i>TileLength</i> tags have been set with <i>TIFFSetField</i>(3TIFF).</p> <!-- INDENTATION --> <p><b>Compression algorithm does not support random access</b>. Data was written in a non-sequential order to a file that uses a compression algorithm and that has <i>RowsPerStrip</i> 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 <i>RowsPerStrip</i> should be set to one.</p> <!-- INDENTATION --> <p><b>%s: Must set "ImageWidth" before writing data</b>. The image’s width has not be set before the first write. See <b>TIFFSetField</b>(3TIFF) for information on how to do this.</p> <!-- INDENTATION --> <p><b>%s: Must set "PlanarConfiguration" before writing data</b>. The organization of data has not be defined before the first write. See <b>TIFFSetField</b>(3TIFF) for information on how to do this.</p> <!-- INDENTATION --> <p><b>Can not change "ImageLength" when using separate planes</b>. Separate image planes are being used (<i>PlanarConfiguration</i>=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 (<i>PlanarConfiguration</i>=1).</p> <!-- INDENTATION --> <p><b>%d: Sample out of range, max %d</b>. The <i>sample</i> parameter was greater than the value of the SamplesPerPixel tag.</p> <!-- INDENTATION --> <p><b>%s: No space for strip arrays .</b> There was not enough space for the arrays that hold strip offsets and byte counts.</p> </td> </table> <a name="BUGS"></a> <h2>BUGS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Writing subsampled YCbCR data does not work correctly because, for <i>PlanarConfiguration</i>=2 the size of a scanline is not calculated on a per-sample basis, and for <i>PlanarConfiguration</i>=1 the library does not pack the block-interleaved samples.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFWriteEncodedStrip</b>(3TIFF), <b>TIFFWriteRawStrip</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�ss�66!html/man/TIFFWriteTile.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:18 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFWriteTile</title> </head> <body> <h1 align=center>TIFFWriteTile</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFWriteTile − encode and write a tile of data to an open <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>tsize_t TIFFWriteTile(TIFF *</b><i>tif</i><b>, tdata_t</b> <i>buf</i><b>, uint32</b> <i>x</i><b>, uint32</b> <i>y</i><b>, uint32</b> <i>z</i><b>, tsample_t</b> <i>sample</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Write the data for the tile <i>containing</i> the specified coordinates. The data in <i>buf</i> 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 <i>TIFFTileSize</i> to find out the size (in bytes) of a tile buffer. The <i>x</i> and <i>y</i> parameters are always used by <i>TIFFWriteTile</i>. The <i>z</i> parameter is used if the image is deeper than 1 slice (<i>ImageDepth</i>>1). The <i>sample</i> parameter is used only if data are organized in separate planes (<i>PlanarConfiguration</i>=2).</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFWriteTile</i> returns −1 if it detects an error; otherwise the number of bytes in the tile is returned.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the <b>TIFFError</b>(3TIFF) routine.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFCheckTile</b>(3TIFF), <b>TIFFComputeTile</b>(3TIFF), <b>TIFFOpen</b>(3TIFF), <b>TIFFReadTile</b>(3TIFF), <b>TIFFWriteScanline</b>(3TIFF), <b>TIFFWriteEncodedTile</b>(3TIFF), <b>TIFFWriteRawTile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�λ((html/man/TIFFbuffer.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:15 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFBUFFER</title> </head> <body> <h1 align=center>TIFFBUFFER</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFReadBufferSetup, TIFFWriteBufferSetup − I/O buffering control routines</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <pre><b>#include <tiffio.h> int TIFFReadBufferSetup(TIFF *</b><i>tif</i><b>, tdata_t</b> <i>buffer</i><b>, tsize_t</b> <i>size</i><b>); int TIFFWriteBufferSetup(TIFF *</b><i>tif</i><b>, tdata_t</b> <i>buffer</i><b>, tsize_t</b> <i>size</i><b>); </b></pre> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>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.</p> <!-- INDENTATION --> <p><i>TIFFReadBufferSetup</i> sets up the data buffer used to read raw (encoded) data from a file. If the specified pointer is <small>NULL</small> (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. <i>TIFFReadBufferSetup</i> returns a non-zero value if the setup was successful and zero otherwise.</p> <!-- INDENTATION --> <p><i>TIFFWriteBufferSetup</i> sets up the data buffer used to write raw (encoded) data to a file. If the specified <i>size</i> 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 <i>buffer</i> is <small>NULL</small> (zero), then a buffer of the appropriate size is dynamically allocated. <i>TIFFWriteBufferSetup</i> returns a non-zero value if the setup was successful and zero otherwise.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>%s: No space for data buffer at scanline %ld</b>. <i>TIFFReadBufferSetup</i> was unable to dynamically allocate space for a data buffer.</p> <!-- INDENTATION --> <p><b>%s: No space for output buffer</b>. <i>TIFFWriteBufferSetup</i> was unable to dynamically allocate space for a data buffer.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\���tthtml/man/TIFFcodec.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:16 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>CODEC</title> </head> <body> <h1 align=center>CODEC</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFFindCODEC, TIFFRegisterCODEC, TIFFUnRegisterCODEC, TIFFIsCODECConfigured − codec-related utility routines</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>const TIFFCodec* TIFFFindCODEC(uint16</b> <i>scheme</i><b>);<br> TIFFCodec* TIFFRegisterCODEC(uint16</b> <i>scheme</i><b>, const char *</b><i>method</i><b>, TIFFInitMethod</b> <i>init</i><b>);<br> void TIFFUnRegisterCODEC(TIFFCodec *</b><i>codec</i><b>);<br> int TIFFIsCODECConfigured(uint16</b> <i>scheme</i><b>);</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>libtiff</i> supports a variety of compression schemes implemented by software <i>codecs</i>. 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 <small>TIFF</small> <i>Compression</i> tag; e.g. 5 for <small>LZW</small> compression.</p> <!-- INDENTATION --> <p>The <i>TIFFRegisterCODEC</i> routine can be used to augment or override the set of codecs available to an application. If the specified <i>scheme</i> already has a registered codec then it is <i>overridden</i> and any images with data encoded with this compression scheme will be decoded using the supplied coded.</p> <!-- INDENTATION --> <p><i>TIFFIsCODECConfigured</i> returns 1 if the codec is configured and working. Otherwise 0 will be returned.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>No space to register compression scheme %s</b>. <i>TIFFRegisterCODEC</i> was unable to allocate memory for the data structures needed to register a codec.</p> <!-- INDENTATION --> <p><b>Cannot remove compression scheme %s; not registered</b>. <i>TIFFUnRegisterCODEC</i> did not locate the specified codec in the table of registered compression schemes.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\r}��X�Xhtml/man/TIFFcolor.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:16 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>COLOR</title> </head> <body> <h1 align=center>COLOR</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFYCbCrToRGBInit, TIFFYCbCrtoRGB, TIFFCIELabToRGBInit, TIFFCIELabToXYZ, TIFFXYZToRGB − color conversion routines.</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB *</b><i>ycbcr</i><b>, float *</b><i>luma</i><b>, float *</b><i>refBlackWhite"</i><b>);"<br> void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *</b><i>ycbcr</i><b>, uint32</b> <i>Y</i><b>, int32</b> <i>Cb</i><b>, int32</b> <i>Cr</i><b>, uint32 *</b><i>R</i><b>, uint32 *</b><i>G</i><b>, uint32 *</b><i>B</i> <b>);</b></p> <!-- INDENTATION --> <p><b>int TIFFCIELabToRGBInit(TIFFCIELabToRGB *</b><i>cielab</i><b>, TIFFDisplay *</b><i>display</i><b>, float *</b><i>refWhite</i><b>);<br> void TIFFCIELabToXYZ(TIFFCIELabToRGB *</b><i>cielab</i><b>, uint32</b> <i>L</i><b>, int32</b> <i>a</i><b>, int32</b> <i>b</i><b>, float *</b><i>X</i><b>, float *</b><i>Y</i><b>, float *</b><i>Z</i><b>);<br> void TIFFXYZToRGB(TIFFCIELabToRGB *</b><i>cielab</i><b>, float</b> <i>X</i><b>, float</b> <i>Y</i><b>, float</b> <i>Z"</i><b>,</b><i>uint32</i><b>*"</b><i>R</i><b>, uint32 *</b><i>G</i><b>, uint32 *</b><i>B</i><b>);</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>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 <b>TIFFRGBAImage(3TIFF)</b> interface.</p> <!-- INDENTATION --> <p><b>TIFFYCbCrToRGBInit()</b> used to initialize <i>YCbCr</i> to <i>RGB</i> conversion state. Allocating and freeing of the <i>ycbcr</i> structure belongs to programmer. <i>TIFFYCbCrToRGB</i> defined in <b>tiffio.h</b> as</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>typedef struct { /* YCbCr->RGB support */ TIFFRGBValue* clamptab; /* range clamping table */ </pre> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <p>int*</p> <td width="28%"></td> <td width="-3%"></td> <td width="12%"></td> <td width="6%"> <p>Cr_r_tab;<br> int*</p> </td> <td width="56%"> </td> <tr valign="top" align="left"> <td width="28%"></td> <td width="-3%"></td> <td width="12%"></td> <td width="6%"> <p>Cb_b_tab;<br> int32*</p> </td> <td width="56%"> </td> <tr valign="top" align="left"> <td width="28%"></td> <td width="-3%"></td> <td width="12%"></td> <td width="6%"> <p>Cr_g_tab;<br> int32*</p> </td> <td width="56%"> </td> <tr valign="top" align="left"> <td width="28%"></td> <td width="-3%"></td> <td width="12%"></td> <td width="6%"> <p>Cb_g_tab;</p> </td> <td width="56%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>int32* Y_tab;<br> } TIFFYCbCrToRGB;</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>luma</i> 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). <i>TIFFTAG_YCBCRCOEFFICIENTS</i> holds that values in TIFF file. <i>refBlackWhite</i> 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). <i>TIFFTAG_REFERENCEBLACKWHITE</i> is responsible for storing these values in TIFF file. Following code snippet should helps to understand the the technique:</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>float *luma, *refBlackWhite; uint16 hs, vs; /* Initialize structures */ ycbcr = (TIFFYCbCrToRGB*) </pre> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>_TIFFmalloc(TIFFroundup(sizeof(TIFFYCbCrToRGB), sizeof(long))</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>+ 4*256*sizeof(TIFFRGBValue)</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>+ 2*256*sizeof(int)</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>+ 3*256*sizeof(int32));</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>if (ycbcr == NULL) {<br> TIFFError("YCbCr->RGB",</p></td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="4" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="24%"></td> <td width="6%"> </td> <td width="6%"> <p>"No space for YCbCr->RGB conversion state");</p> </td> <td width="62%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>exit(0);<br> }</p> <!-- INDENTATION --> <p>TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRCOEFFICIENTS, &luma);<br> TIFFGetFieldDefaulted(tif, TIFFTAG_REFERENCEBLACKWHITE, &refBlackWhite);<br> if (TIFFYCbCrToRGBInit(ycbcr, luma, refBlackWhite) < 0)</p></td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>exit(0);</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>/* Start conversion */<br> uint32 r, g, b;<br> uint32 Y;<br> int32 Cb, Cr;</p> <!-- INDENTATION --> <p>for each pixel in image</p></td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>TIFFYCbCrtoRGB(img->ycbcr, Y, Cb, Cr, &r, &g, &b);</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>/* Free state structure */<br> _TIFFfree(ycbcr);</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFCIELabToRGBInit()</b> initializes the <i>CIE L*a*b* 1976</i> to <i>RGB</i> conversion state. <b>TIFFCIELabToRGB</b> defined as</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>#define CIELABTORGB_TABLE_RANGE 1500 </pre> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="9" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="6%"> <p>typedef struct {</p> </td> <td width="6%"></td> <td width="6%"></td> <td width="6%"></td> <td width="6%"> </td> <td width="6%"> <p>/* CIE Lab 1976->RGB support */</p> </td> <td width="6%"></td> <td width="37%"> </td> <tr valign="top" align="left"> <td width="17%"></td> <td width="6%"> </td> <td width="6%"> <p>int</p> </td> <td width="6%"> <p>range;</p> </td> <td width="6%"></td> <td width="6%"> </td> <td width="6%"> <p>/* Size of conversion table */</p> </td> <td width="6%"></td> <td width="37%"> </td> <tr valign="top" align="left"> <td width="17%"></td> <td width="6%"> </td> <td width="6%"> <p>float</p> </td> <td width="6%"></td> <td width="6%"> <p>rstep, gstep, bstep;</p> </td> <td width="6%"></td> <td width="6%"></td> <td width="6%"></td> <td width="37%"> </td> <tr valign="top" align="left"> <td width="17%"></td> <td width="6%"> </td> <td width="6%"> <p>float</p> </td> <td width="6%"></td> <td width="6%"> <p>X0, Y0, Z0;</p> </td> <td width="6%"></td> <td width="6%"></td> <td width="6%"> <p>/* Reference white point */</p> </td> <td width="37%"> </td> <tr valign="top" align="left"> <td width="17%"></td> <td width="6%"></td> <td width="6%"> <p>TIFFDisplay display;</p> </td> <td width="6%"></td> <td width="6%"></td> <td width="6%"></td> <td width="6%"></td> <td width="6%"></td> <td width="37%"> </td> <tr valign="top" align="left"> <td width="17%"></td> <td width="6%"> </td> <td width="6%"> <p>float</p> </td> <td width="6%"></td> <td width="6%"> <p>Yr2r[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yr to r */</p> </td> <td width="6%"></td> <td width="6%"></td> <td width="6%"></td> <td width="37%"> </td> <tr valign="top" align="left"> <td width="17%"></td> <td width="6%"> </td> <td width="6%"> <p>float</p> </td> <td width="6%"></td> <td width="6%"> <p>Yg2g[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yg to g */</p> </td> <td width="6%"></td> <td width="6%"></td> <td width="6%"></td> <td width="37%"> </td> <tr valign="top" align="left"> <td width="17%"></td> <td width="6%"> </td> <td width="6%"> <p>float</p> </td> <td width="6%"></td> <td width="6%"> <p>Yb2b[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yb to b */</p> </td> <td width="6%"></td> <td width="6%"></td> <td width="6%"></td> <td width="37%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>} TIFFCIELabToRGB;</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>display</i> is a display device description, declared as</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>typedef struct { </pre> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>float d_mat[3][3]; /* XYZ -> luminance matrix */</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>float d_YCR; /* Light o/p for reference white */</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>float d_YCG;</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>float d_YCB;</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>uint32 d_Vrwr; /* Pixel values for ref. white */</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>uint32 d_Vrwg;</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>uint32 d_Vrwb;</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>float d_Y0R; /* Residual light for black pixel */</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>float d_Y0G;</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>float d_Y0B;</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>float d_gammaR; /* Gamma values for the three guns */</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>float d_gammaG;</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>float d_gammaB;</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>} TIFFDisplay;</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>For example, the one can use sRGB device, which has the following parameters:</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>TIFFDisplay display_sRGB = { </pre> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> <p>{ /* XYZ -> luminance matrix */</p> </td> <td width="6%"></td> <td width="62%"> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> </td> <td width="6%"> <p>{ 3.2410F, -1.5374F, -0.4986F },</p> </td> <td width="62%"> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> </td> <td width="6%"> <p>{ -0.9692F, 1.8760F, 0.0416F },</p> </td> <td width="62%"> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> </td> <td width="6%"> <p>{ 0.0556F, -0.2040F, 1.0570F }</p> </td> <td width="62%"> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> <p>},</p> </td> <td width="6%"> </td> <td width="62%"> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> <p>100.0F, 100.0F, 100.0F, /* Light o/p for reference white */</p> </td> <td width="6%"></td> <td width="62%"> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> <p>255, 255, 255, /* Pixel values for ref. white */</p> </td> <td width="6%"></td> <td width="62%"> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> <p>1.0F, 1.0F, 1.0F, /* Residual light o/p for black pixel */</p> </td> <td width="6%"></td> <td width="62%"> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> <p>2.4F, 2.4F, 2.4F, /* Gamma values for the three guns */</p> </td> <td width="6%"></td> <td width="62%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>};</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>refWhite</i> is a color temperature of the reference white. The <i>TIFFTAG_WHITEPOINT</i> contains the chromaticity of the white point of the image from where the reference white can be calculated using following formulae:</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>refWhite_Y = 100.0<br> refWhite_X = whitePoint_x / whitePoint_y * refWhite_Y<br> refWhite_Z = (1.0 - whitePoint_x - whitePoint_y) / whitePoint_y * refWhite_X</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The conversion itself performed in two steps: at the first one we will convert <i>CIE L*a*b* 1976</i> to <i>CIE XYZ</i> using <b>TIFFCIELabToXYZ()</b> routine, and at the second step we will convert <i>CIE XYZ</i> to <i>RGB</i> using <b>TIFFXYZToRGB().</b> Look at the code sample below:</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>float *whitePoint; float refWhite[3]; /* Initialize structures */ img->cielab = (TIFFCIELabToRGB *) </pre> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>_TIFFmalloc(sizeof(TIFFCIELabToRGB));</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>if (!cielab) {</p></td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> <p>TIFFError("CIE L*a*b*->RGB",</p> </td> <td width="6%"></td> <td width="62%"> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> </td> <td width="6%"> <p>"No space for CIE L*a*b*->RGB conversion state.");</p> </td> <td width="62%"> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> <p>exit(0);</p> </td> <td width="6%"></td> <td width="62%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>}</p> <!-- INDENTATION --> <p>TIFFGetFieldDefaulted(tif, TIFFTAG_WHITEPOINT, &whitePoint);<br> refWhite[1] = 100.0F;<br> refWhite[0] = whitePoint[0] / whitePoint[1] * refWhite[1];<br> refWhite[2] = (1.0F - whitePoint[0] - whitePoint[1])</p></td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>/ whitePoint[1] * refWhite[1];</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>if (TIFFCIELabToRGBInit(cielab, &display_sRGB, refWhite) < 0) {</p></td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> <p>TIFFError("CIE L*a*b*->RGB",</p> </td> <td width="6%"></td> <td width="62%"> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> </td> <td width="6%"> <p>"Failed to initialize CIE L*a*b*->RGB conversion state.");</p> </td> <td width="62%"> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> <p>_TIFFfree(cielab);</p> </td> <td width="6%"></td> <td width="62%"> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="0%"></td> <td width="6%"> <p>exit(0);</p> </td> <td width="6%"></td> <td width="62%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>}</p> <!-- INDENTATION --> <p>/* Now we can start to convert */<br> uint32 r, g, b;<br> uint32 L;<br> int32 a, b;<br> float X, Y, Z;</p> <!-- INDENTATION --> <p>for each pixel in image</p></td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>TIFFCIELabToXYZ(cielab, L, a, b, &X, &Y, &Z);</p> </td> <tr valign="top" align="left"> <td width="24%"></td> <td width="75%"> <p>TIFFXYZToRGB(cielab, X, Y, Z, &r, &g, &b);</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>/* Don’t forget to free the state structure */<br> _TIFFfree(cielab);</p></td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFRGBAImage</b>(3TIFF) <b>libtiff</b>(3TIFF),</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\��r� � html/man/TIFFmemory.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:16 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>MEMORY</title> </head> <body> <h1 align=center>MEMORY</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>_TIFFmalloc, _TIFFrealloc, _TIFFfree, _TIFFmemset, _TIFFmemcpy, _TIFFmemcmp, − memory management-related functions for use with <small>TIFF</small> files</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>tdata_t _TIFFmalloc(tsize_t</b> <i>size</i><b>);<br> tdata_t _TIFFrealloc(tdata_t</b> <i>buffer</i><b>, tsize_t</b> <i>size</i><b>);<br> void _TIFFfree(tdata_t</b> <i>buffer</i><b>);<br> void _TIFFmemset(tdata_t</b> <i>s</i><b>, int</b> <i>c</i><b>, tsize_t</b> <i>n</i><b>);<br> void _TIFFmemcpy(tdata_t</b> <i>dest</i><b>, const tdata_t</b> <i>src</i><b>, tsize_t</b> <i>n</i><b>);<br> int _TIFFmemcmp(const tdata_t</b> <i>s1</i><b>, const tdata_t</b> <i>s2</i><b>, tsize_t</b> <i>n</i><b>);</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>These routines are provided for writing portable software that uses <i>libtiff</i>; they hide any memory-management related issues, such as dealing with segmented architectures found on 16-bit machines.</p> <!-- INDENTATION --> <p><i>_TIFFmalloc</i> and <i>_TIFFrealloc</i> are used to dynamically allocate and reallocate memory used by <i>libtiff</i>; such as memory passed into the I/O routines. Memory allocated through these interfaces is released back to the system using the <i>_TIFFfree</i> routine.</p> <!-- INDENTATION --> <p>Memory allocated through one of the above interfaces can be set to a known value using <i>_TIFFmemset</i>, copied to another memory location using <i>_TIFFmemcpy</i>, or compared for equality using <i>_TIFFmemcmp</i>. These routines conform to the equivalent <small>ANSI</small> C routines: <i>memset</i>, <i>memcpy</i>, and <i>memcmp</i>, repsectively.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>None.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>malloc</b>(3), <b>memory</b>(3), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�0��..html/man/TIFFquery.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:16 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>QUERY</title> </head> <body> <h1 align=center>QUERY</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFCurrentRow, TIFFCurrentStrip, TIFFCurrentTile, TIFFCurrentDirectory, TIFFLastDirectory, TIFFFileno, TIFFFileName, TIFFGetMode, TIFFIsTiled, TIFFIsByteSwapped, TIFFIsUpSampled, TIFFIsMSB2LSB, TIFFGetVersion − query routines</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>uint32 TIFFCurrentRow(TIFF*</b> <i>tif</i><b>)<br> tstrip_t TIFFCurrentStrip(TIFF*</b> <i>tif</i><b>)<br> ttile_t TIFFCurrentTile(TIFF*</b> <i>tif</i><b>)<br> tdir_t TIFFCurrentDirectory(TIFF*</b> <i>tif</i><b>)<br> int TIFFLastDirectory(TIFF*</b> <i>tif</i><b>)<br> int TIFFFileno(TIFF*</b> <i>tif</i><b>)<br> char* TIFFFileName(TIFF*</b> <i>tif</i><b>)<br> int TIFFGetMode(TIFF*</b> <i>tif</i><b>)<br> int TIFFIsTiled(TIFF*</b> <i>tif</i><b>)<br> int TIFFIsByteSwapped(TIFF*</b> <i>tif</i><b>)<br> int TIFFIsUpSampled(TIFF*</b> <i>tif</i><b>)<br> int TIFFIsMSB2LSB(TIFF*</b> <i>tif</i><b>)<br> const char* TIFFGetVersion(void)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The following routines return status information about an open <small>TIFF</small> file.</p> <!-- INDENTATION --> <p><i>TIFFCurrentDirectory</i> returns the index of the current directory (directories are numbered starting at 0). This number is suitable for use with the <i>TIFFSetDirectory</i> routine.</p> <!-- INDENTATION --> <p><i>TIFFLastDirectory</i> returns a non-zero value if the current directory is the last directory in the file; otherwise zero is returned.</p> <!-- INDENTATION --> <p><i>TIFFCurrentRow</i>, <i>TIFFCurrentStrip</i>, and <i>TIFFCurrentTile</i>, 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.</p> <!-- INDENTATION --> <p><i>TIFFFileno</i> returns the underlying file descriptor used to access the <small>TIFF</small> image in the filesystem.</p> <!-- INDENTATION --> <p><i>TIFFFileName</i> returns the pathname argument passed to <i>TIFFOpen</i> or <i>TIFFFdOpen</i>.</p> <!-- INDENTATION --> <p><i>TIFFGetMode</i> returns the mode with which the underlying file was opened. On <small>UNIX</small> systems, this is the value passed to the <i>open</i>(2) system call.</p> <!-- INDENTATION --> <p><i>TIFFIsTiled</i> returns a non-zero value if the image data has a tiled organization. Zero is returned if the image data is organized in strips.</p> <!-- INDENTATION --> <p><i>TIFFIsByteSwapped</i> 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.</p> <!-- INDENTATION --> <p><i>TIFFIsUpSampled</i> 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).</p> <!-- INDENTATION --> <p><i>TIFFIsMSB2LSB</i> returns a non-zero value if the image data is being returned with bit 0 as the most significant bit.</p> <!-- INDENTATION --> <p><i>TIFFGetVersion</i> returns an <small>ASCII</small> string that has a version stamp for the <small>TIFF</small> library software.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>None.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>libtiff</i>(3TIFF), <i>TIFFOpen</i>(3TIFF), <i>TIFFFdOpen</i>(3TIFF)</p> </td> </table> <hr> </body> </html> PK粐\̠�� � html/man/TIFFsize.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:17 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFSIZE</title> </head> <body> <h1 align=center>TIFFSIZE</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFScanlineSize, TIFFRasterScanlineSize, − return the size of various items associated with an open <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>tsize_t TIFFRasterScanlineSize(TIFF *</b><i>tif</i><b>)<br> tsize_t TIFFScanlineSize(TIFF *</b><i>tif</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFScanlineSize</i> returns the size in bytes of a row of data as it would be returned in a call to <i>TIFFReadScanline</i>, or as it would be expected in a call to <i>TIFFWriteScanline</i>.</p> <!-- INDENTATION --> <p><i>TIFFRasterScanlineSize</i> 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 <i>TIFFScanlineSize</i> if data is stored as separate planes.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>None.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFOpen</b>(3TIFF), <b>TIFFReadScanline</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\���yhtml/man/TIFFstrip.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:17 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFSTRIP</title> </head> <body> <h1 align=center>TIFFSTRIP</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFDefaultStripSize, TIFFStripSize, TIFFVStripSize, TIFFRawStripSize, TIFFComputeStrip, TIFFNumberOfStrips − strip-related utility routines</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>uint32 TIFFDefaultStripSize(TIFF *</b><i>tif</i><b>, uint32</b> <i>estimate</i><b>)<br> tsize_t TIFFStripSize(TIFF *</b><i>tif</i><b>)<br> tsize_t TIFFVStripSize(TIFF *</b><i>tif</i><b>, uint32</b> <i>nrows</i><b>)<br> tsize_t TIFFRawStripSize(TIFF *</b><i>tif</i><b>, tstrip_t</b> <i>strip</i><b>)<br> tstrip_t TIFFComputeStrip(TIFF *</b><i>tif</i><b>, uint32</b> <i>row</i><b>, tsample_t</b> <i>sample</i><b>)<br> tstrip_t TIFFNumberOfStrips(TIFF *</b><i>tif</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFDefaultStripSize</i> returns the number of rows for a reasonable-sized strip according to the current settings of the <i>ImageWidth</i>, <i>BitsPerSample</i>, <i>SamplesPerPixel</i>, tags and any compression-specific requirements. If the <i>estimate</i> 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 <i>RowsPerStrip</i> tag. In lieu of any unusual requirements <i>TIFFDefaultStripSize</i> tries to create strips that have approximately 8 kilobytes of uncompressed data.</p> <!-- INDENTATION --> <p><i>TIFFStripSize</i> returns the equivalent size for a strip of data as it would be returned in a call to <i>TIFFReadEncodedStrip</i> or as it would be expected in a call to <i>TIFFWriteEncodedStrip</i>.</p> <!-- INDENTATION --> <p><i>TIFFVStripSize</i> returns the number of bytes in a strip with <i>nrows</i> rows of data.</p> <!-- INDENTATION --> <p><i>TIFFRawStripSize</i> returns the number of bytes in a raw strip (i.e. not decoded).</p> <!-- INDENTATION --> <p><i>TIFFComputeStrip</i> 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 <i>row</i> parameter is always used in calculating a strip. The <i>sample</i> parameter is used only if data are organized in separate planes (<i>PlanarConfiguration</i>=2).</p> <!-- INDENTATION --> <p><i>TIFFNumberOfStrips</i> returns the number of strips in the image.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>None.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFReadEncodedStrip</b>(3TIFF), <b>TIFFReadRawStrip</b>(3TIFF), <b>TIFFWriteEncodedStrip</b>(3TIFF), <b>TIFFWriteRawStrip</b>(3TIFF), <b>libtiff</b>(3TIFF),</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\r�e%� � html/man/TIFFswab.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:18 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>SWAB</title> </head> <body> <h1 align=center>SWAB</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFGetBitRevTable, TIFFReverseBits, TIFFSwabShort, TIFFSwabLong, TIFFSwabArrayOfShort, TIFFSwabArrayOfLong − byte- and bit-swapping routines</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>const unsigned char* TIFFGetBitRevTable(int</b> <i>reversed</i><b>)<br> void TIFFReverseBits(u_char *</b><i>data</i><b>, unsigned long</b> <i>nbytes</i><b>)<br> void TIFFSwabShort(uint16 *</b><i>data</i><b>)<br> void TIFFSwabLong(uint32 *</b><i>data</i><b>)<br> void TIFFSwabArrayOfShort(uint16 *</b><i>data</i><b>, unsigned long</b> <i>nshorts</i><b>)<br> void TIFFSwabArrayOfLong(uint32 *</b><i>data</i><b>, unsigned long</b> <i>nlongs</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The following routines are used by the library to swap 16- and 32-bit data and to reverse the order of bits in bytes.</p> <!-- INDENTATION --> <p><i>TIFFSwabShort</i> and <i>TIFFSwabLong</i> swap the bytes in a single 16-bit and 32-bit item, respectively. <i>TIFFSwabArrayOfShort</i> and <i>TIFFSwabArrayOfLong</i> swap the bytes in an array of 16-bit and 32-bit items, respectively.</p> <!-- INDENTATION --> <p><i>TIFFReverseBits</i> replaces each byte in <i>data</i> with the equivalent bit-reversed value. This operation is performed with a lookup table, which is returned using the <i>TIFFGetBitRevTable</i> function. <i>reversed</i> parameter specifies which table should be returned. Supply <i>1</i> if you want bit reversal table. Supply <i>0</i> to get the table that do not reverse bit values. It is a lookup table that can be used as an <i>identity function</i>; i.e. <i>TIFFNoBitRevTable[n] == n</i>.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>None.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�OU��html/man/TIFFtile.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:18 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFTILE</title> </head> <body> <h1 align=center>TIFFTILE</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFTileSize, TIFFTileRowSize, TIFFVTileSize, TIFFDefaultTileSize, TIFFComputeTile, TIFFCheckTile, TIFFNumberOfTiles − tile-related utility routines</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>void TIFFDefaultTileSize(TIFF *</b><i>tif</i><b>, uint32 *</b><i>tw</i><b>, uint32 *</b><i>th</i><b>)<br> tsize_t TIFFTileSize(TIFF *</b><i>tif</i><b>)<br> tsize_t TIFFTileRowSize(TIFF *</b><i>tif</i><b>)<br> tsize_t TIFFVTileSize(TIFF *</b><i>tif</i><b>, uint32</b> <i>nrows</i><b>)<br> ttile_t TIFFComputeTile(TIFF *</b><i>tif</i><b>, uint32</b> <i>x</i><b>, uint32</b> <i>y</i><b>, uint32</b> <i>z</i><b>, tsample_t</b> <i>sample</i><b>)<br> int TIFFCheckTile(TIFF *</b><i>tif</i><b>, uint32</b> <i>x</i><b>, uint32</b> <i>y</i><b>, uint32</b> <i>z</i><b>, tsample_t</b> <i>sample</i><b>)<br> ttile_t TIFFNumberOfTiles(TIFF *</b><i>tif</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFDefaultTileSize</i> returns the pixel width and height of a reasonable-sized tile; suitable for setting up the <i>TileWidth</i> and <i>TileLength</i> tags. If the <i>tw</i> and <i>th</i> 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 <small>TIFF</small> specification.</p> <!-- INDENTATION --> <p><i>TIFFTileSize</i> returns the equivalent size for a tile of data as it would be returned in a call to <i>TIFFReadTile</i> or as it would be expected in a call to <i>TIFFWriteTile</i>.</p> <!-- INDENTATION --> <p><i>TIFFVTileSize</i> returns the number of bytes in a row-aligned tile with <i>nrows</i> of data.</p> <!-- INDENTATION --> <p><i>TIFFTileRowSize</i> returns the number of bytes of a row of data in a tile.</p> <!-- INDENTATION --> <p><i>TIFFComputeTile</i> 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 <i>x</i> and <i>y</i> parameters are always used in calculating a tile. The <i>z</i> parameter is used if the image is deeper than 1 slice (<i>ImageDepth</i>>1). The <i>sample</i> parameter is used only if data are organized in separate planes (<i>PlanarConfiguration</i>=2).</p> <!-- INDENTATION --> <p><i>TIFFCheckTile</i> returns a non-zero value if the supplied coordinates are within the bounds of the image and zero otherwise. The <i>x</i> parameter is checked against the value of the <i>ImageWidth</i> tag. The <i>y</i> parameter is checked against the value of the <i>ImageLength</i> tag. The <i>z</i> parameter is checked against the value of the <i>ImageDepth</i> tag (if defined). The <i>sample</i> parameter is checked against the value of the <i>SamplesPerPixel</i> parameter if the data are organized in separate planes.</p> <!-- INDENTATION --> <p><i>TIFFNumberOfTiles</i> returns the number of tiles in the image.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>None.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFReadEncodedTile</b>(3TIFF), <b>TIFFReadRawTile</b>(3TIFF), <b>TIFFReadTile</b>(3TIFF), <b>TIFFWriteEncodedTile</b>(3TIFF), <b>TIFFWriteRawTile</b>(3TIFF), <b>TIFFWriteTile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\32,�==html/man/fax2ps.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:18 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>FAX2PS</title> </head> <body> <h1 align=center>FAX2PS</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#NOTES">NOTES</a><br> <a href="#BUGS">BUGS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>fax2ps − convert a <small>TIFF</small> facsimile to compressed PostScript™</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>fax2ps</b> [ <i>options</i> ] [ <i>file ...</i> ]</p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>fax2ps</i> reads one or more <small>TIFF</small> facsimile image files and prints a compressed form of PostScript on the standard output that is suitable for printing.</p> <!-- INDENTATION --> <p>By default, each page is scaled to reflect the image dimensions and resolutions stored in the file. The <b>−x</b> and <b>−y</b> options can be used to specify the horizontal and vertical image resolutions (lines/inch), respectively. If the <b>−S</b> 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 <b>−W</b> and <b>−H</b> options.</p> <!-- INDENTATION --> <p>By default <i>fax2ps</i> generates PostScript for all pages in the file. The <b>−p</b> option can be used to select one or more pages from a multi-page document.</p> <!-- INDENTATION --> <p><i>fax2ps</i> 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 <i>image</i> 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 <b>tiff2ps</b>(1).</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="4" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> <td width="11%"> <p><b>−p</b> <i>number</i></p> </td> <td width="76%"> <p>Print only the indicated page. Multiple pages may be printed by specifying this option more than once.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−x</b> <i>resolution</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="23%"></td> <td width="76%"> <p>Use <i>resolution</i> as the horizontal resolution, in dots/inch, of the image data. By default this value is taken from the file.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−y</b> <i>resolution</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="23%"></td> <td width="76%"> <p>Use <i>resolution</i> as the vertical resolution, in lines/inch, of the image data. By default this value is taken from the file.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="4" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="12%"> <p><b>−S</b></p> </td> <td width="76%"> <p>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 <small>TIFF</small> file.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="12%"> <p><b>−W</b> <i>width</i></p> </td> <td width="76%"> <p>Use <i>width</i> as the width, in inches, of the output page.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="12%"> <p><b>−H</b> <i>height</i></p> </td> <td width="76%"> <p>Use <i>height</i> as the height, in inches, of the output page.</p> </td> <td width="0%"> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Some messages about malformed <small>TIFF</small> images come from the <small>TIFF</small> library.</p> <!-- INDENTATION --> <p>Various messages about badly formatted facsimile images may be generated due to transmission errors in received facsimile. <i>fax2ps</i> 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.</p> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>If the destination printer supports PostScript Level II then it is always faster to just send the encoded bitmap generated by the <b>tiff2ps</b>(1) program.</p> </td> </table> <a name="BUGS"></a> <h2>BUGS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>fax2ps</i> 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.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiff2ps</b>(1), <b>libtiff</b>(3)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�6�y9y9html/man/fax2tiff.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:18 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>FAX2TIFF</title> </head> <body> <h1 align=center>FAX2TIFF</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#BUGS">BUGS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>fax2tiff − create a <small>TIFF</small> Class F fax file from raw fax data</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>fax2tiff</b> [ <i>options</i> ] [ <b>−o</b> <i>output.tif</i> ] <i>input.raw</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>Fax2tiff</i> creates a <small>TIFF</small> file containing <small>CCITT</small> 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 <small>TIFF</small> 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 <small>TIFF</small> Class F ( <small>FAX</small> ) specification for storing facsimile data. This means, in particular, that each page of the data does <b>not</b> include the trailing <i>return to control</i> ( <small>RTC</small> ) code; as required for transmission by the <small>CCITT</small> Group 3 specifications. The old, ‘‘classic’’, format is created if the <b>−c</b> option is used. (The Class F format can also be requested with the <b>−f</b> option.)</p> <!-- INDENTATION --> <p>The default name of the output image is <i>fax.tif</i>; this can be changed with the <b>−o</b> 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.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Options that affect the interpretation of input data are:</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−3</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Assume input data is <small>CCITT</small> Group 3 encoded (default).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−4</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Assume input data is <small>CCITT</small> Group 4 encoded.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−U</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Assume input data is uncompressed (Group 3 or Group 4).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−1</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Assume input data is encoded with the 1-dimensional version of the <small>CCITT</small> Group 3 Huffman encoding algorithm (default).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−2</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Assume input data is 2-dimensional version of the <small>CCITT</small> Group 3 Huffman encoding algorithm.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−P</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Assume input data is <b>not</b> EOL-aligned (default). This option has effect with Group 3 encoded input only.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−A</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Assume input data is EOL-aligned. This option has effect with Group 3 encoded input only.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−M</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Treat input data as having bits filled from most significant bit ( <small>MSB</small> ) to most least bit ( <small>LSB</small> ).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−L</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Treat input data as having bits filled from least significant bit ( <small>LSB</small> ) to most significant bit ( <small>MSB</small> ) (default).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−B</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Assume input data was encoded with black as 0 and white as 1.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−W</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Assume input data was encoded with black as 1 and white as 0 (default).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−R</b></p> </td> <td width="5%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−X</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the width, in pixels, of the input images. By default input are assumed to have a width of 1728 pixels.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Options that affect the output file format are:</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−o</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the name of the output file.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−7</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force output to be compressed with the <small>CCITT</small> Group 3 Huffman encoding algorithm (default).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−8</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force output to be compressed with the <small>CCITT</small> Group 4 Huffman encoding.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−u</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force output to be uncompressed (Group 3 or Group 4).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−5</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force output to be encoded with the 1-dimensional version of the <small>CCITT</small> Group 3 Huffman encoding algorithm.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−6</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force output to be encoded with the 2-dimensional version of the <small>CCITT</small> Group 3 Huffman encoding algorithm (default).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−a</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force the last bit of each <i>End Of Line</i> ( <small>EOL</small> ) code to land on a byte boundary (default). This ‘‘zero padding’’ will be reflected in the contents of the <i>Group3Options</i> tag of the resultant <small>TIFF</small> file. This option has effect with Group 3 encoded output only.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−p</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Do not EOL-align output. This option has effect with Group 3 encoded output only.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−c</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Generate "classic" Group 3 TIFF format.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−f</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Generate TIFF Class F (TIFF/F) format (default).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−m</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force output data to have bits filled from most significant bit ( <small>MSB</small> ) to most least bit ( <small>LSB</small> ).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−l</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force output data to have bits filled from least significant bit ( <small>LSB</small> ) to most significant bit ( <small>MSB</small> ) (default).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−r</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the number of rows (scanlines) in each strip of data written to the output file. By default (or when value <b>0</b> is specified), <i>tiffcp</i> 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 <b>−1</b> 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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−s</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Stretch the input image vertically by writing each input row of data twice to the output file.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−v</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force <i>fax2tiff</i> to print the number of rows of data it retrieved from the input file.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−z</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force output to be compressed with the LZW encoding.</p> </td> <td width="0%"> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The following warnings and errors come from the decoding routines in the library.</p> <!-- INDENTATION --> <p><b>Warning, %s: Premature EOL at scanline %d (x %d).\n</b>. The input data had a row that was shorter than the expected width. The row is padded with white.</p> <!-- INDENTATION --> <p><b>%s: Premature EOF at scanline %d (x %d).\n</b>. The decoder ran out of data in the middle of a scanline. The resultant row is padded with white.</p> <!-- INDENTATION --> <p><b>%s: Bad code word at row %d, x %d\n</b>. An invalid Group 3 <i>code</i> 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.</p> <!-- INDENTATION --> <p><b>%s: Bad 2D code word at scanline %d.\n</b>. An invalid Group 4 or 2D Group 3 <i>code</i> 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.</p> </td> </table> <a name="BUGS"></a> <h2>BUGS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Input data are assumed to have a a ‘‘top left’’ orientation; it should be possible to override this assumption from the command line.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b><small>CCITT</small> Recommendation T.4</b> (Standardization of Group 3 Facsimile Apparatus for Document Transmission).</p> <!-- INDENTATION --> <p><b>The Spirit of TIFF Class F</b>, an appendix to the TIFF 5.0 specification prepared by Cygnet Technologies.</p> <!-- INDENTATION --> <p><b>tiffinfo</b>(1), <b>tiffdither</b>(1), <b>tiffgt</b>(1), <b>libtiff</b>(3)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\`l!Y��html/man/index.htmlnu�[���<HTML><HEAD><TITLE>Libtiff HTML manpage index</TITLE></HEAD><BODY BGCOLOR=white><ul><H2>Man Pages</h2><p> <li><A HREF=TIFFbuffer.3tiff.html>TIFFbuffer.3tiff.html</a> <li><A HREF=TIFFClose.3tiff.html>TIFFClose.3tiff.html</a> <li><A HREF=TIFFcodec.3tiff.html>TIFFcodec.3tiff.html</a> <li><A HREF=TIFFcolor.3tiff.html>TIFFcolor.3tiff.html</a> <li><A HREF=TIFFDataWidth.3tiff.html>TIFFDataWidth.3tiff.html</a> <li><A HREF=TIFFError.3tiff.html>TIFFError.3tiff.html</a> <li><A HREF=TIFFFlush.3tiff.html>TIFFFlush.3tiff.html</a> <li><A HREF=TIFFGetField.3tiff.html>TIFFGetField.3tiff.html</a> <li><A HREF=TIFFmemory.3tiff.html>TIFFmemory.3tiff.html</a> <li><A HREF=TIFFOpen.3tiff.html>TIFFOpen.3tiff.html</a> <li><A HREF=TIFFPrintDirectory.3tiff.html>TIFFPrintDirectory.3tiff.html</a> <li><A HREF=TIFFquery.3tiff.html>TIFFquery.3tiff.html</a> <li><A HREF=TIFFReadDirectory.3tiff.html>TIFFReadDirectory.3tiff.html</a> <li><A HREF=TIFFReadEncodedStrip.3tiff.html>TIFFReadEncodedStrip.3tiff.html</a> <li><A HREF=TIFFReadEncodedTile.3tiff.html>TIFFReadEncodedTile.3tiff.html</a> <li><A HREF=TIFFReadRawStrip.3tiff.html>TIFFReadRawStrip.3tiff.html</a> <li><A HREF=TIFFReadRawTile.3tiff.html>TIFFReadRawTile.3tiff.html</a> <li><A HREF=TIFFReadRGBAImage.3tiff.html>TIFFReadRGBAImage.3tiff.html</a> <li><A HREF=TIFFReadRGBAStrip.3tiff.html>TIFFReadRGBAStrip.3tiff.html</a> <li><A HREF=TIFFReadRGBATile.3tiff.html>TIFFReadRGBATile.3tiff.html</a> <li><A HREF=TIFFReadScanline.3tiff.html>TIFFReadScanline.3tiff.html</a> <li><A HREF=TIFFReadTile.3tiff.html>TIFFReadTile.3tiff.html</a> <li><A HREF=TIFFRGBAImage.3tiff.html>TIFFRGBAImage.3tiff.html</a> <li><A HREF=TIFFSetDirectory.3tiff.html>TIFFSetDirectory.3tiff.html</a> <li><A HREF=TIFFSetField.3tiff.html>TIFFSetField.3tiff.html</a> <li><A HREF=TIFFsize.3tiff.html>TIFFsize.3tiff.html</a> <li><A HREF=TIFFstrip.3tiff.html>TIFFstrip.3tiff.html</a> <li><A HREF=TIFFswab.3tiff.html>TIFFswab.3tiff.html</a> <li><A HREF=TIFFtile.3tiff.html>TIFFtile.3tiff.html</a> <li><A HREF=TIFFWarning.3tiff.html>TIFFWarning.3tiff.html</a> <li><A HREF=TIFFWriteDirectory.3tiff.html>TIFFWriteDirectory.3tiff.html</a> <li><A HREF=TIFFWriteEncodedStrip.3tiff.html>TIFFWriteEncodedStrip.3tiff.html</a> <li><A HREF=TIFFWriteEncodedTile.3tiff.html>TIFFWriteEncodedTile.3tiff.html</a> <li><A HREF=TIFFWriteRawStrip.3tiff.html>TIFFWriteRawStrip.3tiff.html</a> <li><A HREF=TIFFWriteRawTile.3tiff.html>TIFFWriteRawTile.3tiff.html</a> <li><A HREF=TIFFWriteScanline.3tiff.html>TIFFWriteScanline.3tiff.html</a> <li><A HREF=TIFFWriteTile.3tiff.html>TIFFWriteTile.3tiff.html</a> <li><A HREF=fax2ps.1.html>fax2ps.1.html</a> <li><A HREF=fax2tiff.1.html>fax2tiff.1.html</a> <!-- <li><A HREF=gif2tiff.1.html>gif2tiff.1.html</a> --> <li><A HREF=pal2rgb.1.html>pal2rgb.1.html</a> <li><A HREF=ppm2tiff.1.html>ppm2tiff.1.html</a> <!-- <li><A HREF=ras2tiff.1.html>ras2tiff.1.html</a> --> <li><A HREF=raw2tiff.1.html>raw2tiff.1.html</a> <li><A HREF=rgb2ycbcr.1.html>rgb2ycbcr.1.html</a> <!-- <li><A HREF=sgi2tiff.1.html>sgi2tiff.1.html</a> --> <li><A HREF=thumbnail.1.html>thumbnail.1.html</a> <li><A HREF=tiff2bw.1.html>tiff2bw.1.html</a> <li><A HREF=tiff2pdf.1.html>tiff2pdf.1.html</a> <li><A HREF=tiff2ps.1.html>tiff2ps.1.html</a> <li><A HREF=tiff2rgba.1.html>tiff2rgba.1.html</a> <li><A HREF=tiffcmp.1.html>tiffcmp.1.html</a> <li><A HREF=tiffcp.1.html>tiffcp.1.html</a> <li><A HREF=tiffcrop.1.html>tiffcrop.1.html</a> <li><A HREF=tiffdither.1.html>tiffdither.1.html</a> <li><A HREF=tiffdump.1.html>tiffdump.1.html</a> <li><A HREF=tiffgt.1.html>tiffgt.1.html</a> <li><A HREF=tiffinfo.1.html>tiffinfo.1.html</a> <li><A HREF=tiffmedian.1.html>tiffmedian.1.html</a> <li><A HREF=tiffset.1.html>tiffset.1.html</a> <li><A HREF=tiffsplit.1.html>tiffsplit.1.html</a> <!-- <li><A HREF=tiffsv.1.html>tiffsv.1.html</a> --> </ul></BODY></HTML> PK粐\Ra7"``html/man/libtiff.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:20 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>INTRO</title> </head> <body> <h1 align=center>INTRO</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#DATA TYPES">DATA TYPES</a><br> <a href="#LIST OF ROUTINES">LIST OF ROUTINES</a><br> <a href="#TAG USAGE">TAG USAGE</a><br> <a href="#PSEUDO TAGS">PSEUDO TAGS</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <a href="#BUGS">BUGS</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>libtiff − introduction to <i>libtiff</i>, a library for reading and writing</big> TIFF <big>files</big></p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big><b>#include <tiffio.h></b></big></p> <!-- INDENTATION --> <p><big>cc file.c <b>-ltiff</b></big></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big><i>libtiff</i> is a library for reading and writing data files encoded with the <i>Tag Image File</i> 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.</big></p> <!-- INDENTATION --> <p><big>The library supports several compression algorithms, as indicated by the <i>Compression</i> field, including: no compression (1),</big> CCITT <big>1D Huffman compression (2),</big> CCITT <big>Group 3 Facsimile compression (3),</big> CCITT <big>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 <i>ThunderScan</i> 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 (</big> MSB <big>) to Least Significant Bit (</big> LSB <big>) or</big> LSB <big>to</big> MSB. <big>Finally, the library does not support files in which the <i>BitsPerSample</i>, <i>Compression</i>, <i>MinSampleValue</i>, or <i>MaxSampleValue</i> fields are defined differently on a per-sample basis (in Rev. 6.0 the <i>Compression</i> tag is not defined on a per-sample basis, so this is immaterial).</big></p> </td> </table> <a name="DATA TYPES"></a> <h2>DATA TYPES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>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</big> TIFF <big>format. The following typedefs are exposed to users either through function definitions or through parameters passed through the varargs interfaces.</big></p></td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="3" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="15%"></td> <td width="46%"> <p><big>typedef unsigned short uint16;</big></p> </td> <td width="38%"> <p><big>16-bit unsigned integer</big></p> </td> <tr valign="top" align="left"> <td width="15%"></td> <td width="46%"> <p><big>typedef unsigned <<i>thing</i>> uint32;</big></p> </td> <td width="38%"> <p><big>32-bit unsigned integer</big></p> </td> <tr valign="top" align="left"> <td width="15%"></td> <td width="46%"> <p><big>typedef unsigned int ttag_t;</big></p> </td> <td width="38%"> <p><big>directory tag</big></p> </td> <tr valign="top" align="left"> <td width="15%"></td> <td width="46%"> <p><big>typedef uint16 tdir_t;</big></p> </td> <td width="38%"> <p><big>directory index</big></p> </td> <tr valign="top" align="left"> <td width="15%"></td> <td width="46%"> <p><big>typedef uint16 tsample_t;</big></p> </td> <td width="38%"> <p><big>sample number</big></p> </td> <tr valign="top" align="left"> <td width="15%"></td> <td width="46%"> <p><big>typedef uint32 tstrip_t;</big></p> </td> <td width="38%"> <p><big>strip number</big></p> </td> <tr valign="top" align="left"> <td width="15%"></td> <td width="46%"> <p><big>typedef uint32 ttile_t;</big></p> </td> <td width="38%"> <p><big>tile number</big></p> </td> <tr valign="top" align="left"> <td width="15%"></td> <td width="46%"> <p><big>typedef int32 tsize_t;</big></p> </td> <td width="38%"> <p><big>i/o size in bytes</big></p> </td> <tr valign="top" align="left"> <td width="15%"></td> <td width="46%"> <p><big>typedef void* tdata_t;</big></p> </td> <td width="38%"> <p><big>image data ref</big></p> </td> <tr valign="top" align="left"> <td width="15%"></td> <td width="46%"> <p><big>typedef void* thandle_t;</big></p> </td> <td width="38%"> <p><big>client data handle</big></p> </td> <tr valign="top" align="left"> <td width="15%"></td> <td width="46%"> <p><big>typedef int32 toff_t;</big></p> </td> <td width="38%"> <p><big>file offset</big></p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>Note that <i>tstrip_t</i>, <i>ttile_t</i>, and <i>tsize_t</i> are constrained to be no more than 32-bit quantities by 32-bit fields they are stored in in the</big> TIFF <big>image. Likewise <i>tsample_t</i> is limited by the 16-bit field used to store the <i>SamplesPerPixel</i> tag. <i>tdir_t</i> constrains the maximum number of</big> IFDs <big>that may appear in an image and may be an arbitrary size (w/o penalty). <i>ttag_t</i> must be either int, unsigned int, pointer, or double because the library uses a varargs interface and</big> ANSI C <big>restricts the type of the parameter before an ellipsis to be a promoted type. <i>toff_t</i> 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.</big></p> </td> </table> <a name="LIST OF ROUTINES"></a> <h2>LIST OF ROUTINES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>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.</big></p></td> </table> <!-- TABS --> <p><big><i>Name Description</i></big></p> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="3" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFCheckpointDirectory</big></p> </td> <td width="67%"> <p><big>writes the current state of the directory</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFCheckTile</big></p> </td> <td width="67%"> <p><big>very x,y,z,sample is within image</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFCIELabToRGBInit</big></p> </td> <td width="67%"> <p><big>initialize CIE L*a*b* 1976 to RGB conversion state</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFCIELabToXYZ</big></p> </td> <td width="67%"> <p><big>perform CIE L*a*b* 1976 to CIE XYZ conversion</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFClientOpen</big></p> </td> <td width="67%"> <p><big>open a file for reading or writing</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFClose</big></p> </td> <td width="67%"> <p><big>close an open file</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFComputeStrip</big></p> </td> <td width="67%"> <p><big>return strip containing y,sample</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFComputeTile</big></p> </td> <td width="67%"> <p><big>return tile containing x,y,z,sample</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFCurrentDirectory</big></p> </td> <td width="67%"> <p><big>return index of current directory</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFCurrentRow</big></p> </td> <td width="67%"> <p><big>return index of current scanline</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFCurrentStrip</big></p> </td> <td width="67%"> <p><big>return index of current strip</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFCurrentTile</big></p> </td> <td width="67%"> <p><big>return index of current tile</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFDataWidth</big></p> </td> <td width="67%"> <p><big>return the size of TIFF data types</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFError</big></p> </td> <td width="67%"> <p><big>library error handler</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFFdOpen</big></p> </td> <td width="67%"> <p><big>open a file for reading or writing</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFFileName</big></p> </td> <td width="67%"> <p><big>return name of open file</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFFileno</big></p> </td> <td width="67%"> <p><big>return open file descriptor</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFFindCODEC</big></p> </td> <td width="67%"> <p><big>find standard codec for the specific scheme</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFFlush</big></p> </td> <td width="67%"> <p><big>flush all pending writes</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFFlushData</big></p> </td> <td width="67%"> <p><big>flush pending data writes</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFGetBitRevTable</big></p> </td> <td width="67%"> <p><big>return bit reversal table</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFGetField</big></p> </td> <td width="67%"> <p><big>return tag value in current directory</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFGetFieldDefaulted</big></p> </td> <td width="67%"> <p><big>return tag value in current directory</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFGetMode</big></p> </td> <td width="67%"> <p><big>return open file mode</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFGetVersion</big></p> </td> <td width="67%"> <p><big>return library version string</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFIsCODECConfigured</big></p> </td> <td width="67%"> <p><big>check, whether we have working codec</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFIsMSB2LSB</big></p> </td> <td width="67%"> <p><big>return true if image data is being returned</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"></td> <td width="67%"> <p><big>with bit 0 as the most significant bit</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFIsTiled</big></p> </td> <td width="67%"> <p><big>return true if image data is tiled</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFIsByteSwapped</big></p> </td> <td width="67%"> <p><big>return true if image data is byte-swapped</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFNumberOfStrips</big></p> </td> <td width="67%"> <p><big>return number of strips in an image</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFNumberOfTiles</big></p> </td> <td width="67%"> <p><big>return number of tiles in an image</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFOpen</big></p> </td> <td width="67%"> <p><big>open a file for reading or writing</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFPrintDirectory</big></p> </td> <td width="67%"> <p><big>print description of the current directory</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFReadBufferSetup</big></p> </td> <td width="67%"> <p><big>specify i/o buffer for reading</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFReadDirectory</big></p> </td> <td width="67%"> <p><big>read the next directory</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFReadEncodedStrip</big></p> </td> <td width="67%"> <p><big>read and decode a strip of data</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFReadEncodedTile</big></p> </td> <td width="67%"> <p><big>read and decode a tile of data</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFReadRawStrip</big></p> </td> <td width="67%"> <p><big>read a raw strip of data</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFReadRawTile</big></p> </td> <td width="67%"> <p><big>read a raw tile of data</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFReadRGBAImage</big></p> </td> <td width="67%"> <p><big>read an image into a fixed format raster</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFReadScanline</big></p> </td> <td width="67%"> <p><big>read and decode a row of data</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFReadTile</big></p> </td> <td width="67%"> <p><big>read and decode a tile of data</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFRegisterCODEC</big></p> </td> <td width="67%"> <p><big>override standard codec for the specific scheme</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFReverseBits</big></p> </td> <td width="67%"> <p><big>reverse bits in an array of bytes</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFRGBAImageBegin</big></p> </td> <td width="67%"> <p><big>setup decoder state for TIFFRGBAImageGet</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFRGBAImageEnd</big></p> </td> <td width="67%"> <p><big>release TIFFRGBAImage decoder state</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFRGBAImageGet</big></p> </td> <td width="67%"> <p><big>read and decode an image</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFRGBAImageOK</big></p> </td> <td width="67%"> <p><big>is image readable by TIFFRGBAImageGet</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFScanlineSize</big></p> </td> <td width="67%"> <p><big>return size of a scanline</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFSetDirectory</big></p> </td> <td width="67%"> <p><big>set the current directory</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFSetSubDirectory</big></p> </td> <td width="67%"> <p><big>set the current directory</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFSetErrorHandler</big></p> </td> <td width="67%"> <p><big>set error handler function</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFSetField</big></p> </td> <td width="67%"> <p><big>set a tag’s value in the current directory</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFSetWarningHandler</big></p> </td> <td width="67%"> <p><big>set warning handler function</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFStripSize</big></p> </td> <td width="67%"> <p><big>returns size of a strip</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFRawStripSize</big></p> </td> <td width="67%"> <p><big>returns the number of bytes in a raw strip</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFSwabShort</big></p> </td> <td width="67%"> <p><big>swap bytes of short</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFSwabLong</big></p> </td> <td width="67%"> <p><big>swap bytes of long</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFSwabArrayOfShort</big></p> </td> <td width="67%"> <p><big>swap bytes of an array of shorts</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFSwabArrayOfLong</big></p> </td> <td width="67%"> <p><big>swap bytes of an array of longs</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFTileRowSize</big></p> </td> <td width="67%"> <p><big>return size of a row in a tile</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFTileSize</big></p> </td> <td width="67%"> <p><big>return size of a tile</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFUnRegisterCODEC</big></p> </td> <td width="67%"> <p><big>unregisters the codec</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFVGetField</big></p> </td> <td width="67%"> <p><big>return tag value in current directory</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFVGetFieldDefaulted</big></p> </td> <td width="67%"> <p><big>return tag value in current directory</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFVSetField</big></p> </td> <td width="67%"> <p><big>set a tag’s value in the current directory</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFVStripSize</big></p> </td> <td width="67%"> <p><big>returns the number of bytes in a strip</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFWarning</big></p> </td> <td width="67%"> <p><big>library warning handler</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFWriteDirectory</big></p> </td> <td width="67%"> <p><big>write the current directory</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFWriteEncodedStrip</big></p> </td> <td width="67%"> <p><big>compress and write a strip of data</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFWriteEncodedTile</big></p> </td> <td width="67%"> <p><big>compress and write a tile of data</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFWriteRawStrip</big></p> </td> <td width="67%"> <p><big>write a raw strip of data</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFWriteRawTile</big></p> </td> <td width="67%"> <p><big>write a raw tile of data</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFWriteScanline</big></p> </td> <td width="67%"> <p><big>write a scanline of data</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFWriteTile</big></p> </td> <td width="67%"> <p><big>compress and write a tile of data</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFXYZToRGB</big></p> </td> <td width="67%"> <p><big>perform CIE XYZ to RGB conversion</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFYCbCrToRGBInit</big></p> </td> <td width="67%"> <p><big>initialize YCbCr to RGB conversion state</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>TIFFYCbCrtoRGB</big></p> </td> <td width="67%"> <p><big>perform YCbCr to RGB conversion</big></p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>Auxiliary functions:</big></p></td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="3" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>_TIFFfree</big></p> </td> <td width="67%"> <p><big>free memory buffer</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>_TIFFmalloc</big></p> </td> <td width="67%"> <p><big>dynamically allocate memory buffer</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>_TIFFmemcmp</big></p> </td> <td width="67%"> <p><big>compare contents of the memory buffers</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>_TIFFmemcpy</big></p> </td> <td width="67%"> <p><big>copy contents of the one buffer to another</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>_TIFFmemset</big></p> </td> <td width="67%"> <p><big>fill memory buffer with a constant byte</big></p> </td> <tr valign="top" align="left"> <td width="8%"></td> <td width="23%"> <p><big>_TIFFrealloc</big></p> </td> <td width="67%"> <p><big>dynamically reallocate memory buffer</big></p> </td> </table> <a name="TAG USAGE"></a> <h2>TAG USAGE</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><big>The table below lists the</big> TIFF <big>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 particulPK粐\���||html/man/pal2rgb.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:19 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>PAL2RGB</title> </head> <body> <h1 align=center>PAL2RGB</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#BUGS">BUGS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>pal2rgb − convert a palette color <small>TIFF</small> image to a full color image</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>pal2rgb</b> [ <i>options</i> ] <i>input.tif output.tif</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>Pal2rgb</i> converts a palette color <small>TIFF</small> image to a full color image by applying the colormap of the palette image to each sample to generate a full color <small>RGB</small> image.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Options that affect the interpretation of input data are:</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> <td width="2%"> <p><b>−C</b></p> </td> <td width="5%"></td> <td width="80%"> <p>This option overrides the default behavior of <i>pal2rgb</i> 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 <small>TIFF</small> specification) are assumed. The <b>−C</b> option can be used to explicitly specify the number of bits for colormap entries: <b>−C 8</b> for 8-bit values, <b>−C 16</b> for 16-bit values.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Options that affect the output file format are:</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="5%"> <p><b>−p</b></p> </td> <td width="3%"></td> <td width="80%"> <p>Explicitly select the planar configuration used in organizing data samples in the output image: <b>−p contig</b> for samples packed contiguously, and <b>−p separate</b> for samples stored separately. By default samples are packed.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="5%"> <p><b>−c</b></p> </td> <td width="3%"></td> <td width="80%"> <p>Use the specific compression algorithm to encoded image data in the output file: <b>−c packbits</b> for Macintosh Packbits, <b>−c lzw</b> for Lempel-Ziv & Welch, <b>−c zip</b> for Deflate, <b>−c none</b> for no compression. If no compression-related option is specified, the input file’s compression algorithm is used.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="5%"> <p><b>−r</b></p> </td> <td width="3%"></td> <td width="80%"> <p>Explicitly specify the number of rows in each strip of the output file. If the <b>−r</b> option is not specified, a number is selected such that each output strip has approximately 8 kilobytes of data in it.</p> </td> <td width="0%"> </td> </table> <a name="BUGS"></a> <h2>BUGS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Only 8-bit images are handled.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffinfo</b>(1), <b>tiffcp</b>(1), <b>tiffmedian</b>(1), <b>libtiff</b>(3)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�c��html/man/ppm2tiff.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:19 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>PPM2TIFF</title> </head> <body> <h1 align=center>PPM2TIFF</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>ppm2tiff − create a <small>TIFF</small> file from <small>PPM, PGM</small> and <small>PBM</small> image files</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>ppm2tiff</b> [ <i>options</i> ] [ <i>input.ppm</i> ] <i>output.tif</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>ppm2tiff</i> converts a file in the <small>PPM, PGM</small> and <small>PBM</small> image formats to <small>TIFF.</small> By default, the <small>TIFF</small> image is created with data samples packed (<i>PlanarConfiguration</i>=1), compressed with the Packbits algorithm (<i>Compression</i>=32773), and with each strip no more than 8 kilobytes. These characteristics can be overridden, or explicitly specified with the options described below</p> <!-- INDENTATION --> <p>If the <small>PPM</small> file contains greyscale data, then the <i>PhotometricInterpretation</i> tag is set to 1 (min-is-black), otherwise it is set to 2 (RGB).</p> <!-- INDENTATION --> <p>If no <small>PPM</small> file is specified on the command line, <i>ppm2tiff</i> will read from the standard input.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−c</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify a compression scheme to use when writing image data: <b>none</b> for no compression, <b>packbits</b> for PackBits compression (will be used by default), <b>lzw</b> for Lempel-Ziv & Welch compression, <b>jpeg</b> for baseline JPEG compression, <b>zip</b> for Deflate compression, <b>g3</b> for CCITT Group 3 (T.4) compression, and <b>g4</b> for CCITT Group 4 (T.6) compression.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−r</b></p> </td> <td width="5%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−R</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Mark the resultant image to have the specified X and Y resolution (in dots/inch).</p> </td> <td width="0%"> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffinfo</b>(1), <b>tiffcp</b>(1), <b>tiffmedian</b>(1), <b>libtiff</b>(3)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\P95�1�1html/man/raw2tiff.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:19 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>RAW2TIFF</title> </head> <body> <h1 align=center>RAW2TIFF</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#GUESSING THE IMAGE GEOMETRY">GUESSING THE IMAGE GEOMETRY</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>raw2tiff − create a <small>TIFF</small> file from a raw data</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>raw2tiff</b> [ <i>options</i> ] <i>input.raw output.tif</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>raw2tiff</i> converts a raw byte sequence into <small>TIFF.</small> By default, the <small>TIFF</small> image is created with data samples packed (<i>PlanarConfiguration</i>=1), compressed with the PackBits algorithm (<i>Compression</i>=32773), and with each strip no more than 8 kilobytes. These characteristics can overridden, or explicitly specified with the options described below.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−H</b> <i>number</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>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.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−w</b> <i>number</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>width of input image in pixels (can be guessed, see <b><small>GUESSING THE IMAGE GEOMETRY</small></b> below).</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−l</b> <i>number</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>length of input image in lines (can be guessed, see <b><small>GUESSING THE IMAGE GEOMETRY</small></b> below).</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−b</b> <i>number</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>number of bands in input image (1 by default).</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−d</b> <i>data_type</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>type of samples in input image, where <i>data_type</i> may be:</p></td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="3" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="10%"> <p><b>byte</b></p> </td> <td width="70%"> <p>8-bit unsigned integer (default),</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="10%"> <p><b>short</b></p> </td> <td width="70%"> <p>16-bit unsigned integer,</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="10%"> <p><b>long</b></p> </td> <td width="70%"> <p>32-bit unsigned integer,</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="10%"> <p><b>sbyte</b></p> </td> <td width="70%"> <p>8-bit signed integer,</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="10%"> <p><b>sshort</b></p> </td> <td width="70%"> <p>16-bit signed integer,</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="10%"> <p><b>slong</b></p> </td> <td width="70%"> <p>32-bit signed integer,</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="10%"> <p><b>float</b></p> </td> <td width="70%"> <p>32-bit IEEE floating point,</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="10%"> <p><b>double</b></p> </td> <td width="70%"> <p>64-bit IEEE floating point.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−i</b> <i>config</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>type of samples interleaving in input image, where <i>config</i> may be:</p></td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="3" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="8%"> <p><b>pixel</b></p> </td> <td width="71%"> <p>pixel interleaved data (default),</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="8%"> <p><b>band</b></p> </td> <td width="71%"> <p>band interleaved data.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−p</b> <i>photo</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>photometric interpretation (color space) of the input image, where <i>photo</i> may be:</p></td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="3" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="15%"> <p><b>miniswhite</b></p> </td> <td width="65%"> <p>white color represented with 0 value,</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="15%"> <p><b>minisblack</b></p> </td> <td width="65%"> <p>black color represented with 0 value (default),</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="15%"> <p><b>rgb</b></p> </td> <td width="65%"> <p>image has RGB color model,</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="15%"> <p><b>cmyk</b></p> </td> <td width="65%"> <p>image has CMYK (separated) color model,</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="15%"> <p><b>ycbcr</b></p> </td> <td width="65%"> <p>image has YCbCr color model,</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="15%"> <p><b>cielab</b></p> </td> <td width="65%"> <p>image has CIE L*a*b color model,</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="15%"> <p><b>icclab</b></p> </td> <td width="65%"> <p>image has ICC L*a*b color model,</p> </td> <tr valign="top" align="left"> <td width="19%"></td> <td width="15%"> <p><b>itulab</b></p> </td> <td width="65%"> <p>image has ITU L*a*b color model.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−s</b></p> </td> <td width="5%"></td> <td width="80%"> <p>swap bytes fetched from the input file.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−L</b></p> </td> <td width="5%"></td> <td width="80%"> <p>input data has LSB2MSB bit order (default).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−M</b></p> </td> <td width="5%"></td> <td width="80%"> <p>input data has MSB2LSB bit order.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−c</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify a compression scheme to use when writing image data: <b>−c none</b> for no compression, <b>−c packbits</b> for the PackBits compression algorithm (the default), <b>−c jpeg</b> for the baseline JPEG compression algorithm, <b>−c zip</b> for the Deflate compression algorithm, and <b>−c lzw</b> for Lempel-Ziv & Welch.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−r</b> <i>number</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>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.</p> </td> </table> <a name="GUESSING THE IMAGE GEOMETRY"></a> <h2>GUESSING THE IMAGE GEOMETRY</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>raw2tiff</i> 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.</p> <!-- INDENTATION --> <p>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.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>pal2rgb</b>(1), <b>tiffcp</b>(1), <b>tiffmedian</b>(1), <b>libtiff</b>(3)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\��R��html/man/tiff2bw.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:19 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFF2BW</title> </head> <body> <h1 align=center>TIFF2BW</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>tiff2bw − convert a color <small>TIFF</small> image to greyscale</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiff2bw</b> [ <i>options</i> ] <i>input.tif output.tif</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>Tiff2bw</i> converts an <small>RGB</small> or Palette color <small>TIFF</small> 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 <b>−R</b>, <b>−G</b>, and <b>−B</b> options may be used.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−c</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify a compression scheme to use when writing image data: <b>−c none</b> for no compression, <b>−c packbits</b> for the PackBits compression algorithm, <b>−c zip</b> for the Deflate compression algorithm, <b>−c g3</b> for the CCITT Group 3 compression algorithm, <b>−c g4</b> for the CCITT Group 4 compression algorithm, and <b>−c lzw</b> for Lempel-Ziv & Welch (the default).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−r</b></p> </td> <td width="5%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−R</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the percentage of the red channel to use (default 28).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−G</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the percentage of the green channel to use (default 59).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−B</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the percentage of the blue channel to use (default 11).</p> </td> <td width="0%"> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>pal2rgb</b>(1), <b>tiffinfo</b>(1), <b>tiffcp</b>(1), <b>tiffmedian</b>(1), <b>libtiff</b>(3)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\@���FFhtml/man/tiff2pdf.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:19 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFF2PDF</title> </head> <body> <h1 align=center>TIFF2PDF</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#EXAMPLES">EXAMPLES</a><br> <a href="#BUGS">BUGS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p>tiff2pdf − convert a TIFF image to a PDF document</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>tiff2pdf</b> [ <i>options</i> ] <i>input.tiff</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><i>tiff2pdf</i> opens a TIFF image and writes a PDF document to standard output.</p> <!-- INDENTATION --> <p>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 <i>libtiff</i> and PDF.</p> <!-- INDENTATION --> <p>If you have multiple TIFF files to convert into one PDF file then use <i>tiffcp</i> 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.</p> <!-- INDENTATION --> <p>The standard output is standard output. Set the output file name with the <b>−o</b> <i>output.pdf</i> option.</p> <!-- INDENTATION --> <p>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, <i>libtiff</i> CCITT support is assumed.</p> <!-- INDENTATION --> <p>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 <b>−j</b> or <b>−z</b> options. JPEG compression support requires that <i>libtiff</i> be configured with JPEG support, and Zip/Deflate compression support requires that <i>libtiff</i> be configured with Zip support, in tiffconf.h. Use only one or the other of <b>−j</b> and <b>−z.</b></p> <!-- INDENTATION --> <p>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, <b>−d</b> and <b>−n.</b></p> <!-- INDENTATION --> <p>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.</p> <!-- INDENTATION --> <p>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 <b>−x</b> and <b>−y</b> options. The page size can be set using the <b>−p</b> option for paper size, or <b>−w</b> and <b>−l</b> 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 <b>−u</b> option, the default unit is inch.</p> <!-- INDENTATION --> <p>Various items of the output document information can be set with the <b>−e</b>, <b>−c</b>, <b>−a</b>, <b>−t</b>, <b>−s</b>, and <b>−k</b> 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.</p> <!-- INDENTATION --> <p>The Portable Document Format (PDF) specification is copyrighted by Adobe Systems, Incorporated.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−o</b> <i>output-file</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set the output to go to file. <i>output-file</i></p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="4" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> <td width="4%"> <p><b>−j</b></p> </td> <td width="5%"></td> <td width="77%"> <p>Compress with JPEG (requires <i>libjpeg</i> configured with <i>libtiff</i>).</p> </td> <tr valign="top" align="left"> <td width="11%"></td> <td width="4%"> <p><b>−z</b></p> </td> <td width="5%"></td> <td width="77%"> <p>Compress with Zip/Deflate (requires <i>zlib</i> configured with <i>libtiff</i>).</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−q</b> <i>quality</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set the compression quality, 1-100 for JPEG.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="4" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> <td width="2%"> <p><b>−n</b></p> </td> <td width="7%"></td> <td width="77%"> <p>Do not allow data to be converted without uncompressing, no compressed data passthrough.</p> </td> <tr valign="top" align="left"> <td width="11%"></td> <td width="2%"> <p><b>−b</b></p> </td> <td width="7%"></td> <td width="77%"> <p>Set PDF ‘‘Interpolate’’ user preference.</p> </td> <tr valign="top" align="left"> <td width="11%"></td> <td width="2%"> <p><b>−d</b></p> </td> <td width="7%"></td> <td width="77%"> <p>Do not compress (decompress).</p> </td> <tr valign="top" align="left"> <td width="11%"></td> <td width="2%"> <p><b>−i</b></p> </td> <td width="7%"></td> <td width="77%"> <p>Invert colors.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−p</b> <i>paper-size</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set paper size, e.g., <b>letter</b>, <b>legal</b>, <b>A4</b>.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−u</b> [<b>i</b>|<b>m</b>]</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set distance unit, <b>i</b> for inch, <b>m</b> for centimeter.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−w</b> <i>width</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set width in units.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−l</b> <i>length</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set length in units.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−x</b> <i>xres</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set x/width resolution default.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−y</b> <i>yres</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set y/length resolution default.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−r</b> [<b>d</b>|<b>o</b>]</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set <b>d</b> for resolution default for images without resolution, <b>o</b> for resolution override for all images.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> <td width="2%"> <p><b>−f</b></p> </td> <td width="13%"></td> <td width="57%"> <p>Set PDF ‘‘Fit Window’’ user preference.</p> </td> <td width="14%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−e</b> <i>YYYYMMDDHHMMSS</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set document information date, overrides image or current date/time default, <i>YYYYMMDDHHMMSS.</i></p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−c</b> <i>creator</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set document information creator, overrides image software default.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−a</b> <i>author</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set document information author, overrides image artist default.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−t</b> <i>title</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set document information title, overrides image document name default.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−s</b> <i>subject</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set document information subject, overrides image image description default.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>−k</b> <i>keywords</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="21%"></td> <td width="77%"> <p>Set document information keywords.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> <td width="2%"> <p><b>−h</b></p> </td> <td width="13%"></td> <td width="57%"> <p>List usage reminder to stderr and exit.</p> </td> <td width="14%"> </td> </table> <a name="EXAMPLES"></a> <h2>EXAMPLES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p>The following example would generate the file output.pdf from input.tiff.</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="20%"></td> <td width="79%"> <pre>tiff2pdf −o output.pdf input.tiff </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p>The following example would generate PDF output from input.tiff and write it to standard output.</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="20%"></td> <td width="79%"> <pre>tiff2pdf input.tiff </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p>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.</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="20%"></td> <td width="79%"> <pre>tiff2pdf −p letter −j −q 75 −t "Document" −f −o output.pdf input.tiff </pre> </td> </table> <a name="BUGS"></a> <h2>BUGS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p>Please report bugs via the web interface at</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="20%"></td> <td width="79%"> <p>http://bugzilla.remotesensing.org/enter_bug.cgi?product=libtiff</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="89%"> <p><b>libtiff</b>(3), <b>tiffcp</b>(1), <b>tiff2ps</b>(1)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�GǨ:�:html/man/tiff2ps.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:19 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFF2PS</title> </head> <body> <h1 align=center>TIFF2PS</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#EXAMPLES">EXAMPLES</a><br> <a href="#BUGS">BUGS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>tiff2ps − convert a <small>TIFF</small> image to PostScript™</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiff2ps</b> [ <i>options</i> ] <i>input.tif ...</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>tiff2ps</i> reads <small>TIFF</small> images and writes PostScript or Encapsulated PostScript (EPS) on the standard output. By default, <i>tiff2ps</i> writes Encapsulated PostScript for the first image in the specified <small>TIFF</small> image file.</p> <!-- INDENTATION --> <p>By default, <i>tiff2ps</i> will generate PostScript that fills a printed area specified by the <small>TIFF</small> tags in the input file. If the file does not contain <i>XResolution</i> or <i>YResolution</i> tags, then the printed area is set according to the image dimensions. The <b>−w</b> and <b>−h</b> options (see below) can be used to set the dimensions of the printed area in inches; overriding any relevant <small>TIFF</small> tags.</p> <!-- INDENTATION --> <p>The PostScript generated for <small>RGB,</small> palette, and <small>CMYK</small> images uses the <i>colorimage</i> operator. The PostScript generated for greyscale and bilevel images uses the <i>image</i> operator. When the <i>colorimage</i> 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.</p> <!-- INDENTATION --> <p>Color images with associated alpha data are composited over a white background.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−1</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Generate PostScript Level 1 (the default).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−2</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Generate PostScript Level 2.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−3</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Generate PostScript Level 3. It basically allows one to use the /flateDecode filter for ZIP compressed TIFF images.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−8</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Disable use of ASCII85 encoding with PostScript Level 2/3.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−a</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Generate output for all IFDs (pages) in the input file.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−b</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the bottom margin for the output (in inches). This does not affect the height of the printed image.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−c</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Center the image in the output. This option only shows an effect if both the <b>−w</b> and the <b>−h</b> option are given.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−C</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the document creator name.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−d</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Set the initial <small>TIFF</small> 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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−D</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Enable duplex printing (two pages per sheet of paper).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−e</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force the generation of Encapsulated PostScript (implies <b>−z</b>).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−h</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the vertical size of the printed area (in inches).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−H</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the maximum height of image (in inches). Images with larger sizes will be split in several pages. Option <b>−L</b> may be used for specifying size of split images overlapping.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−i</b></p> </td> <td width="5%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−L</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the size of overlapping for split images (in inches). Used in conjunction with <b>−H</b> and <b>−W</b> options.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−l</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the left margin for the output (in inches). This does not affect the width of the printed image.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−m</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Where possible render using the <i>imagemask</i> PostScript operator instead of the <i>image</i> operator. When this option is specified <i>tiff2ps</i> will use <i>imagemask</i> for rendering 1 bit deep images. If this option is not specified or if the image depth is greater than 1 then the <i>image</i> operator is used.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−o</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Set the initial <small>TIFF</small> directory to the <small>IFD</small> at the specified file offset. This option is useful for selecting thumbnail images and the like which are hidden using the <i>SubIFD</i> tag.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−O</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Write PostScript to specified file instead of standard output.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−p</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force the generation of (non-Encapsulated) PostScript.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−P</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Set optional PageOrientation DSC comment to Landscape or Portrait.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−r</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Rotate image by 180 degrees.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−s</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Generate output for a single IFD (page) in the input file.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−t</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the document title string.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−T</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Print pages for top edge binding.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−w</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the horizontal size of the printed area (in inches).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−W</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the maximum width of image (in inches). Images with larger sizes will be split in several pages. Option <b>−L</b> may be used for specifying size of split images overlapping.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−x</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Override resolution units specified in the TIFF as centimeters.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−y</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Override resolution units specified in the TIFF as inches.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−z</b></p> </td> <td width="5%"></td> <td width="80%"> <p>When generating PostScript Level 2, data is scaled so that it does not image into the <i>deadzone</i> 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.</p> </td> <td width="0%"> </td> </table> <a name="EXAMPLES"></a> <h2>EXAMPLES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The following generates PostScript Level 2 for all pages of a facsimile:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiff2ps −a2 fax.tif | lpr </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>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.</p> <!-- INDENTATION --> <p>To generate Encapsulated PostScript for a the image at directory 2 of an image use:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiff2ps −d 1 foo.tif </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>(Notice that directories are numbered starting at zero.)</p> <!-- INDENTATION --> <p>If you have a long image, it may be split in several pages:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiff2ps −h11 −w8.5 −H14 −L.5 foo.tif > foo.ps </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The page size is set to 8.5x11 by <b>−w</b> and <b>−h</b> options. We will accept a small amount of vertical compression, so <b>−H</b> 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 <b>−L.5</b> option says to repeat a half inch on the next page (to improve readability).</p> </td> </table> <a name="BUGS"></a> <h2>BUGS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>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.</p> <!-- INDENTATION --> <p>Does not handle tiled images when generating PostScript Level I output.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>pal2rgb</b>(1), <b>tiffinfo</b>(1), <b>tiffcp</b>(1), <b>tiffgt</b>(1), <b>tiffmedian</b>(1), <b>tiff2bw</b>(1), <b>tiffsv</b>(1), <b>libtiff</b>(3)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�u\���html/man/tiff2rgba.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:19 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFF2RGBA</title> </head> <body> <h1 align=center>TIFF2RGBA</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>tiff2rgba − convert a <small>TIFF</small> image to RGBA color space</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiff2rgba</b> [ <i>options</i> ] <i>input.tif output.tif</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>Tiff2rgba</i> 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.</p> <!-- INDENTATION --> <p>Internally this program is implemented using the <i>TIFFReadRGBAImage()</i> 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.</p> <!-- INDENTATION --> <p>The generated images are stripped images with four samples per pixel (red, green, blue and alpha) or if the <b>−n</b> 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.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> <td width="2%"> <p><b>−c</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify a compression scheme to use when writing image data: <b>−c none</b> for no compression (the default), <b>−c packbits</b> for the PackBits compression algorithm, <b>−c zip</b> for the Deflate compression algorithm, <b>−c jpeg</b> for the JPEG compression algorithm, and <b>−c lzw</b> for Lempel-Ziv & Welch.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="11%"></td> <td width="2%"> <p><b>−r</b></p> </td> <td width="5%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="11%"></td> <td width="2%"> <p><b>−b</b></p> </td> <td width="5%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="11%"></td> <td width="2%"> <p><b>−n</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Drop the alpha component from the output file, producing a pure RGB file. Currently this does not work if the <b>−b</b> flag is also in effect.</p> </td> <td width="0%"> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiff2bw</b>(1), <b>TIFFReadRGBAImage</b>(3t), <b>libtiff</b>(3)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\��11html/man/tiffcmp.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:19 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFCMP</title> </head> <body> <h1 align=center>TIFFCMP</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#BUGS">BUGS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>tiffcmp − compare two <small>TIFF</small> files</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffcmp</b> [ <i>options</i> ] <i>file1.tif file2.tif</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>Tiffcmp</i> 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: <i>GrayResponseCurve</i>, <i>ColorResponseCurve</i>, and <i>ColorMap</i> tags. Data will not be compared if any of the <i>BitsPerSample</i>, <i>SamplesPerPixel</i>, or <i>ImageWidth</i> values are not equal. By default, <i>tiffcmp</i> will terminate if it encounters any difference.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> <td width="2%"> <p><b>−l</b></p> </td> <td width="5%"></td> <td width="80%"> <p>List each byte of image data that differs between the files.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−z</b> <i>number</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>List specified number of image data bytes that differs between the files.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>−t</b></p> </td> <td width="11%"></td> <td width="52%"> <p>Ignore any differences in directory tags.</p> </td> <td width="23%"> </td> </table> <a name="BUGS"></a> <h2>BUGS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Tags that are not recognized by the library are not compared; they may also generate spurious diagnostics.</p> <!-- INDENTATION --> <p>The image data of tiled files is not compared, since the <i>TIFFReadScanline()</i> function is used. An error will be reported for tiled files.</p> <!-- INDENTATION --> <p>The pixel and/or sample number reported in differences may be off in some exotic cases.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>pal2rgb</b>(1), <b>tiffcp</b>(1), <b>tiffmedian</b>(1), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�z��=�=html/man/tiffcp.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:20 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFCP</title> </head> <body> <h1 align=center>TIFFCP</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#EXAMPLES">EXAMPLES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>tiffcp − copy (and possibly convert) a <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffcp</b> [ <i>options</i> ] <i>src1.tif ... srcN.tif dst.tif</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>tiffcp</i> combines one or more files created according to the Tag Image File Format, Revision 6.0 into a single <small>TIFF</small> file. Because the output file may be compressed using a different algorithm than the input files, <i>tiffcp</i> is most often used to convert between different compression schemes.</p> <!-- INDENTATION --> <p>By default, <i>tiffcp</i> will copy all the understood tags in a <small>TIFF</small> directory of an input file to the associated directory in the output file.</p> <!-- INDENTATION --> <p><i>tiffcp</i> 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.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−a</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Append to an existing output file instead of overwriting it.</p> </td> <td width="0%"> </td> </tr> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−b</b></p></td> <td width="5%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−B</b></p> </td> <td width="5%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−C</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Suppress the use of ‘‘strip chopping’’ when reading images that have a single strip/tile of uncompressed data.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−c</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the compression to use for data written to the output file: <b>none</b> for no compression, <b>packbits</b> for PackBits compression, <b>lzw</b> for Lempel-Ziv & Welch compression, <b>jpeg</b> for baseline JPEG compression, <b>zip</b> for Deflate compression, <b>g3</b> for CCITT Group 3 (T.4) compression, <b>g4</b> for CCITT Group 4 (T.6) compression, or <b>sgilog</b> for SGILOG compression. By default <i>tiffcp</i> will compress data according to the value of the <i>Compression</i> tag found in the source file.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>The <small>CCITT</small> Group 3 and Group 4 compression algorithms can only be used with bilevel data.</p> <!-- INDENTATION --> <p>Group 3 compression can be specified together with several T.4-specific options: <b>1d</b> for 1-dimensional encoding, <b>2d</b> for 2-dimensional encoding, and <b>fill</b> 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. <b>−c g3:2d:fill</b> to get 2D-encoded data with byte-aligned EOL codes.</p> <!-- INDENTATION --> <p><small>LZW</small> compression can be specified together with a <i>predictor</i> 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. <b>−c lzw:2</b> for <small>LZW</small> compression with horizontal differencing.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−f</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the bit fill order to use in writing output data. By default, <i>tiffcp</i> will create a new file with the same fill order as the original. Specifying <b>−f lsb2msb</b> will force data to be written with the FillOrder tag set to <small>LSB2MSB,</small> while <b>−f msb2lsb</b> will force data to be written with the FillOrder tag set to <small>MSB2LSB.</small></p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−i</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Ignore non-fatal read errors and continue processing of the input file.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−l</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the length of a tile (in pixels). <i>tiffcp</i> attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−L</b></p> </td> <td width="5%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−M</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Suppress the use of memory-mapped files when reading images.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−o</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Set initial directory offset.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−p</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the planar configuration to use in writing image data that has one 8-bit sample per pixel. By default, <i>tiffcp</i> will create a new file with the same planar configuration as the original. Specifying <b>−p contig</b> will force data to be written with multi-sample data packed together, while <b>−p separate</b> will force samples to be written in separate planes.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−r</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the number of rows (scanlines) in each strip of data written to the output file. By default (or when value <b>0</b> is specified), <i>tiffcp</i> attempts to set the rows/strip that no more than 8 kilobytes of data appear in a strip. If you specify special value <b>−1</b> it will results in infinite number of the rows per strip. The entire image will be the one strip in that case.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−s</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force the output file to be written with data organized in strips (rather than tiles).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−t</b></p> </td> <td width="5%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−w</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the width of a tile (in pixels). <i>tiffcp</i> attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile. <i>tiffcp</i> attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−x</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force the output file to be written with PAGENUMBER value in sequence.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−8</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Write BigTIFF instead of classic TIFF format.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−,=</b><i>character</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>substitute <i>character</i> for ‘,’ in parsing image directory indices in files. This is necessary if filenames contain commas. Note that <b>−,=</b> with whitespace immediately following will disable the special meaning of the ‘,’ entirely. See examples.</p> </td> </table> <a name="EXAMPLES"></a> <h2>EXAMPLES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The following concatenates two files and writes the result using <small>LZW</small> encoding:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiffcp −c lzw a.tif b.tif result.tif </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>To convert a G3 1d-encoded <small>TIFF</small> to a single strip of G4-encoded data the following might be used:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiffcp −c g4 −r 10000 g3.tif g4.tif </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>(1000 is just a number that is larger than the number of rows in the source file.)</p> <!-- INDENTATION --> <p>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’’:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiffcp album.tif,0,2 result.tif </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>A trailing comma denotes remaining images in sequence. The following command will copy all image with except the first one:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiffcp album.tif,1, result.tif </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>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:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiffcp −c none −b CCD.tif CCD.tif,1, result.tif </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>If the file above were named ‘‘CCD,X.tif’’, the <b>−,=</b> option would be required to correctly parse this filename with image numbers, as follows:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiffcp −c none −,=% −b CCD,X.tif CCD,X%1%.tif result.tif </pre> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>pal2rgb</b>(1), <b>tiffinfo</b>(1), <b>tiffcmp</b>(1), <b>tiffmedian</b>(1), <b>tiffsplit</b>(1), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\|�O�Ohtml/man/tiffcrop.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:20 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFCROP</title> </head> <body> <h1 align=center>TIFFCROP</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#EXAMPLES">EXAMPLES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>tiffcrop − copy (and possibly convert and crop or process) a <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffcrop</b> [ <i>options</i> ] <i>src1.tif ... srcN.tif dst.tif</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>tiffcrop</i> combines one or more files created according to the Tag Image File Format, Revision 6.0 into a single <small>TIFF</small> file. The output file may be compressed using a different algorithm than the input files. <i>tiffcrop</i> 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.</p> <!-- INDENTATION --> <p>By default, <i>tiffcrop</i> will copy all the understood tags in a <small>TIFF</small> directory of an input file to the associated directory in the output file.</p> <!-- INDENTATION --> <p><i>tiffcrop</i> can be used to reorganize the storage characteristics of data in a file, and it will alter or convert the image data content as specified at the same time, unlike tiffcp.</p> <!-- INDENTATION --> <p><i>tiffcrop</i> will behave exactly like tiffcp if none of the new options are specified.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−N odd|even|#,#-#,#|last</b></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>sequences and ranges of images within file to process. The words <b>odd</b> or <b>even</b> may be used to specify all odd or even numbered images. The word <b>last</b> 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. e.g.. use <b>−N 1,5-7,last</b> to process the 1st, 5th through 7th, and final image in the file.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−E top|bottom|left|right</b></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>use the top, bottom, left, or right edge as origin reference for width and length of crop regions. May be abbreviated to first letter.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−U in|cm|px</b></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>units to apply to dimensions for margins and crop regions. 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).</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−m #,#,#,#</b></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>margins to be removed from the 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. Capital M was in use.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="6%"> <p><b>−X #</b></p> </td> <td width="2%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="6%"> <p><b>−Y #</b></p> </td> <td width="2%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−Z #:#,#:#</b></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>zones of the image designated as position X of Y equal sized portions measured from the reference edge, e.g. 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 <b>−Z 1:4,3:3.</b></p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−F horiz|vert</b></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>flip, i.e. mirror, the image or extracted region horizontally or vertically.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−R 90|180|270</b></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>rotate the image or extracted region 90, 180, or 270 degrees clockwise.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>−I</b></p> </td> <td width="6%"></td> <td width="80%"> <p>invert the colorspace values for grayscale and bi-level images. This would be used to correct negative images that have incorrect PHOTOMETRIC INTERPRETATION tags. No support for color images.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−b</b> <i>image</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>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. Bias image support is not available with options for cropping, rotating, or inverting the image.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−B</b></p> </td> <td width="5%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−C</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Suppress the use of ‘‘strip chopping’’ when reading images that have a single strip/tile of uncompressed data.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−c</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the compression to use for data written to the output file: <b>none</b> for no compression, <b>packbits</b> for PackBits compression, <b>lzw</b> for Lempel-Ziv & Welch compression, <b>jpeg</b> for baseline JPEG compression, <b>zip</b> for Deflate compression, <b>g3</b> for CCITT Group 3 (T.4) compression, and <b>g4</b> for CCITT Group 4 (T.6) compression. By default <i>tiffcrop</i> will compress data according to the value of the <i>Compression</i> tag found in the source file.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>The <small>CCITT</small> Group 3 and Group 4 compression algorithms can only be used with bi-level data.</p> <!-- INDENTATION --> <p>Group 3 compression can be specified together with several T.4-specific options: <b>1d</b> for 1-dimensional encoding, <b>2d</b> for 2-dimensional encoding, and <b>fill</b> 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. <b>−c g3:2d:fill</b> to get 2D-encoded data with byte-aligned EOL codes.</p> <!-- INDENTATION --> <p><small>LZW</small> compression can be specified together with a <i>predictor</i> 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. <b>−c lzw:2</b> for <small>LZW</small> compression with horizontal differencing.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−f</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the bit fill order to use in writing output data. By default, <i>tiffcrop</i> will create a new file with the same fill order as the original. Specifying <b>−f lsb2msb</b> will force data to be written with the FillOrder tag set to <small>LSB2MSB,</small> while <b>−f msb2lsb</b> will force data to be written with the FillOrder tag set to <small>MSB2LSB.</small></p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−i</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Ignore non-fatal read errors and continue processing of the input file.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−l</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the length of a tile (in pixels). <i>tiffcrop</i> attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−L</b></p> </td> <td width="5%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−M</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Suppress the use of memory-mapped files when reading images.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−p</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the planar configuration to use in writing image data that has one 8-bit sample per pixel. By default, <i>tiffcrop</i> will create a new file with the same planar configuration as the original. Specifying <b>−p contig</b> will force data to be written with multi-sample data packed together, while <b>−p separate</b> will force samples to be written in separate planes.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−r</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the number of rows (scanlines) in each strip of data written to the output file. By default (or when value <b>0</b> is specified), <i>tiffcrop</i> attempts to set the rows/strip that no more than 8 kilobytes of data appear in a strip. If you specify special value <b>-1</b> it will results in infinite number of the rows per strip. The entire image will be the one strip in that case.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−s</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Force the output file to be written with data organized in strips (rather than tiles).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−t</b></p> </td> <td width="5%"></td> <td width="80%"> <p>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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−w</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the width of a tile (in pixels). <i>tiffcrop</i> attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile. <i>tiffcrop</i> attempts to set the tile dimensions so that no more than 8 kilobytes of data appear in a tile.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−,={character}</b></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>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.</p> </td> </table> <a name="EXAMPLES"></a> <h2>EXAMPLES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The following concatenates two files and writes the result using <small>LZW</small> encoding:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiffcrop -c lzw a.tif b.tif result.tif </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>To convert a G3 1d-encoded <small>TIFF</small> to a single strip of G4-encoded data the following might be used:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiffcrop -c g4 -r 10000 g3.tif g4.tif </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>(1000 is just a number that is larger than the number of rows in the source file.)</p> <!-- INDENTATION --> <p>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":</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiffcrop -N 1,3 album.tif result.tif </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>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:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiffcrop -c none -b CCD.tif CCD.tif -d 2 result.tif </pre> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>pal2rgb</b>(1), <b>tiffinfo</b>(1), <b>tiffcmp</b>(1), <b>tiffcp</b>(1), <b>tiffmedian</b>(1), <b>tiffsplit</b>(1), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\#����html/man/tiffdither.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:20 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFDITHER</title> </head> <body> <h1 align=center>TIFFDITHER</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#NOTES">NOTES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>tiffdither − convert a greyscale image to bilevel using dithering</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffdither</b> [ <i>options</i> ] <i>input.tif output.tif</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>tiffdither</i> converts a single channel 8-bit greyscale image to a bilevel image using Floyd-Steinberg error propagation with thresholding.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>−c</b></p> </td> <td width="6%"></td> <td width="80%"> <p>Specify the compression to use for data written to the output file: <b>none</b> for no compression, <b>packbits</b> for PackBits compression, <b>lzw</b> for Lempel-Ziv & Welch compression, <b>zip</b> for Deflate compression, <b>g3</b> for CCITT Group 3 (T.4) compression, and <b>g4</b> for CCITT Group 4 (T.6) compression. By default <i>tiffdither</i> will compress data according to the value of the <i>Compression</i> tag found in the source file.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p>The <small>CCITT</small> Group 3 and Group 4 compression algorithms can only be used with bilevel data.</p> <!-- INDENTATION --> <p>Group 3 compression can be specified together with several T.4-specific options: <b>1d</b> for 1-dimensional encoding, <b>2d</b> for 2-dimensional encoding, and <b>fill</b> 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. <b>−c g3:2d:fill</b> to get 2D-encoded data with byte-aligned EOL codes.</p> <!-- INDENTATION --> <p><small>LZW</small> compression can be specified together with a <i>predictor</i> 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. <b>−c lzw:2</b> for <small>LZW</small> compression with horizontal differencing.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−f</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the bit fill order to use in writing output data. By default, <i>tiffdither</i> will create a new file with the same fill order as the original. Specifying <b>−f lsb2msb</b> will force data to be written with the <i>FillOrder</i> tag set to <small>LSB2MSB ,</small> while <b>−f msb2lsb</b> will force data to be written with the <i>Fill- Order</i> tag set to <small>MSB2LSB .</small></p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−r</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Make each strip have no more than the given number of rows.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−t</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Set the threshold value for dithering. By default the threshold value is 128.</p> </td> <td width="0%"> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The dither algorithm is taken from the <b>tiffmedian</b>(1) program (written by Paul Heckbert).</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>pal2rgb</b>(1), <b>fax2tiff</b>(1), <b>tiffinfo</b>(1), <b>tiffcp</b>(1), <b>tiff2bw</b>(1), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�t�]@@html/man/tiffdump.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:20 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFDUMP</title> </head> <body> <h1 align=center>TIFFDUMP</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>tiffdump − print verbatim information about <small>TIFF</small> files</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffdump</b> [ <i>options</i> ] <i>name ...</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>tiffdump</i> displays directory information from files created according to the Tag Image File Format, Revision 6.0. The header of each <small>TIFF</small> 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 <i>ImageWidth</i> tag might be displayed as ‘‘ImageWidth (256) SHORT (3) 1<800>’’.</p> <!-- INDENTATION --> <p><i>tiffdump</i> is particularly useful for investigating the contents of <small>TIFF</small> files that <i>libtiff</i> does not understand.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>−h</b></p> </td> <td width="6%"></td> <td width="80%"> <p>Force numeric data to be printed in hexadecimal rather than the default decimal.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−m</b> <i>items</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>Change the number of indirect data items that are printed. By default, this will be 24.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−o</b> <i>offset</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>Dump the contents of the <small>IFD</small> 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.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffinfo</b>(1), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\���ffhtml/man/tiffinfo.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:20 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFINFO</title> </head> <body> <h1 align=center>TIFFINFO</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>tiffinfo − print information about <small>TIFF</small> files</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffinfo</b> [ <i>options</i> ] <i>input.tif ...</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>Tiffinfo</i> displays information about files created according to the Tag Image File Format, Revision 6.0. By default, the contents of each <small>TIFF</small> directory in each file is displayed, with the value of each tag shown symbolically (where sensible).</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−c</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Display the colormap and color/gray response curves, if present.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−D</b></p> </td> <td width="5%"></td> <td width="80%"> <p>In addition to displaying the directory tags, read and decompress all the data in each image (but not display it).</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−d</b></p> </td> <td width="5%"></td> <td width="80%"> <p>In addition to displaying the directory tags, print each byte of decompressed data in hexadecimal.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−j</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Display any <small>JPEG</small> -related tags that are present.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−o</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Set the initial <small>TIFF</small> 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.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−s</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Display the offsets and byte counts for each data strip in a directory.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−z</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Enable strip chopping when reading image data.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="3%"> <p><b>−#</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Set the initial <small>TIFF</small> directory to <i>#</i>.</p> </td> <td width="0%"> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>pal2rgb</b>(1), <b>tiffcp</b>(1), <b>tiffcmp</b>(1), <b>tiffmedian</b>(1), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\%""html/man/tiffmedian.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:20 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFMEDIAN</title> </head> <body> <h1 align=center>TIFFMEDIAN</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#NOTES">NOTES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>tiffmedian − apply the median cut algorithm to data in a <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffmedian</b> [ <i>options</i> ] <i>input.tif output.tif</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>tiffmedian</i> applies the median cut algorithm to an <small>RGB</small> image in <i>input.tif</i> to generate a palette image that is written to <i>output.tif</i>. 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.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="11%"></td> <td width="2%"> <p><b>−c</b></p> </td> <td width="5%"></td> <td width="80%"> <p>Specify the compression to use for data written to the output file: <b>none</b> for no compression, <b>packbits</b> for PackBits compression, <b>lzw</b> for Lempel-Ziv & Welch compression, and <b>zip</b> for Deflate compression. By default <i>tiffmedian</i> will compress data according to the value of the <i>Compression</i> tag found in the source file.</p> </td> <td width="0%"> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <p><small>LZW</small> compression can be specified together with a <i>predictor</i> 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. <b>−c lzw:2</b> for <small>LZW</small> compression with horizontal differencing.</p> </td> </table> <!-- TABS --> <table width="100%" border=0 rules="none" frame="void" cols="5" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>−C</b></p> </td> <td width="6%"></td> <td width="80%"> <p>Specify the number of entries to use in the generated colormap. By default all 256 entries/colors are used.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>−f</b></p> </td> <td width="6%"></td> <td width="80%"> <p>Apply Floyd-Steinberg dithering before selecting a colormap entry.</p> </td> <td width="0%"> </td> <tr valign="top" align="left"> <td width="10%"></td> <td width="2%"> <p><b>−r</b></p> </td> <td width="6%"></td> <td width="80%"> <p>Specify the number of rows (scanlines) in each strip of data written to the output file. By default, <i>tiffmedian</i> attempts to set the rows/strip that no more than 8 kilobytes of data appear in a strip.</p> </td> <td width="0%"> </td> </table> <a name="NOTES"></a> <h2>NOTES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>This program is derived from Paul Heckbert’s <i>median</i> program.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>pal2rgb</b>(1), <b>tiffinfo</b>(1), <b>tiffcp</b>(1), <b>tiffcmp</b>(1), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p><b>Color Image Quantization for Frame Buffer Display</b>, Paul Heckbert, SIGGRAPH proceedings, 1982, pp. 297-307.</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\X�Ӭ88html/man/tiffset.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:20 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFSET</title> </head> <body> <h1 align=center>TIFFSET</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#EXAMPLES">EXAMPLES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>tiffset − set a field in a <small>TIFF</small> header</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffset</b> [ <i>options</i> ] <i>filename.tif</i></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>Tiffset</i> sets the value of a <small>TIFF</small> header to a specified value.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−s</b> <i>tagnumber</i> [ <i>count</i> ] <i>value ...</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>Set the value of the named tag to the value or values specified.</p> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>−sf</b> <i>tagnumber filename</i></p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="19%"></td> <td width="80%"> <p>Set the value of the tag to the contents of filename. This option is supported for ASCII tags only.</p> </td> </table> <a name="EXAMPLES"></a> <h2>EXAMPLES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The following example sets the image description tag (270) of a.tif to the contents of the file descrip:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiffset −sf 270 descrip a.tif </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>The following example sets the artist tag (315) of a.tif to the string ‘‘Anonymous’’:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiffset −s 305 Anonymous a.tif </pre> </td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>This example sets the resolution of the file a.tif to 300 dpi:</p></td> </table> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="17%"></td> <td width="82%"> <pre>tiffset −s 296 2 a.tif tiffset −s 282 300.0 a.tif tiffset −s 283 300.0 a.tif </pre> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffdump</b>(1), <b>tiffinfo</b>(1), <b>tiffcp</b>(1), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\iGoohtml/man/tiffsplit.1.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:20 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFSPLIT</title> </head> <body> <h1 align=center>TIFFSPLIT</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#OPTIONS">OPTIONS</a><br> <a href="#BUGS">BUGS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>tiffsplit − split a multi-image <small>TIFF</small> into single-image <small>TIFF</small> files</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffsplit</b> <i>src.tif</i> [ <i>prefix</i> ]</p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>tiffsplit</i> takes a multi-directory (page) <small>TIFF</small> file and creates one or more single-directory (page) <small>TIFF</small> files from it. The output files are given names created by concatenating a prefix, a lexically ordered suffix in the range [<i>aaa</i>-<i>zzz</i>], the suffix <i>.tif</i> (e.g. <i>xaaa.tif</i>, <i>xaab.tif</i>, <i>xzzz.tif</i>). If a prefix is not specified on the command line, the default prefix of <i>x</i> is used.</p> </td> </table> <a name="OPTIONS"></a> <h2>OPTIONS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>None.</p> </td> </table> <a name="BUGS"></a> <h2>BUGS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>Only a select set of ‘‘known tags’’ is copied when splitting.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>tiffcp</b>(1), <b>tiffinfo</b>(1), <b>libtiff</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\��2�� � html/man/CMakeLists.txtnu�[���# CMake build for libtiff # # Copyright © 2015 Open Microscopy Environment / University of Dundee # Written by Roger Leigh <rleigh@codelibre.net> # # 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. set(indexfile index.html) set(docfiles libtiff.3tiff.html TIFFbuffer.3tiff.html TIFFClose.3tiff.html TIFFcodec.3tiff.html TIFFcolor.3tiff.html TIFFDataWidth.3tiff.html TIFFError.3tiff.html TIFFFieldDataType.3tiff.html TIFFFieldName.3tiff.html TIFFFieldPassCount.3tiff.html TIFFFieldReadCount.3tiff.html TIFFFieldTag.3tiff.html TIFFFieldWriteCount.3tiff.html TIFFFlush.3tiff.html TIFFGetField.3tiff.html TIFFmemory.3tiff.html TIFFOpen.3tiff.html TIFFPrintDirectory.3tiff.html TIFFquery.3tiff.html TIFFReadDirectory.3tiff.html TIFFReadEncodedStrip.3tiff.html TIFFReadEncodedTile.3tiff.html TIFFReadRawStrip.3tiff.html TIFFReadRawTile.3tiff.html TIFFReadRGBAImage.3tiff.html TIFFReadRGBAStrip.3tiff.html TIFFReadRGBATile.3tiff.html TIFFReadScanline.3tiff.html TIFFReadTile.3tiff.html TIFFRGBAImage.3tiff.html TIFFSetDirectory.3tiff.html TIFFSetField.3tiff.html TIFFsize.3tiff.html TIFFstrip.3tiff.html TIFFswab.3tiff.html TIFFtile.3tiff.html TIFFWarning.3tiff.html TIFFWriteDirectory.3tiff.html TIFFWriteEncodedStrip.3tiff.html TIFFWriteEncodedTile.3tiff.html TIFFWriteRawStrip.3tiff.html TIFFWriteRawTile.3tiff.html TIFFWriteScanline.3tiff.html TIFFWriteTile.3tiff.html fax2ps.1.html fax2tiff.1.html pal2rgb.1.html ppm2tiff.1.html raw2tiff.1.html tiff2bw.1.html tiff2pdf.1.html tiff2ps.1.html tiff2rgba.1.html tiffcmp.1.html tiffcp.1.html tiffcrop.1.html tiffdither.1.html tiffdump.1.html tiffgt.1.html tiffinfo.1.html tiffmedian.1.html tiffset.1.html tiffsplit.1.html) set(doc_DATA ${indexfile} ${docfiles}) extra_dist(${doc_DATA}) install(FILES ${doc_DATA} DESTINATION "${LIBTIFF_DOCDIR}/html/man") # htmldoc target to regenerate HTML files string(REPLACE ";" "^" escaped_docfiles "${docfiles}") add_custom_target(htmldoc COMMAND "${CMAKE_COMMAND}" "-DMANSRCDIR=${PROJECT_SOURCE_DIR}/man" "-DHTMLMANDIR=${PROJECT_SOURCE_DIR}/html/man" "-DINDEXFILE=${indexfile}" "-DDOCFILES=${escaped_docfiles}" -P "${CMAKE_CURRENT_SOURCE_DIR}/HtmlDoc.cmake") PK粐\}\cchtml/man/HtmlDoc.cmakenu�[���# CMake documentation generation for libtiff # # Copyright © 2015 Open Microscopy Environment / University of Dundee # Written by Roger Leigh <rleigh@codelibre.net> # # 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. string(REPLACE "^" ";" DOCFILES "${DOCFILES}") set(INDEXSTART "<html><head><title>Libtiff HTML manpage index</title></head><body bgcolor=white><ul><h2>Man Pages</h2><p>") set(INDEXEND "</ul></body></html>") set(indexcontent "${INDEXSTART} ") foreach(doc ${DOCFILES}) string(REGEX REPLACE "(.*)\\.html$" "\\1" man "${doc}") execute_process(COMMAND groff -Thtml -mandoc "${MANSRCDIR}/${man}" OUTPUT_FILE "${HTMLMANDIR}/${doc}" RESULT_VARIABLE GROFF_STATUS) if(GROFF_STATUS) message(FATAL_ERROR "Groff failed to generate HTML manpage") endif() message(STATUS "Generated ${HTMLMANDIR}/${doc} from ${MANSRCDIR}/${man}") set(indexcontent "${indexcontent}<li><a href=\"${doc}\">${man}</a> ") endforeach() set(indexcontent "${indexcontent}${INDEXEND} ") file(WRITE "${HTMLMANDIR}/${INDEXFILE}" "${indexcontent}") message(STATUS "Generated ${HTMLMANDIR}/${INDEXFILE}") PK粐\�/Ǥ� � html/man/TIFFClose.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:15 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFClose</title> </head> <body> <h1 align=center>TIFFClose</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#DIAGNOSTICS">DIAGNOSTICS</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFClose − close a previously opened <small>TIFF</small> file</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>void TIFFClose(TIFF *</b><i>tif</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFClose</i> closes a file that was previously opened with <b>TIFFOpen</b>(3TIFF). Any buffered data are flushed to the file, including the contents of the current directory (if modified); and all resources are reclaimed.</p> </td> </table> <a name="DIAGNOSTICS"></a> <h2>DIAGNOSTICS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>All error messages are directed to the routine. Likewise, warning messages are directed to the <b>TIFFWarning</b>(3TIFF) routine.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>libtiff</b>(3TIFF), <b>TIFFOpen</b>(3TIFF)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\ƕ�5� � !html/man/TIFFDataWidth.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:16 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFDataWidth</title> </head> <body> <h1 align=center>TIFFDataWidth</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFDataWidth − Get the size of TIFF data types</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>int TIFFDataWidth(TIFFDataType</b> <i>type</i><b>)</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFDataWidth</i> returns a size of <i>type</i> in bytes. Currently following data types are supported:<i><br> TIFF_BYTE<br> TIFF_ASCII<br> TIFF_SBYTE<br> TIFF_UNDEFINED<br> TIFF_SHORT<br> TIFF_SSHORT<br> TIFF_LONG<br> TIFF_SLONG<br> TIFF_FLOAT<br> TIFF_IFD<br> TIFF_RATIONAL<br> TIFF_SRATIONAL<br> TIFF_DOUBLE</i></p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFDataWidth</i> returns a number of bytes occupied by the item of given type. 0 returned when uknown data type supplied.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>libtiff</b>(3TIFF),</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�)���html/man/TIFFError.3tiff.htmlnu�[���<!-- Creator : groff version 1.18.1 --> <!-- CreationDate: Sat Feb 24 18:37:16 2007 --> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta name="Content-Style" content="text/css"> <title>TIFFError</title> </head> <body> <h1 align=center>TIFFError</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <a name="NAME"></a> <h2>NAME</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p>TIFFError, TIFFSetErrorHandler − library error handling interface</p> </td> </table> <a name="SYNOPSIS"></a> <h2>SYNOPSIS</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>#include <tiffio.h></b></p> <!-- INDENTATION --> <p><b>void TIFFError(const char *</b><i>module</i><b>, const char *</b><i>fmt</i><b>,</b> <i>...</i><b>)</b></p> <!-- INDENTATION --> <p><b>#include <stdarg.h></b></p> <!-- INDENTATION --> <p><b>typedef void (*TIFFErrorHandler)(const char *</b><i>module</i><b>, const char *</b><i>fmt</i><b>, va_list</b> <i>ap</i><b>);<br> TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler handler);</b></p> </td> </table> <a name="DESCRIPTION"></a> <h2>DESCRIPTION</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFError</i> invokes the library-wide error handling function to (normally) write an error message to the <b>stderr</b>. The <i>fmt</i> parameter is a <i>printf</i>(3S) format string, and any number arguments can be supplied. The <i>module</i> parameter, if non-zero, is printed before the message; it typically is used to identify the software module in which an error is detected.</p> <!-- INDENTATION --> <p>Applications that desire to capture control in the event of an error should use <i>TIFFSetErrorHandler</i> to override the default error handler. A <small>NULL</small> (0) error handling function may be installed to suppress error messages.</p> </td> </table> <a name="RETURN VALUES"></a> <h2>RETURN VALUES</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><i>TIFFSetErrorHandler</i> returns a reference to the previous error handling function.</p> </td> </table> <a name="SEE ALSO"></a> <h2>SEE ALSO</h2> <!-- INDENTATION --> <table width="100%" border=0 rules="none" frame="void" cols="2" cellspacing="0" cellpadding="0"> <tr valign="top" align="left"> <td width="8%"></td> <td width="91%"> <p><b>TIFFWarning</b>(3TIFF), <b>libtiff</b>(3TIFF), <b>printf</b>(3)</p> <!-- INDENTATION --> <p>Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> </td> </table> <hr> </body> </html> PK粐\�����%html/man/TIFFFieldDataType.3tiff.htmlnu�[���<!-- Creator : groff version 1.21 --> <!-- CreationDate: Sun Jul 29 12:12:01 2012 --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta name="generator" content="groff -Thtml, see www.gnu.org"> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <meta name="Content-Style" content="text/css"> <style type="text/css"> p { margin-top: 0; margin-bottom: 0; vertical-align: top } pre { margin-top: 0; margin-bottom: 0; vertical-align: top } table { margin-top: 0; margin-bottom: 0; vertical-align: top } h1 { text-align: center } </style> <title>TIFFFieldDataType</title> </head> <body> <h1 align="center">TIFFFieldDataType</h1> <a href="#NAME">NAME</a><br> <a href="#SYNOPSIS">SYNOPSIS</a><br> <a href="#DESCRIPTION">DESCRIPTION</a><br> <a href="#RETURN VALUES">RETURN VALUES</a><br> <a href="#SEE ALSO">SEE ALSO</a><br> <hr> <h2>NAME <a name="NAME"></a> </h2> <p style="margin-left:11%; margin-top: 1em">TIFFFieldDataType − Get TIFF data type from field information</p> <h2>SYNOPSIS <a name="SYNOPSIS"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>#include <tiffio.h></b></p> <p style="margin-left:11%; margin-top: 1em"><b>TIFFDataType TIFFFieldDataType(const TIFFField*</b> <i>fip</i><b>)</b></p> <h2>DESCRIPTION <a name="DESCRIPTION"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldDataType</b> returns the data type stored in a TIFF field.</p> <p style="margin-left:11%; margin-top: 1em"><i>fip</i> is a field information pointer previously returned by <b>TIFFFindField</b>, <b>TIFFFieldWithTag</b>, or <b>TIFFFieldWithName</b>.</p> <h2>RETURN VALUES <a name="RETURN VALUES"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>TIFFFieldDataType</b> returns a member of the enum type <b>TIFFDataType</b>.</p> <h2>SEE ALSO <a name="SEE ALSO"></a> </h2> <p style="margin-left:11%; margin-top: 1em"><b>libtiff</b>(3TIFF),</p> <p style="margin-left:11%; margin-top: 1em">Libtiff library home page: <b>http://www.simplesystems.org/libtiff/</b></p> <hr> </body> </html> PK粐\��l"��html/v3.4beta036.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.4beta036 </TITLE> </HEAD> <BODY> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.4beta036<BR> <B>Previous Version</B>: <A HREF=v3.4beta035.html>v3.4beta035</A><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI>support was added for building the library as a DSO under HP-UX with the native C compiler <LI>tools are now built with explicit pathnames for the DSO under IRIX, Solaris, and Linux <LI>DSO configuration support for Linux was changed to require that <B>libc.so</B> only be readable (not executable) </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI>support was add for ICC: <TT>NumberOfInks</TT>, and <TT>ICCProfile</TT> <LI>a memory leak caused by doing <TT>TIFFSetDirectory(0)</TT> was fixed <LI>a bug was fixed whereby certain multi-directory files were not properly handled when accessed by mapping the data into memory <LI>the strip chopping support is now always compiled into the library with the default usage controlled by a <TT>STRIPCHOP_DEFAULT</TT> configuration parameter <LI>the strip chopping support no longer chops tiled images <LI>all static strings are now const--for shared libraries <LI>the logic for estimating the strip size of images without a <TT>StripByteCounts</TT> tag was improved by handling <TT>PlanarContig</TT> images differently from <TT>PlanarSeparate</TT> <LI>a bug was fixed in the G3 codec when converting the Y resolution of data specified in metric units <LI>a bug was fixed in the G3/G4 decoder for data where lines terminate with a v0 code <LI>the <TT>TIFFRGBAImage</TT> support was changed to scale 16-bit colormap entries more conservatively to avoid problems with applications that do not generate fully saturated pixel values <LI>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 <LI>a bug was fixed in <TT>TIFFPrintDirectory</TT>'s handling of the <TT>InkNames</TT> tag <LI><TT>TIFFPrintDirectory</TT> now understands <TT>NumberOfInks</TT> and ICC-related tags <LI>the routines for reading image data now provide more useful information when a read error is encountered <LI>support was added for compiling with Microsoft Visual C++ 4.0 </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI>a bug was fixed in <B>pal2rgb</B>'s colormap handling <LI><B>tiff2ps</B> 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 <LI><B>tiff2ps</B> does a better job guarding against the mishandling of greyscale images <LI><B>tiff2ps</B> now correctly converts X- and Y-resolution values specified in metric units <LI><B>tiffdump</B> has a new <TT>-m</TT> option to control the maximum number of indirect data values printed for a tag (by default 24) <LI><B>tiffdump</B> understands several new tags <LI><B>tiffdump</B> now shows any terminating null in ASCII strings <LI><B>tiffinfo</B> now suppresses strip chopping when interpreting an image; a new <TT>-z</TT> option has been added to enable strip chopping </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> <ADDRESS> <A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A> Last updated $Date: 2016-09-25 20:05:45 $. </ADDRESS> </BODY> </HTML> PK粐\�tqr}}html/v3.5.1.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.5.1 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Arial, Helvetica, Sans"> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.5.1<BR> <B>Previous Version</B>: v3.4beta037<BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com, directory graphics/tiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff//>http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI> <em> None of consequence </em> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI> Support was added for IPTC Newsphoto metadata (TIFFTAGE_IPTCNEWSPHOTO) <LI> Support was added for photoshop caption handling (TIFFTAG_PHOTOSHOP) </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI> <A HREF=mailto:billr@corbis.com>Bill Radcliffe's</a> 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 <A href=http://www.ImageMagick.org/>ImageMagick</a> convert(1) utility. </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\ U��html/v3.5.2.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.5.2 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Arial, Helvetica, Sans"> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.5.2<BR> <B>Previous Version</B>: <A HREF=v3.5.1.html>v3.5.1</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com, directory graphics/tiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff//">http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI> Corrected alpha versioning. <LI> Removed distinction between alpha and release targets in Makefile.in. <LI> Added release.stamp target, which tags cvs tree, and updates "RELEASE-DATE" <LI> Added releasediff target, which diffs tree with source as of date in "RELEASE-DATE" <LI>Ticked up version to 3.5.2 (alpha 01 -- but I think we'll moving away from alpha/non-alpha distinctions). </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI> Added IRIX/gcc, and OSF/1 4.x support on behalf of Albert Chin-A-Young <china@thewrittenword.com> <LI> Added TIFFReassignTagToIgnore() API on behalf of Bruce Cameron <cameron@petris.com>. Man page still pending. <LI> pre-remove so link before softlink in LINUXdso action in libtiff/Makefile.in to avoid failure on LINUXdso builds other than the first. <LI> 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. <LI> Added TIFFReadRGBATile()/TIFFReadRGBAStrip() support in tif_getimage.c. <LI> Applied "a" mode fix to tif_win32.c/TIFFOpen() as suggested by Christopher Lawton <clawton@mathworks.com> <LI> Set O_BINARY for tif_unix.c open() ... used on cygwin for instance. <LI> Added CYGWIN case in configure. <LI> Applied Francois Dagand's patch to handle fax decompression bug. (sizes >= 65536 were failing) </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI> Added addtiffo (add overviews to a TIFF file) in contrib. Didn't put it in tools since part of it is in C++. </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\�eL��html/v3.5.3.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.5.3 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Arial, Helvetica, Sans"> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.5.3<BR> <B>Previous Version</B>: <A HREF=v3.5.2.html>v3.5.2</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff//">http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> </UL> <p> The ChangeLog will follow, but please note the most important change: LZW compression has been removed. <p> 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. <p> From <A HREF=http://burnallgifs.org>Burn All GIF's Day</a>: <br> <em>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</em> <P> 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. <P> 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 <P> 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. <p> LZW decompression is unchanged. <p> <P><HR WIDTH=65% ALIGN=left> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI> Added zip creation to release makefile target </UL> <P><HR WIDTH=65% ALIGN=left> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI> Added html for TIFFWriteTile.3t man page. <LI> 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. <LI> Added TIFFWriteTile.3t man page. <LI> Added notes on use of makefile.vc in build.html, and fixed email subscription address. <LI> Fixed apocalypse-inducing y2k bug in contrib/ras/ras2tiff.c <LI> Did some casts cleaning up to reduce compiler warnings in tif_fax3.c, from Bruce Carmeron <cameron@petris.com> -- modifications of changes made by Frank (sun cc still complained on cast). <LI> fixed various VC++ warnings as suggested by Gilles Vollant <info@winimage.com>. <LI> Modified TIFFquery.3t man pages info on TIFFIsByteSwapped() to not imply applications are responsible for image data swapping. <LI> HTML-ized the man pages, added to html/man <LI> Removed LZW Compression to comply with Unisys patent extortion. <LI> Corrected one remaining 16 -> 32 bit value in tif_fax3.c, From Ivo Penzar <ivo.penzar@infolink-software.com. <LI> Added patch from Ivo Penzar to have TiffAdvanceDirectory handle memory mapped files. <ivo.penzar@infolink-software.com> </UL> <P><HR WIDTH=65% ALIGN=left> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI> Fixed apocalypse-inducing y2k bug in contrib/ras/ras2tiff.c </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\�=�J J html/v3.5.4.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.5.4 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.5.4<BR> <B>Previous Version</B>: <A HREF=v3.5.3.html>v3.5.3</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff//">http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI> None </UL> <P><HR WIDTH=65% ALIGN=left> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> Added Pixar tag support. Contributed by Phil Beffery <phil@pixar.com> <li> Made one more change to tif_dir.c for removal of LZW compression. Also added notice when LZW compression invoked. <li> Fixed bug that caused LZW (non) compression to segfault. Added warning about LZW compression removed being removed, and why. </UL> <P><HR WIDTH=65% ALIGN=left> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> Changed default compression in tools to TIFF_PACKBITS, and changed usage descriptions in tools to reflect removal of LZW compression <li> Added nostrip to install in tools/Makefile.in so that debugging symbols are kept. <li> Made Packbits the default compression in tools/tiff2rgba.c instead of LZW. </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\�B�B��html/v3.5.5.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.5.5 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.5.5<BR> <B>Previous Version</B>: <A HREF=v3.5.4.html>v3.5.4</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff//">http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#lzwkit">Changes in the LZW compression kit</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI> configure: added test for libc6 for linux targets. Bug reported by Stanislav Brabec <utx@k332.feld.cvut.cz> <LI> configure: fixed bugs in sed scripts (applied sed script s:/@:s;@:;s:/s;;:;: to configure). fix submitted by Stanislav Brabec <utx@k332.feld.cvut.cz> <LI> tools/iptcutil was not in files list, and wasn't being added to tar archive. Updated Makefile.in. <LI> Added 3.5 docs to html/Makefile.in. Thanks to Stanislav Brabec <utx@k332.feld.cvut.cz> <LI> Fixed tools/tiffcmp so that stopondiff testing works. Patch care of Joseph Orost <joe@sanskrit.lz.att.com>. <LI> Added fax3sm_winnt.c to distribution list in Makefile.in. <LI> Added libtiff/libtiff.def to TIFFILES distribution list. </UL> <P><HR WIDTH=65% ALIGN=left> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI>tif_fax3.c: Fixed serious bug introduced during the uint16->uint32 conversion for the run arrays. <LI> Set td_sampleformat default to SAMPLEFORMAT_UINT instead of SAMPLEFORMAT_VOID in TIFFDefaultDirectory() in tif_dir.c. <LI> Added "GetDefaulted" support for TIFFTAG_SAMPLEFORMAT in tif_aux.c. <LI> Patched tif_fax3.c so that dsp->runs is allocated a bit bigger to avoid overruns encountered with frle_bug.tif. <LI> 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). <LI> Modified tif_win32.c to support 2-4GB seeks. <LI> tentatively changed toff_t to be unsigned instead of signed to facilitate support for 2-4GB files. <LI> Updated a variety of files to use toff_t. Fixed some mixups between toff_t and tsize_t. <LI> Set tif_rawdatasize to zero when freeing raw data buffer in TIFFWriteDirectory(). <LI> Enabled "REWRITE_HACK" in tif_write.c by default. <LI> Fix bug in tif_write.c when switching between reading one directory and writing to another. <LI> Made TIFFWriteCheck() public, and added TIFFCreateDirectory() <LI> Added TIFFmemory(3t) functions to libtiff.def. <LI> Added libtiff/libtiff.def to TIFFILES distribution list. </UL> <P><HR WIDTH=65% ALIGN=left> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI> fax2ps: Fixed mixup of width and height in bounding box statement as per submission by Nalin Dahyabhai <nalin@redhat.com>. <LI> fax2ps: Modified printruns to take uint32 instead of uint16. Patch courtesy of Bernt Herd <herd@herdsoft.com> <LI> Largely reimplemented contrib/addtiffo to avoid temp files, updating the TIFF file in place. Fixed a few other bugs to. <LI> Altered descriptions in tools to reflect "by default" lzw not supported </UL> <P><HR WIDTH=65% ALIGN=left> <A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION KIT</B></A> <UL> <LI>created mangle-src.sh -- sed scripts to munge src into LZW enabled format. Thanks to Stanislav Brabec <utx@k332.feld.cvut.cz> <LI>created Makefile <LI>merged tif_dir.c with current source. <LI> Created lzw compression kit, as a new CVS module (libtiff-lzw-compression-kit). <LI> Updated index.html to note lzw compression kit. </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\�N�s��html/v3.5.6-beta.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.5.6 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.5.6beta<BR> <B>Previous Version</B>: <A HREF=v3.5.5.html>v3.5.5</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff//">http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in contrib</A> <LI><A HREF="#lzwkit">Changes in the LZW compression kit</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI> Added GNULDdso target and switched linux and freebsd to use it. <LI> tools/Makefile.in: Modified to install properly on SGI. <LI> configure: Fixed DSO test for Linux as per patch from Jan Van Buggenhout <chipzz@Ace.ULYSSIS.Student.KULeuven.Ac.Be>. </UL> <P><HR WIDTH=65% ALIGN=left> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI> 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. <LI> 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 <LI> 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 <LI> Applied patch for 0x0000 sequences in tif_fax3.h's definition of EXPAND1D() as per bug 11 (from Roman). <LI> Fixed tiffcomp.h to avoid win32 stuff if unix #defined, to improve cygwin compatibility. <LI> 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 <LI> 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 <njl98r@ecs.soton.ac.uk> for reporting the bug and proving the patch. <LI> Fixed tif_jpeg.c so avoid destroying the decompressor before we are done access data thanks to bug report from: Michael Eckstein <eckstein@gepro.cz>. <LI> tif_open.c: Don't set MMAP for O_RDWR files. <LI> 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. <LI> tif_read.c: fixed up bug with files missing rowsperstrip and the strips per separation fix done a few weeks ago. <LI> Tentatively added support for SAMPLEFORMAT_COMPLEXIEEEFP, and SAMPLEFORMAT_COMPLEXINT. <LI> index.html, bugs.html: added bugzilla info. <LI> 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(). <LI> Applied 16/32 bit fix to tif_fax3.c. Fix supplied by Peter Skarpetis <peters@serendipity-software.com.au> <LI> Modified tiffio.h logic with regard to including windows.h. It won't include it when building with __CYGWIN__. <LI> README: update to mention www.libtiff.org, don't list Sam's old email address. <LI> 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. <LI> tif_win32.c: Applied patch to fix overreads and ovverwrites caught by BoundsChecker. From Arvan Pritchard <arvan.pritchard@infomatix.co.uk> (untested). <LI> tif_getimage.c: Applied patch to silence VC6 warnings. From Arvan Pritchard <arvan.pritchard@informatix.co.uk> <LI> tif_lzw.c: Applied patch to silence VC6 warnings. From Arvan Pritchard <arvan.pritchard@informatix.co.uk> <LI> libtiff/tif_apple.c: Applied "Carbon" support patches supplied by Leonard Rosenthol <leonardr@lazerware.com>. May interfere with correct building on older systems. If so, please let me know. </UL> <P><HR WIDTH=65% ALIGN=left> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI> tools/rgb2ycbcr.c: fixed output strip size to account for vertical roundup if rows_per_strip not a multiple of vertical sample size. <LI> tools/tiffsplit.c: Copy TIFFTAG_SAMPLEFORMAT. <LI> 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 <utx@penguin.cz> </UL> <P><HR WIDTH=65% ALIGN=left> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN CONTRIB:</B></A> <UL> <LI> contrib/addtiffo: Added "averaging" resampling option. <LI> Added contrib/stream (stream io) code submitted by Avi Bleiweiss. </UL> <P><HR WIDTH=65% ALIGN=left> <A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION KIT</B></A> <UL> <LI> updated tif_dir.c to reflect changes to no-lzw tif_dir.c </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\-�C$'$'html/v3.5.7.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.5.7 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.5.7<BR> <B>Previous Version</B>: <A HREF=v3.5.6-beta.html>v3.5.6 Beta</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff">download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff//">http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#lzwkit">Changes in the LZW compression kit</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> libtiff/libtiff.def: Brent Roman submitted new version adding serveral missing entry points. Also add a few other entry points later. <li> configure, Makefile.in, etc: added support for OPTIMIZER being set from config.site. <li> 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. <li> configure/config.site: modified to check if -lm is needed for MACHDEPLIBS if not supplied by config.site. Needed for Darwin. <li> libtiff/tiff.h: Applied hac to try and resolve the problem with the inttypes.h include file on AIX. (Bug 39) <li> configure, *Makefile.in: Various changes to improve configuration for HP/UX specifically, and also in general. (Bug 40) They include: <ul> <li> Try to handle /usr/bin/sh instead of /bin/sh where necessary. <li> Upgrade to HP/UX 10.x+ compiler, linker and dso options. <li> Fixed mmap() test to avoid MMAP_FIXED ... it isn't available on HP <li> Use -${MAKEFLAGS} in sub makes from makefiles. <li> Fixed SCRIPT_SH/SHELL handling. </ul> <li> configure: Changes for DSO generation on AIX provided by John Marquart <jomarqua@indiana.edu>. <li> 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). <li> configure, libtiff/Makefile.in: applied OpenBSD patches as per bug 61. <li> Makefile.in: added DESTDIR support as per bug 60. <li> libtiff/tif_jpeg.c: Define HAVE_BOOLEAN on windows if RPCNDR.H has been included. <li> man/Makefile.in: add TIFFClientOpen link as per debian submitted bug 66. <li> libtiff/Makefile.in: Fixed @DSOSUB_VERSION to be @DSOSUF_VERSION@ in two places. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> 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. <li> tif_luv.c/tiff.h/tiffio.h: New version of TIFF LogLuv (SGILOG) modules contributed by Greg Ward (greg@shutterfly.com). He writes: <ol> <li> 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. <li> 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. <li> 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. </ol> <li> libtiff/tif_dirinfo.c: don't declare tiffFieldInfo static on VMS. <li> Added TIFFTAG_COPYRIGHT support. <li> tif_getimage.c: Added support for 16bit minisblack/miniswhite images in RGBA interface. <li> libtiff/tif_dirinfo.c: removed duplicate TIFFTAG_PHOTOSHOP as per bug 44. <li> libtiff/tif_dirwrite.c: Added support for TIFF_VARIABLE2 in the case of writing TIFF_BYTE/TIFF_SBYTE fields as per bug 43. <li> 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. <li> libtiff/tif_dirinfo.c: moved pixar and copyright flags to ensure everything is in order. <li> Integrated experimental OJPEG support from Scott Marovich of HP. <li> libtiff/tif_open.c: Seek back to zero after failed read, before writing header. <li> libtiff/tiff.h, libtiff/tif_fax3.c: added check for __LP64__ when checking for 64 bit architectures as per bugzilla bug 67. <li> libtiff/tif_getimage.c: Use memmove() instead of TIFFmemcpy() in TIFFReadRGBATile() to avoid issues in cases of overlapping buffers. See Bug 69 in Bugzilla. <li> libtiff/tif_getimage.c: Don't complain for CMYK (separated) images with more than four samples per pixel as per bug 73. <li> 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. <li> libtiff/tif_packbits.c: fixed memory overrun error as per bug 77. <li> 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. <li> 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. <li> libtiff/tif_lzw.c: added dummy LZWSetupEncode() to report an error about LZW not being available. <li> libtiff/tif_dir.c: propagate failure to initialize compression back from TIFFSetField() as an error status, so applications can detect failure. <li> libtiff/tif_lzw.c: Avoid MS VC++ 5.0 optimization bug as per bug 78. <li> libtiff/tif_dirwrite.c: added TIFFRewriteDirectory() function. Updated TIFFWriteDirectory man page to include TIFFRewriteDirectory. <li> 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. <li> Added PHOTOMETRIC_ITULAB as per bug 90. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> 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. <li> 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. <li> fax2ps.c: Helge (libtiff at oldach.net) submitted fix that corrects behaviour for non-Letter paper sizes. (Bug 35) It fixes two problems: <br> 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. <br> Second, scaling now preserves aspect ratio, which makes unusual faxes (in particular short ones) print properly. <li> thumbnail.c: changed default output compression to packbits from LZW since LZW isn't generally available. <li> tiff2rgba.c: added -n flag to avoid emitting alpha component. Also added a man page for tiff2rgba. <li> 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. <li> libtiff/tif_getimage.c: Fixed so that failure is properly reported by gtTileContig, gtStripContig, gtTileSeparate and gtStripSeparate as per bug 51. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION KIT:</B></A> <UL> <LI> 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. <LI> Some changes were made to make recovery from failure to initialize the LZW compressor more graceful. <LI> Note that as distributed libtiff support LZW decompression, but not LZW compression. </UL> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> Fixed distribution to include contrib/addtiffo/tif_ovrcache.{c,h}. </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\�3p��A�Ahtml/v3.6.0.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.6.0 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.6.0<BR> <B>Previous Version</B>: <A HREF=v3.5.7.html>v3.5.7</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> <LI><A HREF="#lzwkit">Changes in the LZW compression kit</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <ul> <li> New utility <a href=./man/raw2tiff.1.html>raw2tiff</a> for converting raw rasters into TIFF files. <li> Lots of new <a href=./man/tiff2ps.1.html>tiff2ps</a> options. <li> Lots of new <a href=./man/fax2tiff.1.html>fax2tiff</a> options. <li> Lots of bug fixes for LZW, JPEG and OJPEG compression. </ul> <h3>Custom Tag Support</h3> 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.<p> 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. <p> 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!<p> 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". <p> 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. <p> 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.<p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> 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. <li> configure: Set -DPIXARLOG_SUPPORT option along with -DZIP_SUPPORT. <li> html/Makefile.in: Updated to use groffhtml for generating html pages from man pages. <li> configure, libtiff/Makefile.in: Added SCO OpenServer 5.0.6 support from John H. DuBois III. <li> libtiff/{Makefile.vc, libtiff.def}: Missed declarations added. <li> libtiff/Makefile.in, tools/Makefile.in: Shared library will not be stripped when installing, utility binaries will do be stripped. As per bug 93. <li> man/Makefile.in: Patch DESTDIR handling as per bug 95. <li> configure: OpenBSD changes for Sparc64 and DSO version as per bug 96. <li> config.site/configure: added support for OJPEG=yes option to enable OJPEG support from config.site. <li> config.guess, config.sub: Updated from ftp.gnu.org/pub/config. <li> configure: Modify CheckForBigEndian so it can work in a cross compiled situation. <li> configure, libtiff/Makefile.in: Changes for building on MacOS 10.1 as per bug 94. <li> html/Makefile.in: added missing images per bug 92. <li> port/Makefile.in: fixed clean target per bug 92. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> libtiff/tif_getimage.c: New function <A HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImageOriented()</A> implemented to retrieve raster array with user-specified origin position. <li> libtiff/tif_fax3.c: Fix wrong line numbering. <li> libtiff/tif_dirread.c: Check field counter against number of fields. <li> Store a list of opened IFD to prevent directory looping. <li> 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. <li> libtiff/tif_lzw.c: fixed so that decoder state isn't allocated till LZWSetupDecode(). Needed to read LZW files in "r+" mode. <li> libtiff/tif_dir.c: fixed up the tif_postdecode settings responsible for byte swapping complex image data. <li> libtiff/tif_open.c: Removed error if opening a compressed file in update mode bug (198). <li> 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. <li> html/man/*.html: Web pages regenerated from man pages. <li> 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). <li> libtiff/tiff.h: #ifdef USING_VISUALAGE around previous Visual Age AIX porting hack as it screwed up gcc. (bug 39) <li> libtiff/tiff.h: added COMPRESSION_JP2000 (34712) for LEAD tools custom compression. <li> libtiff/tif_dirread.c: Another fix for the fetching SBYTE arrays by the TIFFFetchByteArray() function. (bug 52) <li> libtiff/tif_dirread.c: Expand v[2] to v[4] in TIFFFetchShortPair() as per bug 196. <li> libtiff/tif_lzw.c: Additional consistency checking added in LZWDecode() and LZWDecodeCompat() fixing bugs 190 and 100. <li> libtiff/tif_lzw.c: Added check for valid code lengths in LZWDecode() and LZWDecodeCompat(). Fixes bug 115. <li> tif_getimage.c: Ensure that TIFFRGBAImageBegin() returns the return code from the underlying pick function as per bug 177. <li> 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. <li> libtiff/tif_jpeg.c: Fixed problem with setting of nrows in JPEGDecode() as per bug 129. <li> 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. <li> libtiff/tif_ojpeg.c: Major upgrade from Scott. Details in bug 156. <li> libtiff/tif_open.c: Pointers to custom procedures in TIFFClientOpen() are checked to be not NULL-pointers. <li> 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. <li> libtiff/: tif_dirwrite.c, tif_write.c, tiffio.h: <a href=./man/TIFFWriteDirectory.3t.html>TIFFCheckpointDirectory()</a> routine added as per bug 124. The <a href=./man/TIFFWriteDirectory.3t.html>TIFFWriteDirectory</a> man page discusses this new function as well as the related <a href=./man/TIFFWriteDirectory.3t.html>TIFFRewriteDirectory()</a>. <li> 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. <li> tif_dirread.c: avoid div-by-zero if rowbytes is zero in chop func as per bug 111. <li> 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). <li> 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. <li> libtiff/: tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c, tif_dirwrite.c: Added routine <a href=./man/TIFFDataWidth.3t.html>TIFFDataWidth</a> for determining TIFFDataType sizes instead of working with tiffDataWidth array directly as per bug 109. <li>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. <li> libtiff/{tiff.h,tif_fax3.c}: Add support for __arch64__ as per bug 94. <li> libtiff/tif_read.c: Fixed TIFFReadEncodedStrip() to fail if the decodestrip function returns anything not greater than zero as per bug 97. <li> 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. <li> 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. <li> libtiff/tif_jpeg.c: allow jpeg data stream sampling values to override those from tiff directory. This makes this work with ImageGear generated files. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Added page size setting when creating PS Level 2. <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Fixed PS comment emitted when FlateDecode is being used. <li> <a href=./man/tiffsplit.1.html>tiffsplit</a>: increased the maximum number of pages that can be split. <li> <a href=./man/raw2tiff.1.html>raw2tiff</a>: Added option `-p' to explicitly select color space of input image data. <li> <a href=./man/tiffmedian.1.html>tiffmedian</a>: Suppiort for large (> 2GB) images. <li> <a href=./man/ppm2tiff.1.html>ppm2tiff</a>: Fixed possible endless loop. <li> <a href=./man/tiff2rgba.1.html>tiff2rgba</a>: Switched to use <A HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImageOriented()</A> instead of <A HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImage()</A>. <li> <a href=./man/tiffcmp.1.html>tiffcmp</a>: Fixed problem with unused data comparing (bug 349). `-z' option now can be used to set the number of reported different bytes. <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Added possibility to specify value -1 to -r option to get the entire image as one strip (bug 343). <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Set the correct RowsPerStrip and PageNumber values (bug 343). <li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Page numbering fixed (bug 341). <li> <a href=./man/ppm2tiff.1.html>ppm2tiff</a>: PPM header parser improved: now able to skip comments. <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Force deadzone printing when EPS output specified (bug 325). <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: 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). <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Fixed problem with colorspace conversion for JPEG encoded images (bugs 23 and 275) <li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Applied patch from Julien Gaulmin. More switches for fax2tiff tool for better control of input and output (bugs 272 and 293). <li> <a href=./man/raw2tiff.1.html>raw2tiff</a>: New utility for turning raw raster images into TIFF files written by Andrey Kiselev. <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Sebastian Eken provided patches (bug 200) to add new these new switches: <ul> <li> <b>-b #</b>: for a bottom margin of # inches <li> <b>-c</b>: center image <li> <b>-l #</b>: for a left margin of # inches <li> <b>-r</b>: rotate the image by 180 degrees </ul> Also, new features merged with code for shrinking/overlapping. <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Don't emit BeginData/EndData DSC comments since we are unable to properly include the amount to skip as per bug 80. <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: 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. <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Patch from John Williams to add new functionality for tiff2ps utility splitting long images in several pages as per bug 142. New switches: <ul> <li> <b>-H #</b>: split image if height is more than # inches <li> <b>-L #</b>: overLap split images by # inches </ul> <li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: New commandline switches to override resolution units obtained from the input file per bug 131: <ul> <li> <b>-x</b>: override resolution units as centimeters <li> <b>-y</b>: override resolution units as inches </ul> <li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Updated to reflect latest changes in libtiff per bug 125. <li> tiff2ps: Division by zero fixed as per bug 88. <li> <a href=./man/tiffcp.1.html>tiffcp<a>: Added support for 'Orientation' tag. <li> <a href=./man/tiffdump.1.html>tiffdump</a>: include TIFFTAG_JPEGTABLES in tag list. <li> tiffset: fix bug in error reporting. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> Fixed distribution to include contrib/addtiffo/tif_ovrcache.{c,h}. <li> 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. </UL> <!---------------------------------------------------------------------------> <A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION KIT:</B></A> <UL> <li> LZW compression kit synchronized with actual libtiff version. </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\a�t���html/v3.6.1.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.6.1 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.6.1<BR> <B>Previous Version</B>: <A HREF=v3.6.0.html>v3.6.0</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> <LI><A HREF="#lzwkit">Changes in the LZW compression kit</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <ul> <li> New utility <a href="./man/tiff2pdf.1.html">tiff2pdf</a> for converting TIFF images directly into PDF. <li> New <a href="./man/TIFFcolor.3t.html">color conversion module</a>. <li> Full support for Orientation tag in <a href="./man/TIFFReadRGBAImage.3t.html">TIFFRGBAImage</a> interface. <li> Many bugs fixed. </ul> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> libtiff/makefile.vc, tools/makefile.vc: Support for IJG JPEG library. <li> Makefile.in: Add an absolute path to the test_pics.sh call. <li> Makefile.in: Add an absolute path to the test_pics.sh call. <li> libtiff/tiffcomp.h: #define _BSDTYPES_DEFINED when defining BSD typedefs. <li> configure, libtiff/{Makefile.in, mkversion.c}: Relative buildings fixed. <li> Makefile.in: Add an absolute path to the test_pics.sh call. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> 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. <li> libtiff/{tif_getimage.c, tif_aux.c}: Read WhitePoint tag from the file and properly use it for CIE Lab 1976 to RGB transform. <li> 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. <li> libtiff/tif_luv.c: Fixed bug in 48-bit to 24-bit conversion routine, reported by Antonio Scuri. <li> libtiff/{tiffio.h, tif_codec.c}: Added new function TIFFIsCODECConfigured(), suggested by Ross Finlayson. <li> libtiff/tif_ojpeg.c: TIFFVGetField() function now can properly extract the fields from the OJPEG files. Patch supplied by Ross Finlayson. <li> libtiff/tif_dir.h: _TIFFFindOrRegisterdInfo declaration replaced with _TIFFFindOrRegisterFieldInfo as reported by Ross Finlayson. <li> libtiff/tif_dirinfo.c: Implemented binary search in _TIFFMergeFieldInfo(). Patch supplied by Ross Finlayson. <li> tif_dirread.c: do not mark all anonymously defined tags to be IGNOREd (as it was done in 3.6.0). <li> libtiff/{tiff.h, tif_dirinfo.c}: Added support for IFD (13) datatype, intruduced in "Adobe PageMaker TIFF Technical Notes". <li> 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 <a href="./man/TIFFcolor.3t.html">publicly available interface</a>. 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 <a href="./man/tiff2rgba.1.html">tiff2rgba</a> utility abd then process it with the <a href="./man/tiff2ps.1.html">tiff2ps</a>. <li> libtiff/tif_tile.c: Remove spurious use of "s" (sample) in the planarconfig_contig case in TIFFComputeTile() as per bug 387 <li> libtiff/tiffiop.h: New macros: TIFFmax and TIFFmin. <li> libtiff/{tiffio.h, tif_strip.c}: Added TIFFRawStripSize() function as suggested by Chris Hanson. <li> libtiff/{tif_lzw.c, tif_fax3.c}: Proper support for update mode as per bug 424. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> <a href=./man/tiff2pdf.1.html>tiff2pdf</a>: New tool, written by Ross Finlayson, to directly convert TIFF files to PDF. <li> <a href=./man/tiffgt.1.html>tiffgt</a>: Unmaintained and platform dependent sgigt utility removed and replaced with the completely rewritten portable <a href=./man/tiffgt.1.html>tiffgt</a> tool (depend on OpenGL and GLUT). This tool will not build by default. <li> <a href=./man/ras2tiff.1.html>ras2tiff</a>: Properly determine SUN Rasterfiles with the reverse byte order (it is reported by the magic header field). Problem reported by Andreas Wiesmann. <li> <a href=./man/raw2tiff.1.html>raw2tiff</a>: Implemented image size guessing using correlation coefficient calculation between two neighbour lines. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> contrib/pds/{tif_pdsdirread.c, tif_pdsdirwrite.c}: Use TIFFDataWidth() function insted of tiffDataWidth array. </UL> <!---------------------------------------------------------------------------> <A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION KIT:</B></A> <UL> <li> Proper support for update mode as per bug 424. </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\V���88html/v3.7.0.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.7.0 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.7.0<BR> <B>Previous Version</B>: <A HREF=v3.7.0beta2.html>v3.7.0beta2</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> <LI><A HREF="#lzwkit">Changes in the LZW compression kit</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> Several bugs found after 3.7.0beta2 release were fixed. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> ltmain.sh: Fix for MinGW compilation. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> 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). <li> libtiff/tif_dirinfo.c: Type of the TIFFTAG_SUBIFD field changed to TIFF_IFD. <li> Preliminary support for BigTIFF files: now libtiff can recognize and reject to open such images. ;-) <li> 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. <li> 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. <li> libtiff/tif_dirinfo.c: Fix bug with tif_foundfield and reallocation of tif_fieldinfo as per bug <A HREF="http://bugzilla.remotesensing.org/show_bug.cgi?id=630"> http://bugzilla.remotesensing.org/show_bug.cgi?id=630</A> <li> libtiff/tif_compress.c: Improved error reporting in TIFFGetConfiguredCODECs() (Dmitry V. Levin). </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> tiffcmp.c (leof): Renamed from 'eof' in order to avoid conflict noticed under MinGW. <li> tiff2pdf.c: Fixed TransferFunction tag handling reported by Ross A. Finlayson. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> No changes. </UL> <!---------------------------------------------------------------------------> <A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION KIT:</B></A> <UL> <li> This one is not longer needed. </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\�|��#�#html/v3.7.0alpha.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.7.0alpha </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.7.0alpha<BR> <B>Previous Version</B>: <A HREF=v3.6.1.html>v3.6.1</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> <LI><A HREF="#lzwkit">Changes in the LZW compression kit</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <ul> <li> Significant changes in software configuration: we are switched to GNU autotools now. <li> tiffset: tiffset now can set any libtiff supported tags. Tags can be supplied by the mnemonic name or number. </ul> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> Get rid of the old configuration system and switch to GNU autotools. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> libtiff/tif_ojpeg.c: Fixed problem with duplicated SOI and SOF markers as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=581" http://bugzilla.remotesensing.org/show_bug.cgi?id=581</a>. <li> libtiff/{tif_open.c, tiffio.h}: New function added: TIFFIsBigEndian(). Function returns nonzero if given was file written in big-endian order. <li> libtiff/tif_print.c: added (untested) support for printing SSHORT, SLONG and SRATIONAL fields. <li> libtiff/tif_fax3.c: Avoid reading CCITT compression options if compression type mismatches. See <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=565"> http://bugzilla.remotesensing.org/show_bug.cgi?id=565</a>. <li> libtiff/tif_strip.c: Never return 0 from the TIFFNumberOfStrips(). <li> libtiff/tif_dirread.c: Workaround for broken TIFF writers which store single SampleFormat value for multisampled images. See <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=562"> http://bugzilla.remotesensing.org/show_bug.cgi?id=562</a>. <li> libtiff/tif_write.c: Allow in-place updating of the compressed images (don't work properly with all codecs). For details see GDAL bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=534"> http://bugzilla.remotesensing.org/show_bug.cgi?id=534</a>. <li> libtiff/tif_jpeg.c: Workaround for wrong sampling factors used in the Intergarph JPEG compressed TIFF images as per bug: <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=532"> http://bugzilla.remotesensing.org/show_bug.cgi?id=532</a>. <li> libtiff/tif_open.c: Use dummy mmap/munmap functions in TIFFClientOpen() when the appropriate client functions was not supplied by user. <li> libtiff/tif_dirread.c: Fixed problem with handling TIFF_UNDEFINED tag type in TIFFFetchNormalTag() as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=508" http://bugzilla.remotesensing.org/show_bug.cgi?id=508</a>. <li> libtiff/tif_codec.c: Fixed typo in TIFFInitPackBits name as per: <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=494"> http://bugzilla.remotesensing.org/show_bug.cgi?id=494</a>. <li> libtiff/tif_fax3.c: Fixed problem, introdiced in 3.6.1 release, with the CCITT encoding modes as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=483"> http://bugzilla.remotesensing.org/show_bug.cgi?id=483</a>. We need more work on fax codec to support update mode. <li> libtiff/tiff.h: Fixed tag definitions for TIFFTAG_YCLIPPATHUNITS and TIFFTAG_INDEXED as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=475"> http://bugzilla.remotesensing.org/show_bug.cgi?id=475</a>. <li> libtiff/{tif_win32.c, tif_unix.c}: Check whether the pointer is NULL before proceeding further as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=474"> http://bugzilla.remotesensing.org/show_bug.cgi?id=474</a>. Check results, returned by the TIFFFdOpen() before returning and close file if TIFFFdOpen() failed as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=468"> http://bugzilla.remotesensing.org/show_bug.cgi?id=468</a>. <li> libtiff/{libtiff.def, tif_close.c, tiffio.h, tif_open.c}: Separate TIFFCleanup() from the TIFFClose() in order to fix the bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=468"> http://bugzilla.remotesensing.org/show_bug.cgi?id=468</a>. <li> libtiff/tif_dirwrite.c: Fixed handling of writable ASCII tags that are field_passcount=TRUE properly. Arguably anonymous custom tags should be declared as passcount=FALSE, but I don't want to change that without a careful review. <li> libtiff/tif_write.c: Fixed reporting size of the buffer in case of stripped image in TIFFWriteBufferSetup(). As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=460"> http://bugzilla.remotesensing.org/show_bug.cgi?id=460</a>. <li> libtiff/tif_dir.c: Incomplete cleanup in TIFFFreeDirectory(), patch from Gerben Koopmans. <li> libtiff/tif_dirread.c: Check field_passcount value before setting the value of undefined type, patch from Gerben Koopmans. <li> libtiff/{tiff.h, tif_fax3.c}:Fixes for AMD 64 platform as suggested by Jeremy C. Reed. <li> libtiff/tif_win32.c: Fixed problem with _TIFFrealloc() when the NULL pointer passed. Patch supplied by Larry Grill. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> tiffset: tiffset now can set any libtiff supported tags. Tags can be supplied by the mnemonic name or number. <li> ycbcr.c: fixed main() declaration as per: <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=513"> http://bugzilla.remotesensing.org/show_bug.cgi?id=513</a>. <li> <a href=./man/tiffsplit.1.html>tiffsplit</a>: Don't forget to copy Photometric Interpretation tag. <li> <a href=./man/tiffsplit.1.html>tiffsplit</a>: 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 <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=574" http://bugzilla.remotesensing.org/show_bug.cgi?id=574</a>. <li> <a href=./man/tiffsplit.1.html>tiffsplit</a>: Copy JPEGTables tag contents for JPEG compressed images. Reported by Artem Mirolubov. <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Close output file on normal exit. <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Don't emit warnings when Orientation tag does not present in the input image. <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Properly set Photometric Interpretation in case of JPEG compression of grayscale images. <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Fixed problem with wrong interpretation of the InkNames tag as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=466"> http://bugzilla.remotesensing.org/show_bug.cgi?id=466</a>. Memory leak fixed. <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Fixed problem with wrong Photometric setting for non-RGB images. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> Outdated stuff removed. <li> Almost all programs are sinchronized with the current libtiff and should compile without problems. </UL> <!---------------------------------------------------------------------------> <A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION KIT:</B></A> <UL> <li> No changes. </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\�T�ZZhtml/v3.7.0beta.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.7.0beta </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.7.0beta<BR> <B>Previous Version</B>: <A HREF=v3.7.0alpha.html>v3.7.0alpha</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> <LI><A HREF="#lzwkit">Changes in the LZW compression kit</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <ul> <li> LZW compression enabled by default. You don't need the separate compression kit anymore. <li> bmp2tiff: Added new utility to convert Windows BMP files into TIFFs. <li> The first attempt to implement a test suite. </ul> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> Many portability fixes in the new autotooled build suite. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> libtiff/{tif_luv.c, tif_next.c, tif_thunder.c}: Several buffer overruns fixed, as noted by Chris Evans. <li> 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. <li> libtiff/tiff.h: Fix column tagging. Reference current Adobe XMP specification. Reference libtiff bug tracking system to submit private tag additions. <li> 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 <A HREF="http://bugzilla.remotesensing.org/show_bug.cgi?id=576"> http://bugzilla.remotesensing.org/show_bug.cgi?id=576</A>. <li> 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: <A HREF="http://www.asmail.be/msg0054799560.html"> http://www.asmail.be/msg0054799560.html</A>. <li> libtiff/{tiffiop.h, tif_dirinfo.c}: Fixed problem with the static variable as per bug <A HREF="http://bugzilla.remotesensing.org/show_bug.cgi?id=593"> http://bugzilla.remotesensing.org/show_bug.cgi?id=593</A>. <li> 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. <li> libtiff/tif_dir.c: Call TIFFError() instead of producing warnings when setting custom tags by value. Reported by Eric Fieleke. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> tiff2ps: Avoid zero division in setupPageState() function; properly initialize array in PSDataBW(). <li> tiff2pdf: Multiple bugfixes. <li> ras2tiff: Fixed issue with missed big-endian checks as per bug </A HREF="http://bugzilla.remotesensing.org/show_bug.cgi?id=586"> http://bugzilla.remotesensing.org/show_bug.cgi?id=586</A>. <li> bmp2tiff: Added new utility to convert Windows BMP files into TIFFs. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> No changes. </UL> <!---------------------------------------------------------------------------> <A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION KIT:</B></A> <UL> <li> This one is not longer needed. </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\�/��html/v3.7.0beta2.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.7.0beta2 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.7.0beta2<BR> <B>Previous Version</B>: <A HREF=v3.7.0beta.html>v3.7.0beta</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> <LI><A HREF="#lzwkit">Changes in the LZW compression kit</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> 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. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> Several fixes in the test suite. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> Preliminary support for BigTIFF files: now libtiff can recognize and reject to open such images. ;-) <li> 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. <li> Added many checks for integer overflow and for successful space allocations in the different parts of library. Code review completed by Dmitry V. Levin. <li> libtiff/{tiffio.h, tif_compress.c}: Added TIFFGetConfiguredCODECs()function to get the list of configured codecs. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> tiff2bw: Write ImageWidth/Height tags to output file, as noted by Gennady Khokhorin. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> No changes. </UL> <!---------------------------------------------------------------------------> <A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION KIT:</B></A> <UL> <li> This one is not longer needed. </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\9�v*��html/v3.7.1.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.7.1 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.7.1<BR> <B>Previous Version</B>: <A HREF=v3.7.0.html>v3.7.0</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> This is mostly bugfix release. Most important fix is the one related to wrong custom tag read/write code. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> autogen.sh: aclocal and autoheader should be executed after libtoolize. Also add '-I .' to aclocal invocation to check current directory for macros. <li> nmake.opt: Link with the user32.lib in windowed mode. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=697"> http://bugzilla.remotesensing.org/show_bug.cgi?id=697</a> <li> nmake.opt, makefile.vc: make it easier to rename the libtiff DLL. <li> configure, configure.ac: Added --enable-rpath option to embed linker paths into library binary. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> tiff.h: Revert back libtiff data type definitions as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=687"> http://bugzilla.remotesensing.org/show_bug.cgi?id=687</a> <li> tif_dirread.c: Do not forget about TIFF_VARIABLE2 when checking for tag count in TIFFReadDirectory() function. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=713"> http://bugzilla.remotesensing.org/show_bug.cgi?id=713</a> <li> tif_getimage.c: Support for multiple-alpha-channelled RGB-images as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=718"> http://bugzilla.remotesensing.org/show_bug.cgi?id=718</a> <li> tif_getimage.c: #define A1 bracketing for clean build on SunPro compiler. <li> tif_dirwrite.c: Always write TIFFTAG_SUBIFD using LONG type as per bugs <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=703"> http://bugzilla.remotesensing.org/show_bug.cgi?id=703</a> and <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=704"> http://bugzilla.remotesensing.org/show_bug.cgi?id=704</a>. <li> tif_win32.c: Use char* strings instead of TCHAR in windowed mode as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=697"> http://bugzilla.remotesensing.org/show_bug.cgi?id=697</a> <li> tif_dir.c, tif_dirread.c: Remove TIFFReassignTagToIgnore() call from the TIFFReadDirectory() function. TIFFReassignTagToIgnore must be removed in the future, as it was never used properly. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=692"> http://bugzilla.remotesensing.org/show_bug.cgi?id=692</a> <li> tif_jpeg.c: Added a work-around in order to allow compilation with the heavily modified version of libjpeg delivered with Cygwin. <li> tif_dir.c: Properly handle tags, which have the uint32 counts. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=693"> http://bugzilla.remotesensing.org/show_bug.cgi?id=693</a> <li> tif_unix.c: Make UNIX module compilable (and usable) on Windows. <li> tiff.h: Added Adobe DNG tags. <li> tif_aux.c: Set the appropriate ReferenceBlackWhite array for YCbCr image which lacks that tag (noted by Hans Petter Selasky). <li> tif_color.c: Division by zero fixed (Hans Petter Selasky). <li> tif_stream.cxx, tiffio.h: Added C++ stream interface contributed by Edward Lam (see <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=654"> http://bugzilla.remotesensing.org/show_bug.cgi?id=654</a> for details). Those who want to use C++ streams should #include <tiffio.hxx>. <li> tif_open.c: Removed close() in TIFFClientOpen() if file is bad. This is the callers responsibility. <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=651"> http://bugzilla.remotesensing.org/show_bug.cgi?id=651</a> <li> tiffio.h, tif_win32.c, libtiff.def}: Added TIFFOpenW() function to work with the double byte strings (used to represent filenames in some locales). As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=625"> http://bugzilla.remotesensing.org/show_bug.cgi?id=625</a> <li> tif_dirread.c: Fixed problem when fetching BitsPerSample and Compression tags of type LONG from broken TIFFS as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=662"> http://bugzilla.remotesensing.org/show_bug.cgi?id=662</a> <li> tif_dirinfo.c: Fixed definition for TIFFTAG_RICHTIFFIPTC, the writecount should have uint32 type. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=662"> http://bugzilla.remotesensing.org/show_bug.cgi?id=662</a> <li> tif_write.c: Fixed wrong if() statement in TIFFAppendToStrip() function as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=660"> http://bugzilla.remotesensing.org/show_bug.cgi?id=660</a> <li> tif_dirinfo.c: Change definition for TIFFTAG_EXTRASAMPLES field. The caller should supply a count when setting this field. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=648"> http://bugzilla.remotesensing.org/show_bug.cgi?id=648</a>. <li> tif_jpeg.c, tif_ojpeg.c: TIFFTAG_JPEGTABLES should have uint32 count. Use this type everywhere. <li> tif_next.c: avoid use of u_long and u_char types. <li> tif_fax3.c: Fixed case with the wrong decode routines choosing when the incorrect Group4Options tag set. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=323"> http://bugzilla.remotesensing.org/show_bug.cgi?id=323</a> <li> tif_dirwrite.c: Fixed problem with passing count variable of wrong type when writing the TIFF_BYTE/TIFF_SBYTE tags in TIFFWriteNormalTag(). <li> tif_compress.c: Zero division problem fixed (Vladimir Nadvornik, Dmitry V. Levin). </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> fax2ps.c: Be able to extract the first page (#0). As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=690"> http://bugzilla.remotesensing.org/show_bug.cgi?id=690</a> <li> tiff2ps.c: Fixed wrong variable data type when read Position tags (Tristan Hill). <li> tiff2ps.c: Fixed wrong variable data type when read Resolution tags (Peter Fales). <li> tiffset.c: Check the malloc return value (Dmitry V. Levin). </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> No changes. </UL> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\�JjRRhtml/v3.7.2.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.7.2 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.7.2<BR> <B>Previous Version</B>: <A HREF=v3.7.1.html>v3.7.1</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> Maintainance release. Many bugfixes in the build environment and compatibility improvements. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> configure.ac: Use -rpath option instead of -R as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=732"> http://bugzilla.remotesensing.org/show_bug.cgi?id=732</a> <li> tif_stream.cxx: Fixes for C++ stream interface from Michael Rinne and Edward Lam. <li> configure.ac: Make the documentation directory location configurable via the --with-docdir option (as suggested by Jeremy C. Reed). <li> Place the C++ stream API in the separate library called libtiffxx to avoid unneeded dependencies. Probably there will be more C++ API in the future. As per bugs <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=733"> http://bugzilla.remotesensing.org/show_bug.cgi?id=733</a> and <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=730"> http://bugzilla.remotesensing.org/show_bug.cgi?id=730</a> <li> configure, configure.ac: Replace --disable-c++ with the --disable-cxx option as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=730"> http://bugzilla.remotesensing.org/show_bug.cgi?id=730</a>. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> Applied patch from Lee Howard to support a new tag TIFFTAG_FAXDCS (34911) used in HylaFax software. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=771"> http://bugzilla.remotesensing.org/show_bug.cgi?id=771</a> <li> tif_open.c: Remove unnesessary TIFFSeekFile() call as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=756"> http://bugzilla.remotesensing.org/show_bug.cgi?id=756</a> <li> tiff.h: Changed the int8 definition to be always signed char as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=727"> http://bugzilla.remotesensing.org/show_bug.cgi?id=727</a> <li> tiffio.h: Move TIFFOpenW() function into the extern "C"{} block as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=763"> http://bugzilla.remotesensing.org/show_bug.cgi?id=763</a> <li> tif_dirread.c: Estimate strip size in case of wrong or suspicious values in the tags. As per bugs <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=705"> http://bugzilla.remotesensing.org/show_bug.cgi?id=705</a> and <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=320"> http://bugzilla.remotesensing.org/show_bug.cgi?id=320</a> <li> tif_color.c: Use double as the second argument of pow() function in TIFFCIELabToRGBInit(). As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=741"> http://bugzilla.remotesensing.org/show_bug.cgi?id=741</a> <li> tif_pixarlog.c: Avoid warnings when converting float to integer as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=740"> http://bugzilla.remotesensing.org/show_bug.cgi?id=740</a> <li> tif_getimage.c: Always fill the error message buffer in TIFFRGBAImageBegin() as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=739"> http://bugzilla.remotesensing.org/show_bug.cgi?id=739</a> <li> tif_jpeg.c: Added ability to read/write the fax specific TIFFTAG_FAXRECVPARAMS, TIFFTAG_FAXSUBADDRESS and TIFFTAG_FAXRECVTIME tags as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=736"> http://bugzilla.remotesensing.org/show_bug.cgi?id=736</a> <li> tif_win32.c: Fixed message formatting in functions Win32WarningHandler() and Win32ErrorHandler() as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=735"> http://bugzilla.remotesensing.org/show_bug.cgi?id=735</a> <li> tiffio.h: Move the color conversion routines in the 'extern "C"' section as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=727"> http://bugzilla.remotesensing.org/show_bug.cgi?id=727</a> <li> tiff.h: Restore back the workaround for AIX Visual Age C compiler to avoid double definition of BSD types as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=39"> http://bugzilla.remotesensing.org/show_bug.cgi?id=39</a> <li> tif_getimage.c: More fixes for multiple-alpha-channelled RGB-images as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=713"> http://bugzilla.remotesensing.org/show_bug.cgi?id=713</a> </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> tiffcmp.c: Added ability to compare the 32-bit integer and floating point data; complain on unsupported bit depths. <li> tiffcmp.c: Use properly sized buffer in short arrays comparison as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=785"> http://bugzilla.remotesensing.org/show_bug.cgi?id=785</a> <li> fax2ps.c: Replace insecure mktemp() function with the tmpfile() as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=786"> http://bugzilla.remotesensing.org/show_bug.cgi?id=786</a> <li> tiffgt.c: Fix problem on big-endian CPUs so that images display more correctly. Images display brighter than they should on a Sun workstation. <li> tiff2ps.c: Fixed problem with page sizes as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=742"> http://bugzilla.remotesensing.org/show_bug.cgi?id=742</a> <li> tiff2ps.c: Interpret the -w and -h options independently. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=689"> http://bugzilla.remotesensing.org/show_bug.cgi?id=689</a> <li> tiffdump.c: Fixed problem when read broken TIFFs with the wrong tag counts (Dmitry V. Levin, Martin Pitt). <li> tiffset.c: Convert character option to integer value as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=725"> http://bugzilla.remotesensing.org/show_bug.cgi?id=725</a>. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> No changes. </UL> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\-�V 7 7 html/v3.7.3.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.7.3 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.7.3<BR> <B>Previous Version</B>: <A HREF=v3.7.2.html>v3.7.2</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> Replace runtime endianess check with the compile time one. <li> Added support for the new predictor type (floating point predictor), defined at the TIFF Technical Note 3. <li> Added Support for custom tags, passed by value. Added support for all DNG tags. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> Do not use empty -R option when linking with --enable-rpath. <li> Added workaround for OpenBSD/MirOS soname problem as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=838"> http://bugzilla.remotesensing.org/show_bug.cgi?id=838</a> <li> Fixed parallel compilation of the libtiff and libtiffxx libraries as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=826"> http://bugzilla.remotesensing.org/show_bug.cgi?id=826</a> <li> configure.ac, libtiff/Makefile.am: Use libtool machinery to pass rpath option. <li> make.opt: Build with Win32 CRT library by default. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> tiffiop.h, tif_open.c: Added open option 'h' to avoid reading the first IFD when needed. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=875"> http://bugzilla.remotesensing.org/show_bug.cgi?id=875</a> <li> tiff.h: Use correct int size on Sparc 64bit/Sun compiler platform. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=855"> http://bugzilla.remotesensing.org/show_bug.cgi?id=855</a> <li> tif_dirinfo.c: Added support for ClipPath, XClipPathUnits and YClipPathUnits tags. <li> 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. <li> tif_jpeg.c: Cleanup the codec state depending on TIFF_CODERSETUP flag (to fix memory leaks). <li> tif_dirwrite.c: Use tdir_count when calling TIFFCvtNativeToIEEEDouble() in the TIFFWriteDoubleArray() function as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=845"> http://bugzilla.remotesensing.org/show_bug.cgi?id=845</a> <li> 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 <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=831"> http://bugzilla.remotesensing.org/show_bug.cgi?id=831</a> <li> tif_dir.c: More efficient custom tags retrieval as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=830"> http://bugzilla.remotesensing.org/show_bug.cgi?id=830</a> <li> tif_win32.c: Use FILE_SHARE_READ | FILE_SHARE_WRITE share mode in CreateFile() call as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=829"> http://bugzilla.remotesensing.org/show_bug.cgi?id=829</a> <li> tif_jpeg.c: Substantial fix for addtiffo problems with JPEG encoded TIFF files. Pre-allocate lots of space for jpegtables in directory. <li> 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. <li> tif_jpeg.c: added LIB_JPEG_MK1 support in JPEGDecodeRaw(). <li> tif_dirread.c: Ensure that broken files with too many values in PerSampleShorts, TIFFFetchPerSampleLongs and TIFFFetchPerSampleAnys work ok instead of crashing. <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=843"> http://bugzilla.remotesensing.org/show_bug.cgi?id=843</a> <li> 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. <li> 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. <li> tiff.h: Added predictor constants. <li> tiffiop.h, tif_dir.c: Use uint32 type for appropriate values in _TIFFVSetField() function. Inspired by the bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=816"> http://bugzilla.remotesensing.org/show_bug.cgi?id=816</a> <li> tif_open.c: Do not read header in case the output file should be truncated (Ron). <li> tif_dirinfo.c, tif_config.h.vc: Use lfind() instead of bsearch() in _TIFFFindFieldInfoByName() function (Ron). <li> tif_dir.c, tif_print.c: Properly handle all data types in custom tags. <li> dirinfo.c: Added DNG tags. <li> tiff.h: Added missed DNG tag (LensInfo); added DNG 1.1.0.0 tags. <li> tif_dir.c, tif_print.c: Added Support for custom tags, passed by value. <li> tiff.h, tif_dirinfo.c, tiffiop.h: Added EXIF related tags. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> tiff2pdf.c: Print two characters per loop in the t2p_write_pdf_trailer(). As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=594"> http://bugzilla.remotesensing.org/show_bug.cgi?id=594</a> <li> tiffgt.c: Use MacOS X OpenGL framework when appropriate. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=844"> http://bugzilla.remotesensing.org/show_bug.cgi?id=844</a> <li> ppm2tiff.c: Fixed format string when read PPM file header with the fscanf() function. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=861"> http://bugzilla.remotesensing.org/show_bug.cgi?id=861</a> <li> tiffsplit.c: Check for JPEGTables tag presence before copying. <li> tiff2pdfr.c: Calculate the tile width properly; added new option '-b' to use interpolation in output PDF files (Bruno Ledoux). <li> tiffdither.c: Copy the PhotometricInterpretation tag from the input file. <li> tif2pdf.c: Fixed problem with alpha channel handling as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=794"> http://bugzilla.remotesensing.org/show_bug.cgi?id=794</a>. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> addtiffo/{tif_overview.c, tif_ovrcache.c, tif_ovrcache.h}: Make overviews working for contiguous images. </UL> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\Ja�ޡ�html/v3.7.4.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.7.4 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.7.4<BR> <B>Previous Version</B>: <A HREF=v3.7.3.html>v3.7.3</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> Fixed important bug in custom tags handling code.. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> Applied patch from Patrick Welche (all scripts moved in the 'config' and 'm4' directories). <li> 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. <li> port/lfind.c: Added lfind() replacement module. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> 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: <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=922"> http://bugzilla.remotesensing.org/show_bug.cgi?id=922</a> <li> 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. <li> 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 <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=831"> http://bugzilla.remotesensing.org/show_bug.cgi?id=831</a> Remove TIFFFetchExtraSamples() function, use TIFFFetchNormalTag() instead. <li> tif_print.c: Fixed printing of the BYTE and SBYTE arrays. <li> tif_write.c: Do not check the PlanarConfiguration field in the TIFFWriteCheck() function in case of single band images (as per TIFF spec). <li> libtiff/{tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_print.c}: Make FieldOfViewCotangent, MatrixWorldToScreen, MatrixWorldToCamera, ImageFullWidth, ImageFullLength and PrimaryChromaticities tags custom. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> tiffcp.c: Fixed WhitePoint tag copying. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> tiffdump.c: Added support for TIFF_IFD datatype. <li> addtiffo/{tif_overview.c, tif_ovrcache.c, tif_ovrcache.h}: Make overviews working for contiguous images. </UL> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\)l�ب�html/v3.8.0.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.8.0 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.8.0<BR> <B>Previous Version</B>: <A HREF=v3.7.4.html>v3.7.4</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> Read-only support for custom directories (e.g. EXIF directory). <li> Preliminary support for MS MDI format. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> Make the default strip size configurable via the --with-default-strip-size and STRIP_SIZE_DEFAULT options. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> tiffio.h: Added VC_EXTRALEAN definition before including windows.h, to reduce the compile time. <li> tif_jpeg.c: Improve compilation under MinGW. <li> {tif_aux.c, tif_dir.c, tif_dir.h, tif_dirwrite.c, tif_print.c, tif_getimage.c}: Make InkSet, NumberOfInks, DotRange and StoNits tags custom. <li> {tif_aux.c, tif_dir.c, tif_dir.h, tif_print.c}: Make WhitePoint tag custom. <li> tiffio.h: fixed typo that potentially resulted in redefininition of USE_WIN32_FILEIO <li> {tif_dir.c, tif_dir.h, tif_print.c}: Make RichTIFFIPTC, Photoshop and ICCProfile tags custom. <li> libtiff/*, contrib/*: Added 'dual-mode' error handling, enabling newer code to get context indicator in error handler and still remain compatible with older code: Done TIFFError calls everywhere except in tools. <li> tiffinfo.c: Print EXIF directory contents if exist. <li> {tif_dirinfo.c, tif_dirread.c, tif_dir.h, tif_dir.c}: Custom directory read-only support. <li> {tif_aux.c, tif_dirinfo.c, tif_dirread.c, tif_dir.h, tif_dir.c, tif_print.c}: Make YCbCrCoefficients and ReferenceBlackWhite tags custom. <li> tif_dirread.c: One more workaround for broken StripByteCounts tag. Handle the case when StripByteCounts array filled with completely wrong values. <li> tif_dirinfo.c: Release file descriptor in case of failure in the TIFFOpenW() function as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1003"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1003</a> <li> tif_dirinfo.c: Correctly yse bsearch() and lfind() functions as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1008"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1008</a> <li> tif_open.c, tiff.h, tiffdump.c: Incorporate preliminary support for MS MDI format. <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1002"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1002</a> <li> libtiff.def, tiffiop.h, tiffio.h: Made TIFFFreeDirectory public. <li> /tif_dirinfo.c: Make XResolution, YResolution and ResolutionUnit tags modifiable during write process. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=977"> http://bugzilla.remotesensing.org/show_bug.cgi?id=977</a> <li> if_dirread.c: Don't try and split single strips into "0" strips in ChopUpSingleUncompressedStrip. This happens in some degenerate cases (like 1x1 files with stripbytecounts==0 (gtsmall.jp2 embed tiff) <li> tif_fax3.c: changed 'at scanline ...' style warning/errors with incorrect use of tif_row, to 'at line ... of strip/tile ...' style. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> tiffcp.c: Added many error reporting messages; fixed integer overflow as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=789"> http://bugzilla.remotesensing.org/show_bug.cgi?id=789</a> <li> tiffcp.c: Return non-zero status when reading fails. <li> fax2tiff.c: Properly calculate sizes of temporary arrays as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=943"> http://bugzilla.remotesensing.org/show_bug.cgi?id=943</a> <li> fax2tiff.c: Added option '-r' to set RowsPerStrip parameter as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=944"> http://bugzilla.remotesensing.org/show_bug.cgi?id=944</a> <li> tiffdump.c: Fixed typeshift and typemask arrays initialization problem as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=946"> http://bugzilla.remotesensing.org/show_bug.cgi?id=946</a> <li> bmp2tiff.c: Fixed possible integer overflow error as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=965"> http://bugzilla.remotesensing.org/show_bug.cgi?id=965</a> <li> tiffsplit.c: Copy fax related fields over splitted parts as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=983"> http://bugzilla.remotesensing.org/show_bug.cgi?id=983</a> <li> tiffdump.c: Fixed crash when reading malformed tags. <li> tiff2pdf.c: Added missed 'break' statement as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=932"> http://bugzilla.remotesensing.org/show_bug.cgi?id=932</a> </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> contrib/addtiffo/*: Major upgrade by Joris to support subsampled YCbCr images in jpeg compressed TIFF files. </UL> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\6�D�sshtml/v3.8.1.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.8.1 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.8.1<BR> <B>Previous Version</B>: <A HREF=v3.8.0.html>v3.8.0</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> Bug-fix release. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> libtool related stuff updated from the 2.1a branch. <li> Fix with_default_strip_size comparison as reported by Norihiko Murase. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> tif_dirread.c: Fixed error reporting in TIFFFetchAnyArray() function as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1102"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1102</a> <li> tif_jpeg.c, tif_pixarlog.c, tif_fax3.c, tif_zip.c: Properly restore setfield/getfield methods in cleanup functions. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1102"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1102</a> <li> tif_lzw.c, tif_pixarlog.c, tif_zip.c: Use TIFFPredictorCleanup() in codec cleanup methods. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1102"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1102</a> <li> tif_predict.c, tif_predict.h: Added new function TIFFPredictorCleanup() to restore parent decode/encode/field methods. <li> tif_dirread.c: Fixed integer overflow condition in TIFFFetchData() function. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1102"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1102</a> <li> tif_ojpeg.c: Set the ReferenceBlackWhite with the TIFFSetField() method, not directly. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1043"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1043</a> <li> tif_write.c: Small code rearrangement in TIFFWriteScanline() to avoid crash as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1081"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1081</a> <li> tif_dirwrite.c: Properly write TIFFTAG_DOTRANGE tag as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1088"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1088</a> <li> tif_print.c: Properly read TIFFTAG_PAGENUMBER, TIFFTAG_HALFTONEHINTS, TIFFTAG_YCBCRSUBSAMPLING and TIFFTAG_DOTRANGE tags as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1088"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1088</a> <li> tif_tile.c: Fix error reporting in TIFFCheckTile() as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1063"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1063</a> <li> tif_color.c: Avoid overflow in case of wrong input as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1065"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1065</a> <li> tif_dirinfo.c: Use TIFF_NOTYPE instead of 0 when appropriate. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1033"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1033</a> <li> tif_aux.c: Fixed type of temporary variable in _TIFFCheckMalloc() as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=103"> http://bugzilla.remotesensing.org/show_bug.cgi?id=103</a> <li> tif_aux.c: Return static array when fetching default YCbCrCoefficients (another problem, reported a the <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1029"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1029</a> entry). <li> tif_dir.c: Special handling for PageNumber, HalftoneHints, YCbCrSubsampling and DotRange tags as per bugs <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1029"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1029</a> <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1034"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1034</a> <li> tif_dirread.c: Use _TIFFGetExifFieldInfo() instead of _TIFFGetFieldInfo() in TIFFReadEXIFDirectory() call as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1026"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1026</a> <li> tif_dirinfo.c: Change definitions for TIFFTAG_ICCPROFILE, TIFFTAG_PHOTOSHOP, TIFFTAG_RICHTIFFIPTC, TIFFTAG_XMLPACKET: readcount should be uint32 value. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> ppm2tiff.c: Added support for PBM files as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1044"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1044</a> <li> tiff2pdf.c: Functions t2p_sample_rgbaa_to_rgb() and t2p_sample_rgba_to_rgb() was used in place of each other, that was resulted in problems with RGBA images with associated alpha. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1097"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1097</a> <li> tiff2ps.c: Properly scale all the pages when converting multipage TIFF with /width/height/center options set. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1080"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1080</a> <li> tiff2pdf.c: Do not create output file until all option checks will be done. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1072"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1072</a> <li> bmp2tiff.c: Added ability to create multipage TIFFs from the list of input files as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1077"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1077</a> <li> tiffgt.c: Avoid crashing in case of image unsupported by TIFFRGBAImage interface. <li> tiff2pdf.c: Fixed support for non-YCbCr encoded JPEG compressed TIFF files, per submission from Dan Cobra. <li> bmp2tiff, pal2rgb, ppm2tiff, ras2tiff, raw2tiff, sgi2tiff, tiff2bw, tiffcp: Fixed jpeg option processing so -c jpeg:r:50 works properly as per bug: <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1025"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1025</a> </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> </UL> Last updated $Date: 2016-09-25 20:05:45 $. </BODY> </HTML> PK粐\�d|���html/v3.8.2.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.8.2 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.8.2<BR> <B>Previous Version</B>: <A HREF=v3.8.1.html>v3.8.1</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> Bug-fix release. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> tools/Makefile.am: Use runtime paths linker flags when rpath option enabled. <li> Makefiles improvements as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1128"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1128</a> <li> Fixed win32 I/O functions usage as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1127"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1127</a> </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> tif_strip.c: Take subsampling in account when calculating TIFFScanlineSize(). <li> 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 <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1120"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1120</a> <li> tif_jpeg.c: Do not cleanup codec state in TIFFInitJPEG(). As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1119"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1119</a> <li> tif_dir.c: Use double type instead of dblparam_t. <li> 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. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> tiffcp.c: Do not set RowsPerStrip bigger than image length. <li> fax2tiff.c: Fixed wrong TIFFerror() invocations as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1125"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1125</a> <li> fax2ps.c: Fixed reading the input stream from stdin as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1124"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1124</a> <li> raw2tiff.c: Do not set RowsPerStrip larger than ImageLength. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1110"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1110</a> </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> </UL> Last updated $Date: 2016-09-25 20:05:46 $. </BODY> </HTML> PK粐\�a+��-�-html/v3.9.0beta.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.9.0beta </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.9.0beta<BR> <B>Previous Version</B>: <A HREF=v3.8.2.html>v3.8.2</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> New <b>tiffcrop</b> utility contributed by Richard Nolde. <b>tiffcrop</b> does the same as <b>tiffcp</b>, but also can crop, extract, rotate and mirror images. <li> tif_jbig.c: Added support for JBIG compression scheme (34661 code), contributed by Lee Howard. <li> Totally new implementation of OJPEG module from Joris Van Damme. No need to patch libjpeg anymore. Many OJPEG files should be supported now that was not supported previously. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> tif_config.wince.h, tiffconf.wince.h, tif_wince.c: WinCE-specific compatibility stuff from Mateusz Loskot. <li> Rename config.h.vc and tif_config.h.vc to config.vc.h and tif_config.vc.h for easier identification by folks using an IDE. <li> configure, configure.ac: OJPEG support enabled by default (i.e., whe the conformant JPEG support enabled). <li> README.vms, Makefile.am, configure.com, libtiff/{Makefile.am, tif_config.h-vms, tif_stream.cxx, tif_vms.c, tiffconf.h-vms}: Added support for OpenVMS by Alexey Chupahin. <li> nmake.opt: use /EHsc for VS2005 compatibility. Also define _CRT_SECURE_NO_DEPRECATE to avoid noise on VS2005. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> tif_dirinfo.c (_TIFFFindFieldInfo): Don't attempt to bsearch() on a NULL fieldinfo list. (_TIFFFindFieldInfoByName): Don't attempt to lfind() on a NULL fieldinfo list. <li> tif_jpeg.c: Changed JPEGInitializeLibJPEG() so that it will convert from decompressor to compressor or compress to decompress if required by the force arguments. This works around a problem in where the JPEGFixupTestSubsampling() may cause a decompressor to be setup on a directory when later a compressor is required with the force flag set. Occurs with the addtiffo program for instance. <li> tif_dirwrite.c: Fixed swapping of byte arrays stored in-place in tag offsets as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1363"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1363</a> <li> tif_getimage.c: workaround for 'Fractional scanline' error reading OJPEG images with rowsperstrip that is not a multiple of vertical subsampling factor. This bug is mentioned in <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1390"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1390</a> and <a href="http://www.asmail.be/msg0054766825.html"> http://www.asmail.be/msg0054766825.html</a> <li> tif_dirread.c: Added special function to handle SubjectDistance EXIF tag as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1362"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1362</a> <li> tif_dirread.c, tif_read.c: Type of the byte counters changed from tsize_t to uint32 to be able to work with data arrays larger than 2GB. Fixes bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=890"> http://bugzilla.remotesensing.org/show_bug.cgi?id=89</a> Idea submitted by Matt Hancher. <li> tif_dir.c: Workaround for incorrect TIFFs with ExtraSamples == 999 produced by Corel Draw. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1490"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1490</a> <li> tif_write.c: TIFFAppendToStrip() - clear sorted flag if we move a strip. <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1359"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1359</a> <li> tif_fax3.c: Save the state of printdir codec dependent method. <li> tif_jpeg.c: Save the state of printdir codec dependent method as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1273"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1273</a> <li> tif_win32.c: Fixed problem with offset value manipulation as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1322"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1322</a> <li> tif_fax3.c, tif_next.c, tif_pixarlog.c: Fixed multiple vulnerabilities, as per Gentoo bug (): <a href="http://bugs.gentoo.org/show_bug.cgi?id=142383"> http://bugs.gentoo.org/show_bug.cgi?id=142383</a> <li> tif_lzw.c, tif_zip.c: Fixed problems with mixing encoding and decoding on the same read-write TIFF handle. The LZW code can now maintain encode and decode state at the same time. The ZIP code will switch back and forth as needed. <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=757"> http://bugzilla.remotesensing.org/show_bug.cgi?id=757</a> <li> tif_msdos.c: Avoid handle leak for failed opens. c/o Thierry Pierron <li> tif_dirwrite.c: take care not to flush out buffer of strip/tile data in _TIFFWriteDirectory if TIFF_BEENWRITING not set. Relates to bug report by Peng Gao with black strip at bottom of images. <li> tif_dirwrite.c: make sure to use uint32 for wordcount in TIFFWriteNormanTag if writecount is VARIABLE2 for ASCII fields. It already seems to have been done for other field types. Needed for "tiffset" on files with geotiff ascii text. <li> tif_dirinfo.c: Added missed EXIF tag ColorSpace (40961). <li> tif_dirread.c: Move IFD fetching code in the separate function TIFFFetchDirectory() avoiding code duplication in TIFFReadDirectory() and TIFFReadCustomDirectory(). <li>tif_readdir.c: Added case in EstimateStripByteCounts() for tiled files. Modified TIFFReadDirectory() to not invoke EstimateStripByteCounts() for case where entry 0 and 1 are unequal but one of them is zero. <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1204"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1204</a> <li> tif_open.c, tif_dirread.c, tiffiop.h: Move IFD looping checking code in the separate function TIFFCheckDirOffset(). <li> tif_aux.c: Added _TIFFCheckRealloc() function. <li> tif_fax3.c: Fixed problems in fax decoder as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1194"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1194</a> <li> tif_jbig.c: Added support for JBIG compression scheme (34661 code) contributed by Lee Howard. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=896"> http://bugzilla.remotesensing.org/show_bug.cgi?id=896</a> <li> tif_getimage.c: Added support for planarconfig separate non-subsampled YCbCr (i.e. separate YCbCr with subsampling [1,1]). <li> tif_getimage.c: Revision of all RGB(A) put routines: <ul> <li> Conversion of unassociated alpha to associated alpha now done with more performant LUT, and calculation more correct. <li> Conversion of 16bit data to 8bit data now done with more performant LUT, and calculation more correct <li> Bugfix of handling of 16bit RGB with unassociated alpha </ul> <li> tif_ojpeg.c: totally new implementation <li> tif_getimage.c: removed TIFFTAG_JPEGCOLORMODE handling of OJPEG images in favor of tif_getimage.c native handling of YCbCr and desubsampling. <li> tif_jpeg.c: JPEGVSetField() so that altering the photometric interpretation causes the "upsampled" flag to be recomputed. Fixes peculiar bug where photometric flag had to be set before jpegcolormode flag. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> tiff2ps.c: Added support 16-bit images as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1566"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1566</a>. Patch from William Bader. <li> tiff2pdf.c: Fix for TIFFTAG_JPEGTABLES tag fetching and significant upgrade of the whole utility as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1560"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1560</a>. Now we don't need tiffiop.h in tiff2pdf anymore and will open output PDF file using TIFFClientOpen() machinery as it is implemented by Leon Bottou. <li> tiffcrop.c: New tiffcrop utility contributed by Richard Nolde. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1383"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1383</a> <li> tiff2pdf.c: Do not assume inches when the resolution units do not specified. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1366"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1366</a> <li> tiffset.c: Properly handle tags with TIFF_VARIABLE writecount. As per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1350"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1350</a> <li> tif2rgba.c: This utility does not work properly on big-endian architectures. It was fixed including the bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1149"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1149</a> <li> tiff2pdf.c: Fix handling of -q values. <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=587"> http://bugzilla.remotesensing.org/show_bug.cgi?id=587</a> <li> tiffcmp.c: Fixed floating point comparison logic as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1191"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1191</a> <li> tiff2pdf.c: Fixed buffer overflow condition in t2p_write_pdf_string() as per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1196"> http://bugzilla.remotesensing.org/show_bug.cgi?id=1196</a> </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> contrib/addtiffo/tif_overview.c: Fix problems with odd sized output blocks in TIFF_DownSample_Subsampled() (bug 1542). <li> contrib/dbs/xtiff/xtiff.c: Make xtiff utility compilable. Though it is still far from the state of being working and useful. </UL> Last updated $Date: 2016-09-25 20:05:46 $. </BODY> </HTML> PK粐\G�/sshtml/v3.9.1.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.9.1 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.9.1<BR> <B>Previous Version</B>: <A HREF=v3.9.1.html>v3.9.1</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> This is a bug-fix release for several bugs (two of which are dire) which were discovered in the 3.9.0 release. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> Several defines were missing from tif_config.vc.h which are necessary to compile the library using MSVC. <li> 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. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> 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. <li> 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 </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> None </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> None </UL> Last updated $Date: 2016-09-25 20:05:47 $. </BODY> </HTML> PK粐\��H�> > html/v3.9.2.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.9.2 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.9.2<BR> <B>Previous Version</B>: <A HREF=v3.9.1.html>v3.9.1</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> Fixes a number of bugs present in the 3.9.1 release. <li> OJPEG support updated to work with IJG JPEG 7 release. <li> Tiffcrop validated for most TIFF storage subformats and sample depths. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> x86_64 now uses the same default fill order as i386. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> Writing tags with an array value of type TIFF_DOUBLE now returns correct error status. The TIFFTAG_SMINSAMPLEVALUE and TIFFTAG_SMAXSAMPLEVALUE tags failed to write without this fix. <li> OJPEG decoder now works with IJG JPEG 7. Resolves "Bug 2090 - OJPEG crash with libjpeg v7". http://bugzilla.maptools.org/show_bug.cgi?id=2090 <li> Eliminate most GCC "dereferencing type-punned pointer" warnings. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> New tiffcrop from Richard Nolde. Major updates to add significant functionality for reading and writing tile based images with bit depths not a multiple of 8 which cannot be handled by tiffcp. <li> Allow building tools with GCC using the "-Wformat -Werror=format-security" flags. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> None </UL> Last updated $Date: 2016-09-25 20:05:47 $. </BODY> </HTML> PK粐\@+�S�)�)html/v4.0.0.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v4.0.0 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v4.0.0<BR> <B>Previous Version</B>: <A HREF=v3.9.5.html>v3.9.5</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> ftp://download.osgeo.org/libtiff</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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. Please consult the ChangeLog file in the source package for full change details. The following information is located here: <UL> <LI><A HREF="#hightlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <P><A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A></P> BigTIFF support changes: <UL> <LI>The options parameter in the TIFFOpen and TIFFClientOpen funcs has been extended. When creating new files, you can add option '4' to specify you want to create a ClassicTIFF file, though that is the default and the option is not strictly necessary. (As such, old calling code will continue to function and create ClassicTIFF files.) Or you can add option '8' to specify you want to create a BigTIFF file instead. This new option is also reflected in some of the tools we already upgraded. For instance, you can use the -8 option on tiffcp to have tiffcp produce BigTIFF files instead of the default ClassicTIFF. (Whilst on additional option is provided for version selection when creating new files, no such option is necessary when reading TIFF files. LibTiff reads ClassicTIFF and BigTIFF both, and the application does not need to be aware which TIFF version an opened file is.) <LI>Although the tag count in BigTIFF is 64bit, we restricted the count in the implementation to a much more reasonable size. This is necessary in current implementation, because all tag data gets read automatically in the IFD reading stage, so if there's half a dozen private tags with multiple gigabytes of data that causes considerable overhead even if the application level is never interested in these tags. Our choice to ignore tags with data longer then a certain sanity value is much needed as things stand. We also recommend to step away from writing tiles that are 8 kilobyte in their uncompressed form, or writing single-line strips, in really big files, resulting in mega's of tiles or strips. It's much more efficient to choose bigger tile or strip sizes, up to several megabyte if needed, and have a few kilo of tiles or strips instead. <LI>Although it's rare, some application code does directly access file offsets. Some of these are automatically upgraded because they used the toff_t type, others need to be aware that the datatype changed and need to start using toff_t or uint64. This impacts access to tags like the EXIF IFD tag, for example, or the SubIfds tag, or to StripOffsets or TileOffsets, the return type of functions like TIFFCurrentDirOffset, and a parameter type to functions like TIFFSetSubDirectory. <LI>Although it's rare, some application code does use structures like TIFFHeader or TIFFDirEntry that used to be an exact binary representation of TIFF structures. These need to change. The old TIFFHeader structure is replaced by the new TIFFHeaderClassic, TIFFHeaderBig, and TIFFHeaderCommon structures that are an exact binary representation of the ClassicTIFF and BigTIFF header, and of the part that is common to both. There is no new equivalent for the old TIFFDirEntry structure (or more precisely, there is still a TIFFDirEntry structure, but it is changed, moved to library-private definition, and no longer an exact binary representation of the tag structure of either TIFF version). <LI>Sizer functions, like TIFFTileSize or TIFFScanlineSize and the like, return a tmsize_t value (tmsize_t is defined as int32 on 32bit machines, and int64 on 64bit machines, and as such it is meant to represent signed memory sizes). This is because we figure 98% of the calling code uses the return value as sizes in allocations and the like. So, any overflow that is theoretically possible with BigTIFF when LibTiff is running on a 32bit system, is best detected inside the sizer functions and it is best to return a type that makes sense as a memory size. If your calling code is the exception and is interested in actual file size, you best use the newer TIFFTileSize64 or TIFFScanlineSize64 function that returns an uint64 type. <LI>These TIFF tags require a 64-bit type as an argument in libtiff 4.0.0: <UL> <LI> TIFFTAG_FREEBYTECOUNTS <LI> TIFFTAG_FREEOFFSETS <LI> TIFFTAG_STRIPBYTECOUNTS <LI> TIFFTAG_STRIPOFFSETS <LI> TIFFTAG_TILEBYTECOUNTS <LI> TIFFTAG_TILEOFFSETS </UL> </UL> Other important backward incompatible changes in the public API: <UL> <LI> TIFFRewriteField() renamed into _TIFFRewriteField() and moved out from the public interface (from tiffio.h to tiffiop.h). Type of its 'count' parameter changed from uint32 to tmsize_t. <LI> TIFFMergeFieldInfo() returns non-void result now. It returns 0 if successful and -1 if failed. Though this is now obsoleted function and should not be used in new programs. Use the new tag extension scheme instead. <LI> TIFFFieldWithTag() and TIFFFieldWithName() functions now return pointer to TIFFField constant object instead of TIFFFieldInfo. <LI> TIFFReassignTagToIgnore() function and TIFFIgnoreSense enumeration have been removed. They was unused and never been used properly. Should be unneeded for high-level applications. <LI> TIFFTagValue structure removed from the public tiffio.h to private tif_dir.h and not accessible anymore. It should be unneeded for high-level applications. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <P><A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A></P> <UL> <LI>Updated autotools: Autoconf 2.68, Automake 1.11.1, libtool 2.4. <LI>Enabled support for Automake silent build rules (--enable-silent-rules or 'make V=0') <LI>Enabled support for Automake colorized and parallel tests. <LI>Added detection of 64-bit integer types since libtiff 4.0 requires use of 64-bit signed and unsigned integer types. <LI>Libtiff now provides a more comprehensive test suite with over 72 tests, which may be executed on Unix-like systems, or under Microsoft Windows using MinGW/MSYS or Cygwin. <LI>--disable-lzma configure option to disable use of liblzma. <LI>--enable-defer-strile-load configure option to enable experimental deferred strip/tile offset/size loading. May cause some extremely sophisticated uses of libtiff to fail. <LI>--enable-chunky-strip-read configure option to enable experimental enable reading large strips in chunks in TIFFReadScanline(). <LI>Now always uses WIN32 native I/O functions for Microsoft Windows except for under Cygwin. <LI>Now provides a pkg-config support file (libtiff-4.pc). </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <P><A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A></P> <UL> <LI>Patches/fixes made to stable libtiff (v3.9.X) are also applied to 4.0.0. There are too many to list here. See the distribution ChangeLog for a detailed change list. <LI>There is considerable change in some files like tif_dirread and tif_dirwrite. These changes don't impact backwards compatibility, they are mostly a clean rewrite that does allow BigTIFF support as well as somewhat more robust reading of the unexpected already and will also serve future API extension but does not impact current API or functionality in a negative way that you need to know about. <LI>Although there is still a functional definition for types like toff_t (file offset), tstrip_t (strip index number), etc, we recommend against using these in newer code. We have learned that it is next to impossible to use these consistently and make real abstraction of the binary format of these types. Instead, at a certain level we always end up doing casts anyway, and taking the exact binary format into account, so these types are nothing but dangerously misleading and obfuscating. You do not need to update calling code that uses them, as 99.9% of such code will continue to work. But we recommend against using them in newer calling code, and we started replacing them with binary clear types like uint16, uint32 and such in the library. <LI>We do use and will continue to use one functional type that is an exception to the above rule, being tmsize_t. This is a signed memory size type, i.e. it is int32 on 32bit machines, or int64 on 64bit machines. <LI>Optionally support LZMA compression via TIFF tag 34925. Tiffcp supports compression levels similar to "-c lzma:p1" or "-c zip:p9 for setting the LZMA compression parameters. <LI>Optionally defer the load of strip/tile offset and size tags for optimized scanning of directories. Enabled with the --enable-defer-strile-load configure option (DEFER_STRILE_LOAD #define in tif_config.h). <LI>Optionally enable experimental support for reading big strips in chunks. Enabled with the --enable-chunky-strip-read configure option. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <P><A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A></P> <UL> <LI>tiffset: add -d and -sd switches to allow operation on a particular directory, not just the first. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <P><A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A></P> <UL> </UL> Last updated $Date: 2016-09-25 20:05:47 $. </BODY> </HTML> PK粐\"��0��html/v4.0.1.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v4.0.1 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v4.0.1<BR> <B>Previous Version</B>: <A HREF=v4.0.0.html>v4.0.0</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#highlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> None </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> --enable-ld-version-script: New configure option to enable shared library symbol versioning on ELF-based systems (e.g. Linux and FreeBSD) which use the GNU linker. This allows multiple major versions of libtiff to be loaded simultaneously into the same application or library without conflict, as long as all libtiffs involved are built with versioned symbols. This option is not enabled by default. <li> Added libtiff private dependency on -llzma for pkg-config. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> libtiff/tif_dir.c, libtiff/tif_dirread.c: Extra caution around assumption tag fetching is always successful. <li> libtiff/tif_jpeg.c: Extra caution for case where sp is NULL. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> None </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> None </UL> Last updated $Date: 2016-09-25 20:05:47 $. </BODY> </HTML> PK粐\N,Z���html/v4.0.2.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v4.0.2 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v4.0.2<BR> <B>Previous Version</B>: <A HREF=v4.0.1.html>v4.0.1</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#highlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> None </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> None </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> tif_getimage.c: added support for _SEPARATED CMYK images. <li> tif_getimage.c: Added support for greyscale + alpha. <li> Added TIFFCreateCustomDirectory() and TIFFCreateEXIFDirectory() functions. <li> tif_print.c: Lots of fixes around printing corrupt or hostile input. <li> Improve handling of corrupt ycbcrsubsampling values. <li> tif_unix.c: use strerror to get meaningful error messages. <li> tif_jpeg.c: fix serious bugs in JPEGDecodeRaw(). <li> tif_jpeg.c: Fix size overflow (zdi-can-1221,CVE-2012-1173). </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> tiff2pdf: Defend against integer overflows while calculating required buffer sizes (CVE-2012-2113). </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> None </UL> Last updated $Date: 2016-09-25 20:05:47 $. </BODY> </HTML> PK粐\�&�~ ~ html/v4.0.3.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v4.0.3 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v4.0.3<BR> <B>Previous Version</B>: <A HREF=v4.0.2.html>v4.0.2</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#highlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> None </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> Updated to use Automake 1.12.4. Avoids security problem with 'make distcheck' (CVE-2012-3386). </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> Various memory buffer access fixes. <li> Fix handling when writing RGBA jpeg compressed imagery (<A HREF="http://trac.osgeo.org/gdal/ticket/4732">http://trac.osgeo.org/gdal/ticket/4732</A>). <li> Fix to work properly with IJG JPEG 7+. <li> New functions TIFFFieldTag(), TIFFFieldName(), TIFFFieldDataType(), TIFFFieldPassCount(), TIFFFieldReadCount(), TIFFFieldWriteCount() to use as external accessors for the opaque type TIFFField. <li> Fix bug rewriting image tiles in a compressed file (<A HREF="http://trac.osgeo.org/gdal/ticket/4771">http://trac.osgeo.org/gdal/ticket/4771</A>). <li> Add TIFF/FX tag support in libtiff. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> tiff2pdf: Fail when TIFFSetDirectory() fails. This prevents core dumps or perhaps even arbitrary code execution when processing a corrupt input file (CVE-2012-3401). <li> tiff2pdf: Fix two places where t2p_error didn't get set after a malloc failure. No crash risk AFAICS, but the program might not report exit code 1 as desired. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> None </UL> Last updated $Date: 2016-09-25 20:05:47 $. </BODY> </HTML> PK粐\������html/v4.0.4.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v4.0.4 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v4.0.4<BR> <B>Previous Version</B>: <A HREF=v4.0.4beta.html>v4.0.4beta</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#highlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> None </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI> configure.ac / configure <UL> <LI> Bugzilla Bug #2405: Correct shell equality operator. <LI> Bugzilla Bug #2498: Adds an option to select the file I/O style on Windows hosts. </UL> </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI> tif_dir.c: <UL> <LI> TIFFNumberOfDirectories: Coverity 1134470 "Logically dead code" </UL> <LI> tif_dirread.c: <UL> <LI> TIFFReadDirEntryDoubleArray: Coverity 298626 "Logically dead code". <LI> TIFFReadDirEntryFloatArray: Coverity 298627 "Logically dead code". <LI> TIFFReadDirEntryIfd8Array: Coverity 298628 "Logically dead code". <LI> TIFFReadDirEntrySlong8Array: Coverity 298629 "Logically dead code" </UL> <LI> tif_dirwrite.c <UL> <LI> _TIFFRewriteField: Coverity 1024310 "Resource leak". </UL> <LI> tif_jpeg.c <UL> <LI> JPEGCleanup: Coverity 298624 "Dereference before null check". <LI> JPEGDecode: Coverity 602597 "Operands don't affect result". </UL> <LI> tif_getimage.c <UL> <LI> Bugzilla Bug #2409: Correct reading of certain tiled TIFFs. </UL> <LI> tif_luv.c <UL> <LI> LogLuvDecodeStrip: Coverity 991239 "Division or modulo by zero". <LI> LogLuvDecodeTile: Coverity 991227 "Division or modulo by zero". <LI> LogLuvEncodeStrip: Coverity 991240 "Division or modulo by zero". <LI> LogLuvEncodeTile: Coverity 991241 "Division or modulo by zero". </UL> <LI> tif_lzw.c <UL> <LI> Decode files that contain consecutive CODE_CLEAR codes. </UL> <LI> tif_ojpeg.c <UL> <LI> OJPEGReadBufferFill: Coverity 603400 "Missing break in switch". <LI> OJPEGReadHeaderInfoSecStreamDht: Coverity 601720 "Resource leak". </UL> <LI> tif_read.c <UL> <LI> TIFFStartTile: Coverity 715973 and 715974 "Division or modulo by zero". </UL> <LI> tif_unix.c <UL> <LI> Bugzilla Bug #2510: Fix several harmless but still annoying warnings. </UL> <LI> tif_write <UL> <LI> TIFFWriteEncodedStrip: Coverity 715975 "Division or modulo by zero". <LI> TIFFWriteEncodedTile: Coverity 715976 and 715977 "Division or modulo by zero". <LI> TIFFWriteRawStrip: Coverity 715978 "Division or modulo by zero". <LI> TIFFWriteScanline: Coverity 715979 "Division or modulo by zero". </UL> </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI> bmp2tiff <UL> <LI> Coverity 1024225 "Untrusted value as argument". <LI> Coverity 1024678 "Unchecked return value from library". <LI> Coverity 1024679 "Unchecked return value from library". <LI> Coverity 1214160 "Ignoring number of bytes read". </UL> <LI> gif2tiff <UL> <LI> Coverity 1024222 "Untrusted value as argument". <LI> Coverity 1024890 "Ignoring number of bytes read". <LI> Coverity 1024891 "Ignoring number of bytes read". <LI> Coverity 1024892 "Ignoring number of bytes read". <LI> Coverity 1024893 "Ignoring number of bytes read". <LI> Coverity 1024894 "Ignoring number of bytes read". </UL> <LI> ras2tiff <UL> <LI> Corrected Sun Raster header definition to be safe for 64-bit systems. Add some header validations. Fixes many (unspecified) Coverity issues. <LI> Coverity 1024223 "Untrusted value as argument". <LI> Coverity 1301206: "Integer handling issues (BAD_SHIFT)". </UL> <LI> raw2tiff <UL> <LI> Coverity 1024887 "Unchecked return value from library". <LI> Coverity 1024888 "Unchecked return value from library". <LI> Coverity 1024889 "Unchecked return value from library". <LI> Coverity 1214162 "Ignoring number of bytes read". </UL> <LI> tiff2pdf <UL> <LI> Bugzilla Bug #2078. Suppress initial output of the header. <LI> Bugzilla Bug #2150. Change ColorTransform from "0" to "1". <LI> Take care in using the return value from snprintf(). <LI> Coverity 1024181 "Structurally dead code". <LI> Coverity 1024181 "Structurally dead code". <LI> Coverity 1227690 "Unused value". <LI> Coverity 298621 "Resource leak". </UL> <LI> tiff2ps <UL> <LI> Correct sizing and scaling problems with output document. </UL> <LI> tiffcp <UL> <LI> Coverity 1024306, 1024307, 1024308, 1024309 "Resource leak". </UL> <LI> tiffcrop <UL> <LI> Correctly copy the compression tag from the source TIFF. <LI> Coverity 1024545 "Division or modulo by zero". <LI> Coverity 1024586 "Logically dead code". <LI> Coverity 1024796 "Nesting level does not match indentation". <LI> Coverity 1024797 "Nesting level does not match indentation". <LI> Coverity 1294542 "Logical vs. bitwise operator". <LI> Coverity 1299740 "Out-of-bounds write". <LI> Coverity 1299741 "Dereference before null check". </UL> <LI> tiffdither <UL> <LI>Check memory allocations for failure. Also check multiplication overflow. (Fixes #2501, CVE-2014-8128) </UL> <LI> tiffgt.c <UL> <LI> Bugzilla Bug #2401. Appropriately call glFlush(). </UL> <LI> tiffmedian <UL> <LI> Coverity 1024386 "Out-of-bounds read". <LI> Coverity 1024386 "Out-of-bounds read". <LI> Coverity 1024795 "Nesting level does not match indentation". <LI> Coverity 1024795 "Nesting level does not match indentation". </UL> <LI> tiffsplit <UL> <LI> Coverity 1024304 "Resource leak". <LI> Coverity 1024305 "Resource leak". </UL> </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <LI> addtiffo <UL> <LI> Check buffer size calculation for overflow. <LI> Coverity 298615 "Resource leak". <LI> Coverity 1024649 "Unintended sign extension". </UL> <LI> iptcutil <UL> <LI> Coverity 1024468 "Infinite loop". <LI> Coverity 1024727 "Truncated stdio return value". <LI> Coverity 1214240 "Untrusted loop bound". </UL> </UL> Last updated $Date: 2016-09-25 20:05:47 $. </BODY> </HTML> PK粐\�uc�3�3html/v4.0.4beta.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v4.0.4beta </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v4.0.4beta<BR> <B>Previous Version</B>: <A HREF=v4.0.3.html>v4.0.3</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#highlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> None </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <li> Updated to use Automake 1.15 and Libtool 2.4.5 </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <li> TIFFCheckDirOffset(): avoid uint16 overflow when reading more than 65535 directories, and effectively error out when eaching that limit. <li> TIFFNumberOfDirectories(): generate error in case of directory count overflow. <li> TIFFAdvanceDirectory(): If nextdir is found to be defective, then set it to zero before returning error in order to terminate processing of truncated TIFF. <li> JPEG-in-TIFF: recognize SOF2, SOF9 and SOF10 markers to avoid emitting a warning. Fix for compatibility with mozjpeg library. Note: the default settings of mozjpeg will produce progressive scans, which is forbidden by the TechNote. <li> JPEG-in-TIFF: Fix regression introduced in 3.9.3/4.0.0 that caused all tiles/strips to include quantization tables even when the jpegtablesmode had the JPEGTABLESMODE_QUANT bit set. Also add explicit removal of Huffman tables when jpegtablesmode has the JPEGTABLESMODE_HUFF bit set, which avoids Huffman tables to be emitted in the first tile/strip (only useful in update scenarios. create-only was fine) <li> JPEG-in-TIFF: fix segfault in JPEGFixupTagsSubsampling() on corrupted image where tif->tif_dir.td_stripoffset == NULL. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2471">#2471</a>) <li> NeXT codec: add new tests to check that we don't read outside of the compressed input stream buffer. <li> NeXT codec: check that BitsPerSample = 2. Fixes <a href="http://bugzilla.maptools.org/show_bug.cgi?id=2487">#2487</a> (CVE-2014-8129) <li> NeXT codec: in the "run mode", use tilewidth for tiled images instead of imagewidth to avoid crash <li> tif_getimage.c: in OJPEG case, fix checks on strile width/height in the putcontig8bitYCbCr42tile, putcontig8bitYCbCr41tile and putcontig8bitYCbCr21tile cases. <li> in TIFFDefaultDirectory(), reset any already existing extented tags installed by user code through the extender mechaninm before calling the extender callback (GDAL #5054) <li> Fix warnings about unused parameters. <li> Fix various typos in comments found by Debian lintian tool (GDAL #5756) <li> tif_getimage.c: avoid divide by zero on invalid YCbCr subsampling. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2235">#2235</a>) <li> tif_dirread.c: In EstimateStripByteCounts(), check return code of _TIFFFillStriles(). This solves crashing bug on corrupted images generated by afl. <li>tif_read.c: fix several invalid comparisons of a uint64 value with <= 0 by casting it to int64 first. This solves crashing bug on corrupted images generated by afl. <li>TIFFSetField(): refuse to set negative values for TIFFTAG_XRESOLUTION and TIFFTAG_YRESOLUTION that cause asserts when writing the directory <li>TIFFReadDirectory(): refuse to read ColorMap or TransferFunction if BitsPerSample has not yet been read, otherwise reading it later will cause user code to crash if BitsPerSample > 1 <li> TIFFRGBAImageOK(): return FALSE if LOGLUV with SamplesPerPixel != 3, or if CIELAB with SamplesPerPixel != 3 or BitsPerSample != 8 <li> tif_config.vc.h: no longer use "#define snprintf _snprintf" with Visual Studio 2015 aka VC 14 aka MSVC 1900 <li> LZW codec: prevent potential null dereference of sp->dec_codetab in LZWPreDecode (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2459">#2459</a>) <li> TIFFReadBufferSetup(): avoid passing -1 size to TIFFmalloc() if passed user buffer size is 0 (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2459">#2459</a>) <li> TIFFReadDirEntryOutputErr(): Incorrect count for tag should be a warning rather than an error since errors terminate processing. <li> tif_dirinfo.c (TIFFField) : Fix data type for TIFFTAG_GLOBALPARAMETERSIFD tag. <li> Add definitions for TIFF/EP CFARepeatPatternDim and CFAPattern tags (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2457">#2457</a>) <li> tif_codec.c, tif_dirinfo.c: Enlarge some fixed-size buffers that weren't large enough, and eliminate substantially all uses of sprintf(buf, ...) in favor of using snprintf(buf, sizeof(buf), ...) <li> configure.ac: Improve pkg-config static linking by adding -lm to Libs.private when needed. <li> tif_write.c: tmsize_t related casting warning fixed for 64bit linux. <li> tif_read.c: uint64/tmsize_t change for MSVC warnings. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2427">#2427</a>) <li> Fix TIFFPrintDirectory's handling of field_passcount fields: it had the TIFF_VARIABLE and TIFF_VARIABLE2 cases backwards. <li> PixarLog codec: Improve previous patch for CVE-2012-4447 (to enlarge tbuf for possible partial stride at end) so that overflow in the integer addition is detected. <li>tif_{unix,vms,win32}.c (_TIFFmalloc): ANSI C does not require malloc() to return NULL pointer if requested allocation size is zero. Assure that _TIFFmalloc does. <li>tif_zip.c: Avoid crash on NULL error messages. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <li> tiff2pdf: Fis various crashes and memory buffer access errors (oCERT-2014-013). <li> tiff2pdf: fix buffer overflow on some YCbCr JPEG compressed images. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2445">#2445</a>) <li> tiff2pdf: fix buffer overflow on YCbCr JPEG compressed image. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2443">#2443</a>) <li> tiff2pdf: check return code of TIFFGetField() when reading TIFFTAG_SAMPLESPERPIXEL <li> tiff2pdf: fix crash due to invalid tile count. <li> tiff2pdf: Detect invalid settings of BitsPerSample/SamplesPerPixel for CIELAB / ITULAB <li> tiff2pdf: Assure that memory size calculations for _TIFFmalloc() do not overflow the range of tmsize_t. <li> tiff2pdf: Avoid crash when TIFFTAG_TRANSFERFUNCTION tag returns one channel, with the other two channels set to NULL. <li> tiff2pdf: close PDF file. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2479">#2479</a>) <li> tiff2pdf: Preserve input file directory order when pages are tagged with the same page number. <li> tiff2pdf.c: terminate after failure of allocating ycbcr buffer (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2449">#2449</a> CVE-2013-4232) <li> tiff2pdf: Rewrite JPEG marker parsing in t2p_process_jpeg_strip to be at least marginally competent. The approach is still fundamentally flawed, but at least now it won't stomp all over memory when given bogus input. Fixes CVE-2013-1960. <li> tiffdump: Guard against arithmetic overflow when calculating allocation buffer sizes. <li> tiffdump: fix crash due to overflow of entry count. <li> tiffdump: Fix double-free bug. <li> tiffdump: detect cycle in TIFF directory chaining. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2463">#2463</a>) <li> tiffdump: avoid passing a NULL pointer to read() if seek() failed before. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2459">#2459</a>) <li> tiff2bw: when Photometric=RGB, the utility only works if SamplesPerPixel = 3. Enforce that. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2485">#2485</a>, CVE-2014-8127) <li> pal2rgb, thumbnail: fix crash by disabling TIFFTAG_INKNAMES copying. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2484">#2484</a>, CVE-2014-8127) <li> thumbnail: fix out-of-buffer write. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2489">#2489</a>, CVE-2014-8128) <li> thumbnail, tiffcmp: only read/write TIFFTAG_GROUP3OPTIONS or TIFFTAG_GROUP4OPTIONS if compression is COMPRESSION_CCITTFAX3 or COMPRESSION_CCITTFAX4. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2493">#2493</a>, CVE-2014-8128) <li> tiffcp: fix crash when converting YCbCr JPEG-compressed to none. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2480">#2480</a>) <li> bmp2tiff: fix crash due to int overflow related to input BMP dimensions <li> tiffcrop: fix crash due to invalid TileWidth/TileHeight <li> tiffcrop: fix segfault if bad value passed to -Z option ( <a href="http://bugzilla.maptools.org/show_bug.cgi?id=2459">#2459</a>) and add missing va_end in dump_info <li> thumbnail, tiffcrop: "fix" heap read over-run found with Valgrind and Address Sanitizer on test suite <li> fax2ps: check malloc()/realloc() result. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2470">#2470</a>) <li> gif2tiff: apply patch for CVE-2013-4243. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2451">#2451</a>) <li> gif2tiff: fix possible OOB write. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2452">#2452</a>, CVE-2013-4244) <li> gif2tiff: Be more careful about corrupt or hostile input files (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2450">#2450</a>, CVE-2013-4231) <li> tiff2rgba: fix usage message in that zip was wrongly described <li> tiffinfo: Default various values fetched with TIFFGetField() to avoid being uninitialized. <li> tiff2ps: Fix bug in auto rotate option code. <li> ppm2tiff: avoid zero size buffer vulnerability (CVE-2012-4564). check the linebytes calculation too, get the max() calculation straight, avoid redundant error messages, check for malloc failure. <li> tiffset: now supports a -u option to unset a tag. (<a href="http://bugzilla.maptools.org/show_bug.cgi?id=2419">#2419</a>) <li> Fix warnings about unused parameters. <li> rgb2ycbcr, tiff2bw, tiff2pdf, tiff2ps, tiffcrop, tiffdither : Enlarge some fixed-size buffers that weren't large enough, and eliminate substantially all uses of sprintf(buf, ...) in favor of using snprintf(buf, sizeof(buf), ...), so as to protect against overflow of fixed-size buffers. This responds in particular to CVE-2013-1961 concerning overflow in tiff2pdf.c's t2p_write_pdf_page(). <li>html/man/tiff2ps.1.html, html/man/tiffcp.1.html, html/man/tiffdither.1.html, man/tiff2ps.1, man/tiffcp.1, man/tiffdither.1, tools/tiff2ps.c, tools/tiffcp.c, tools/tiffdither.c: Sync tool usage printouts and man pages with reality </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <li> Fix warnings about variables set but not used. <li> contrib/dbs/xtiff/xtiff.c: Enlarge some fixed-size buffers that weren't large enough, and eliminate substantially all uses of sprintf(buf, ...) in favor of using snprintf(buf, sizeof(buf), ...), so as to protect against overflow of fixed-size buffers. </UL> Last updated $Date: 2016-09-25 20:05:47 $. </BODY> </HTML> PK粐\h�html/v4.0.5.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v4.0.5 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v4.0.5<BR> <B>Previous Version</B>: <A HREF=v4.0.4.html>v4.0.4</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#highlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> Support for configure/build using CMake. <li> Support for large (> 2GB) files under Microsoft Windows. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI> CMakeLists.txt / CMake <UL> <LI> Configuration and building using CMake is now supported under Microsoft Windows and on Unix-type systems. </UL> </LI> <LI> configure.ac / configure <UL> <LI> Test for and use fseeko() if it is available. This allows supporting large files on Unix-type systems with a 32-bit 'long' type and a 64-bit 'off_t' type. </UL> </LI> </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI> tiffiop.h: <UL> <LI> Macros added to use 64-bit equivalents for all standard I/O and POSIX APIs used by libtiff and its tools which are limited to 2GB in Windows builds. Note that these 64-bit equivalents were introduced by the CRT provided with Visual Studio 2005 and if the necessary CRT is not installed on the target computer, the program will not run. The wrapper macros will not be activated unless the definition _MSC_VER is at least 1400 or __MSVCRT_VERSION__ is at least 0x800. </UL> <LI> tif_unix.c: <UL> <LI> Updated to support large files under Microsoft Windows. This makes tif_unix.c a completely viable candidate for use under Windows (in spite of its name) if the CRT is modern enough. Please note that tif_win32.c already supported large files, but only 'tiffinfo' and 'tiffdump' made any provision to support large files under Windows. <LI> _tiffReadProc() and _tiffWriteProc() are modified to chunk I/O to a maximum size of 2GB for extremely large I/O requests. This surmounts limitations in the Microsoft Windows read() and write() APIs (which are limited to the range of a 32-bit 'int'), and may avoid poor behavior with extremely large I/O requests on other systems. </UL> </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI> All tools <UL> <LI> Updated to use I/O wrapper macros from tiffiop.h in order to support large files under Microsoft Windows. </UL> </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <LI> None </UL> Last updated $Date: 2016-09-25 20:05:47 $. </BODY> </HTML> PK粐\^z#��html/v4.0.6.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v4.0.6 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v4.0.6<BR> <B>Previous Version</B>: <A HREF=v4.0.5.html>v4.0.5</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#highlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <li> Now builds with CMake 2.8.9 and newer (previously required 3.0.0) </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI> CMakeLists.txt / CMake <UL> <LI> Supports CMake 2.8.9 and later. <LI> Add missing file which wasn't being distributed, causing unit tests to fail. <LI> Make shared/static library building configurable. <LI> CMake reads all version information directly from configure.ac to avoid duplication of values. <LI> CMake builds are now included in 'distcheck' target. </UL> </LI> <LI> Makefile.am <UL> <LI> Autotools 'make distcheck' now tests the CMake-based build if CMake is available. </UL> </LI> </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI> Fixes to avoid undefined behaviour of signed types (C standard compliance). <LI> Fixes to avoid possible isses when casting to unsigned char. <LI> Fixes to avoid undefined behaviour with shifts. <LI> Fix generation of output with 16 bit or 32 bit integer, when byte swapping is needed, in horizontal predictor (#2521). <LI> Fix decoding when there is a single pixel to decode (unlikely case...) and byte swapping is involved. <LI> Add add explicit masking with 0xff before casting to uchar in floating-point horizontal differencing and accumulation routines. <LI> Eliminate requirement for and use of 64-bit constant values. </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI> tiffgt <UL> <LI> Silence glut API deprecation warnings on MacOS X. </UL> <LI> fax2ps <UL> <LI> Detect failure to write to temporary file. </UL> </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <LI> None </UL> Last updated $Date: 2016-09-25 20:05:47 $. </BODY> </HTML> PK粐\lm�p�C�Chtml/v4.0.7.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v4.0.7 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v4.0.7<BR> <B>Previous Version</B>: <A HREF=v4.0.6.html>v4.0.6</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site #1</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a><BR> <B>Master HTTP Site #2</B>: <A HREF="http://libtiff.maptools.org/"> http://libtiff.maptools.org/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#highlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <LI> The libtiff tools bmp2tiff, gif2tiff, ras2tiff, sgi2tiff, sgisv, and ycbcr are completely removed from the distribution. These tools were written in the late 1980s and early 1990s for test and demonstration purposes. In some cases the tools were never updated to support updates to the file format, or the file formats are now rarely used. In all cases these tools increased the libtiff security and maintenance exposure beyond the value offered by the tool. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI> None </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI> libtiff/tif_dirread.c: in TIFFFetchNormalTag(), do not dereference NULL pointer when values of tags with TIFF_SETGET_C16_ASCII / TIFF_SETGET_C32_ASCII access are 0-byte arrays. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2593 (regression introduced by previous fix done on 2016-11-11 for CVE-2016-9297). Reported by Henri Salo. Assigned as CVE-2016-9448 <LI> libtiff/tif_aux.c: fix crash in TIFFVGetFieldDefaulted() when requesting Predictor tag and that the zip/lzw codec is not configured. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2591 <LI> libtiff/tif_dirread.c: in TIFFFetchNormalTag(), make sure that values of tags with TIFF_SETGET_C16_ASCII / TIFF_SETGET_C32_ASCII access are null terminated, to avoid potential read outside buffer in _TIFFPrintField(). Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2590 <LI> libtiff/tif_dirread.c: reject images with OJPEG compression that have no TileOffsets/StripOffsets tag, when OJPEG compression is disabled. Prevent null pointer dereference in TIFFReadRawStrip1() and other functions that expect td_stripbytecount to be non NULL. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2585 <LI> libtiff/tif_strip.c: make TIFFNumberOfStrips() return the td->td_nstrips value when it is non-zero, instead of recomputing it. This is needed in TIFF_STRIPCHOP mode where td_nstrips is modified. Fixes a read outsize of array in tiffsplit (or other utilities using TIFFNumberOfStrips()). Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2587 (CVE-2016-9273) <LI> libtiff/tif_predict.h, libtiff/tif_predict.c: Replace assertions by runtime checks to avoid assertions in debug mode, or buffer overflows in release mode. Can happen when dealing with unusual tile size like YCbCr with subsampling. Reported as MSVR 35105 by Axel Souchet & Vishal Chauhan from the MSRC Vulnerabilities & Mitigations <LI> libtiff/tif_dir.c: discard values of SMinSampleValue and SMaxSampleValue when they have been read and the value of SamplesPerPixel is changed afterwards (like when reading a OJPEG compressed image with a missing SamplesPerPixel tag, and whose photometric is RGB or YCbCr, forcing SamplesPerPixel being 3). Otherwise when rewriting the directory (for example with tiffset, we will expect 3 values whereas the array had been allocated with just one), thus causing a out of bound read access. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2500 (CVE-2014-8127, duplicate: CVE-2016-3658) <LI> libtiff/tif_dirwrite.c: avoid null pointer dereference on td_stripoffset when writing directory, if FIELD_STRIPOFFSETS was artificially set for a hack case in OJPEG case. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2500 (CVE-2014-8127, duplicate: CVE-2016-3658) <LI> libtiff/tif_getimage.c (TIFFRGBAImageOK): Reject attempts to read floating point images. <LI> libtiff/tif_predict.c (PredictorSetup): Enforce bits-per-sample requirements of floating point predictor (3). Fixes CVE-2016-3622 "Divide By Zero in the tiff2rgba tool." <LI> libtiff/tif_pixarlog.c: fix out-of-bounds write vulnerabilities in heap allocated buffers. Reported as MSVR 35094. Discovered by Axel Souchet and Vishal Chauhan from the MSRC Vulnerabilities & Mitigations team. <LI> libtiff/tif_write.c: fix issue in error code path of TIFFFlushData1() that didn't reset the tif_rawcc and tif_rawcp members. I'm not completely sure if that could happen in practice outside of the odd behaviour of t2p_seekproc() of tiff2pdf). The report points that a better fix could be to check the return value of TIFFFlushData1() in places where it isn't done currently, but it seems this patch is enough. Reported as MSVR 35095. Discovered by Axel Souchet & Vishal Chauhan & Suha Can from the MSRC Vulnerabilities & Mitigations team. <LI> libtiff/tif_pixarlog.c: Fix write buffer overflow in PixarLogEncode if more input samples are provided than expected by PixarLogSetupEncode. Idea based on libtiff-CVE-2016-3990.patch from libtiff-4.0.3-25.el7_2.src.rpm by Nikola Forro, but with different and simpler check. (bugzilla #2544) <LI> libtiff/tif_read.c: Fix out-of-bounds read on memory-mapped files in TIFFReadRawStrip1() and TIFFReadRawTile1() when stripoffset is beyond tmsize_t max value (reported by Mathias Svensson) <LI> libtiff/tif_read.c: make TIFFReadEncodedStrip() and TIFFReadEncodedTile() directly use user provided buffer when no compression (and other conditions) to save a memcpy() <LI> libtiff/tif_write.c: make TIFFWriteEncodedStrip() and TIFFWriteEncodedTile() directly use user provided buffer when no compression to save a memcpy(). <LI> libtiff/tif_luv.c: validate that for COMPRESSION_SGILOG and PHOTOMETRIC_LOGL, there is only one sample per pixel. Avoid potential invalid memory write on corrupted/unexpected images when using the TIFFRGBAImageBegin() interface (reported by Clay Wood) <LI> libtiff/tif_pixarlog.c: fix potential buffer write overrun in PixarLogDecode() on corrupted/unexpected images (reported by Mathias Svensson) (CVE-2016-5875) <LI> libtiff/libtiff.def: Added _TIFFMultiply32 and _TIFFMultiply64 to libtiff.def <LI> libtiff/tif_config.vc.h (HAVE_SNPRINTF): Add a '1' to the HAVE_SNPRINTF definition. <LI> libtiff/tif_config.vc.h (HAVE_SNPRINTF): Applied patch by Edward Lam to define HAVE_SNPRINTF for Visual Studio 2015. <LI> libtiff/tif_dirread.c: when compiled with DEFER_STRILE_LOAD, fix regression, introduced on 2014-12-23, when reading a one-strip file without a StripByteCounts tag. GDAL #6490 <LI> libtiff/*: upstream typo fixes (mostly contributed by Kurt Schwehr) coming from GDAL internal libtiff <LI> libtiff/tif_fax3.h: make Param member of TIFFFaxTabEnt structure a uint16 to reduce size of the binary. <LI> libtiff/tif_read.c, tif_dirread.c: fix indentation issues raised by GCC 6 -Wmisleading-indentation <LI> libtiff/tif_pixarlog.c: avoid zlib error messages to pass a NULL string to %s formatter, which is undefined behaviour in sprintf(). <LI> libtiff/tif_next.c: fix potential out-of-bound write in NeXTDecode() triggered by http://lcamtuf.coredump.cx/afl/vulns/libtiff5.tif (bugzilla #2508) <LI> libtiff/tif_luv.c: fix potential out-of-bound writes in decode functions in non debug builds by replacing assert()s by regular if checks (bugzilla #2522). Fix potential out-of-bound reads in case of short input data. <LI> libtiff/tif_getimage.c: fix out-of-bound reads in TIFFRGBAImage interface in case of unsupported values of SamplesPerPixel/ExtraSamples for LogLUV / CIELab. Add explicit call to TIFFRGBAImageOK() in TIFFRGBAImageBegin(). Fix CVE-2015-8665 reported by limingxing and CVE-2015-8683 reported by zzf of Alibaba. <LI> libtiff/tif_dirread.c: workaround false positive warning of Clang Static Analyzer about null pointer dereference in TIFFCheckDirOffset(). <LI> libtiff/tif_fax3.c: remove dead assignment in Fax3PutEOLgdal(). Found by Clang Static Analyzer <LI> libtiff/tif_dirwrite.c: fix truncation to 32 bit of file offsets in TIFFLinkDirectory() and TIFFWriteDirectorySec() when aligning directory offsets on a even offset (affects BigTIFF). This was a regression of the changeset of 2015-10-19. <LI> libtiff/tif_write.c: TIFFWriteEncodedStrip() and TIFFWriteEncodedTile() should return -1 in case of failure of tif_encodestrip() as documented <LI> libtiff/tif_dumpmode.c: DumpModeEncode() should return 0 in case of failure so that the above mentionned functions detect the error. <LI> libtiff/*.c: fix MSVC warnings related to cast shortening and assignment within conditional expression <LI> libtiff/*.c: fix clang -Wshorten-64-to-32 warnings <LI> libtiff/tif_dirread.c: prevent reading ColorMap or TransferFunction if BitsPerPixel > 24, so as to avoid huge memory allocation and file read attempts <LI> libtiff/tif_dirread.c: remove duplicated assignment (reported by Clang static analyzer) <LI> libtiff/tif_dir.c, libtiff/tif_dirinfo.c, libtiff/tif_compress.c, libtiff/tif_jpeg_12.c: suppress warnings about 'no previous declaration/prototype' <LI> libtiff/tiffiop.h, libtiff/tif_dirwrite.c: suffix constants by U to fix 'warning: negative integer implicitly converted to unsigned type' warning (part of -Wconversion) <LI> libtiff/tif_dir.c, libtiff/tif_dirread.c, libtiff/tif_getimage.c, libtiff/tif_print.c: fix -Wshadow warnings (only in libtiff/) </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI> tools/Makefile.am: The libtiff tools bmp2tiff, gif2tiff, ras2tiff, sgi2tiff, sgisv, and ycbcr are completely removed from the distribution. The libtiff tools rgb2ycbcr and thumbnail are only built in the build tree for testing. Old files are put in new 'archive' subdirectory of the source repository, but not in distribution archives. These changes are made in order to lessen the maintenance burden. <LI> tools/tiff2pdf.c: avoid undefined behaviour related to overlapping of source and destination buffer in memcpy() call in t2p_sample_rgbaa_to_rgb() Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2577 <LI> tools/tiff2pdf.c: fix potential integer overflows on 32 bit builds in t2p_read_tiff_size() Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2576 <LI> tools/fax2tiff.c: fix segfault when specifying -r without argument. Patch by Yuriy M. Kaminskiy. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2572 <LI> tools/tiffinfo.c: fix out-of-bound read on some tiled images. (http://bugzilla.maptools.org/show_bug.cgi?id=2517) <LI> tools/tiffcrop.c: fix multiple uint32 overflows in writeBufferToSeparateStrips(), writeBufferToContigTiles() and writeBufferToSeparateTiles() that could cause heap buffer overflows. Reported by Henri Salo from Nixu Corporation. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2592 <LI> tools/tiffcrop.c: fix out-of-bound read of up to 3 bytes in readContigTilesIntoBuffer(). Reported as MSVR 35092 by Axel Souchet & Vishal Chauhan from the MSRC Vulnerabilities & Mitigations team. <LI> tools/tiff2pdf.c: fix write buffer overflow of 2 bytes on JPEG compressed images. Reported by Tyler Bohan of Cisco Talos as TALOS-CAN-0187 / CVE-2016-5652. Also prevents writing 2 extra uninitialized bytes to the file stream. <LI> tools/tiffcp.c: fix out-of-bounds write on tiled images with odd tile width vs image width. Reported as MSVR 35103 by Axel Souchet and Vishal Chauhan from the MSRC Vulnerabilities & Mitigations team. <LI> tools/tiff2pdf.c: fix read -largely- outsize of buffer in t2p_readwrite_pdf_image_tile(), causing crash, when reading a JPEG compressed image with TIFFTAG_JPEGTABLES length being one. Reported as MSVR 35101 by Axel Souchet and Vishal Chauhan from the MSRC Vulnerabilities & Mitigations team. <LI> tools/tiffcp.c: fix read of undefined variable in case of missing required tags. Found on test case of MSVR 35100. <LI> tools/tiffcrop.c: fix read of undefined buffer in readContigStripsIntoBuffer() due to uint16 overflow. Probably not a security issue but I can be wrong. Reported as MSVR 35100 by Axel Souchet from the MSRC Vulnerabilities & Mitigations team. <LI> tools/tiffcrop.c: fix various out-of-bounds write vulnerabilities in heap or stack allocated buffers. Reported as MSVR 35093, MSVR 35096 and MSVR 35097. Discovered by Axel Souchet and Vishal Chauhan from the MSRC Vulnerabilities & Mitigations team. <LI> tools/tiff2pdf.c: fix out-of-bounds write vulnerabilities in heap allocate buffer in t2p_process_jpeg_strip(). Reported as MSVR 35098. Discovered by Axel Souchet and Vishal Chauhan from the MSRC Vulnerabilities & Mitigations team. <LI> tools/tiff2bw.c: fix weight computation that could result of color value overflow (no security implication). Fix bugzilla #2550. Patch by Frank Freudenberg. <LI> tools/rgb2ycbcr.c: validate values of -v and -h parameters to avoid potential divide by zero. Fixes CVE-2016-3623 (bugzilla #2569) <LI> tools/tiffcrop.c: Fix out-of-bounds write in loadImage(). From patch libtiff-CVE-2016-3991.patch from libtiff-4.0.3-25.el7_2.src.rpm by Nikola Forro (bugzilla #2543) <LI> tools/tiff2rgba.c: Fix integer overflow in size of allocated buffer, when -b mode is enabled, that could result in out-of-bounds write. Based initially on patch tiff-CVE-2016-3945.patch from libtiff-4.0.3-25.el7_2.src.rpm by Nikola Forro, with correction for invalid tests that rejected valid files. (bugzilla #2545) <LI> tools/tiffcrop.c: Avoid access outside of stack allocated array on a tiled separate TIFF with more than 8 samples per pixel. Reported by Kaixiang Zhang of the Cloud Security Team, Qihoo 360 (CVE-2016-5321 / CVE-2016-5323 , bugzilla #2558 / #2559) <LI> tools/tiffdump.c: fix a few misaligned 64-bit reads warned by -fsanitize <LI> tools/tiffdump.c (ReadDirectory): Remove uint32 cast to _TIFFmalloc() argument which resulted in Coverity report. Added more mutiplication overflow checks. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <LI> None </UL> Last updated $Date: 2016-11-19 17:47:40 $. </BODY> </HTML> PK粐\`��%I%Ihtml/v4.0.8.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v4.0.8 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v4.0.8<BR> <B>Previous Version</B>: <A HREF=v4.0.7.html>v4.0.7</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site #1</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a><BR> <B>Master HTTP Site #2</B>: <A HREF="http://libtiff.maptools.org/"> http://libtiff.maptools.org/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#highlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <LI> None </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI> None </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI> libtiff/tif_getimage.c, libtiff/tif_open.c: add parenthesis to fix cppcheck clarifyCalculation warnings * libtiff/tif_predict.c, libtiff/tif_print.c: fix printf unsigned vs signed formatting (cppcheck invalidPrintfArgType_uint warnings) <LI> libtiff/tif_read.c, libtiff/tiffiop.h: fix uint32 overflow in TIFFReadEncodedStrip() that caused an integer division by zero. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2596 <LI> libtiff/tif_pixarlog.c, libtiff/tif_luv.c: fix heap-based buffer overflow on generation of PixarLog / LUV compressed files, with ColorMap, TransferFunction attached and nasty plays with bitspersample. The fix for LUV has not been tested, but suffers from the same kind of issue of PixarLog. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2604 <LI> libtiff/tif_strip.c: revert the change in TIFFNumberOfStrips() done for http://bugzilla.maptools.org/show_bug.cgi?id=2587 / CVE-2016-9273 since the above change is a better fix that makes it unnecessary. <LI> libtiff/tif_dirread.c: modify ChopUpSingleUncompressedStrip() to instanciate compute ntrips as TIFFhowmany_32(td->td_imagelength, rowsperstrip), instead of a logic based on the total size of data. Which is faulty is the total size of data is not sufficient to fill the whole image, and thus results in reading outside of the StripByCounts/StripOffsets arrays when using TIFFReadScanline(). Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2608. <LI> libtiff/tif_ojpeg.c: make OJPEGDecode() early exit in case of failure in OJPEGPreDecode(). This will avoid a divide by zero, and potential other issues. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2611 <LI> libtiff/tif_write.c: fix misleading indentation as warned by GCC. <LI> libtiff/tif_fax3.h: revert change done on 2016-01-09 that made Param member of TIFFFaxTabEnt structure a uint16 to reduce size of the binary. It happens that the Hylafax software uses the tables that follow this typedef (TIFFFaxMainTable, TIFFFaxWhiteTable, TIFFFaxBlackTable), although they are not in a public libtiff header. Raised by Lee Howard. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2636 <LI> libtiff/tiffio.h, libtiff/tif_getimage.c: add TIFFReadRGBAStripExt() and TIFFReadRGBATileExt() variants of the functions without ext, with an extra argument to control the stop_on_error behaviour. <LI> libtiff/tif_getimage.c: fix potential memory leaks in error code path of TIFFRGBAImageBegin(). Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2627 <LI> libtiff/tif_jpeg.c: increase libjpeg max memory usable to 10 MB instead of libjpeg 1MB default. This helps when creating files with "big" tile, without using libjpeg temporary files. Related to https://trac.osgeo.org/gdal/ticket/6757 <LI> libtiff/tif_jpeg.c: avoid integer division by zero in JPEGSetupEncode() when horizontal or vertical sampling is set to 0. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2653 <LI> libtiff/tif_dirwrite.c: in TIFFWriteDirectoryTagCheckedRational, replace assertion by runtime check to error out if passed value is strictly negative. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2535 <LI> libtiff/tif_dirread.c: avoid division by floating point 0 in TIFFReadDirEntryCheckedRational() and TIFFReadDirEntryCheckedSrational(), and return 0 in that case (instead of infinity as before presumably) Apparently some sanitizers do not like those divisions by zero. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2644 <LI> libtiff/tif_dir.c, tif_dirread.c, tif_dirwrite.c: implement various clampings of double to other data types to avoid undefined behaviour if the output range isn't big enough to hold the input value. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2643 http://bugzilla.maptools.org/show_bug.cgi?id=2642 http://bugzilla.maptools.org/show_bug.cgi?id=2646 http://bugzilla.maptools.org/show_bug.cgi?id=2647 <LI> libtiff/tif_jpeg.c: validate BitsPerSample in JPEGSetupEncode() to avoid undefined behaviour caused by invalid shift exponent. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2648 <LI> libtiff/tif_read.c: avoid potential undefined behaviour on signed integer addition in TIFFReadRawStrip1() in isMapped() case. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2650 <LI> libtiff/tif_getimage.c: add explicit uint32 cast in putagreytile to avoid UndefinedBehaviorSanitizer warning. Patch by Nicolás Peña. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2658 <LI> libtiff/tif_read.c: TIFFReadBufferSetup(): use _TIFFcalloc() to zero initialize tif_rawdata. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2651 <LI> libtiff/tiffio.h, tif_unix.c, tif_win32.c, tif_vms.c: add _TIFFcalloc() <LI> libtiff/tif_luv.c, tif_lzw.c, tif_packbits.c: return 0 in Encode functions instead of -1 when TIFFFlushData1() fails. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2130 <LI> libtiff/tif_ojpeg.c: fix leak in OJPEGReadHeaderInfoSecTablesQTable, OJPEGReadHeaderInfoSecTablesDcTable and OJPEGReadHeaderInfoSecTablesAcTable when read fails. Patch by Nicolás Peña. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2659 <LI> libtiff/tif_jpeg.c: only run JPEGFixupTagsSubsampling() if the YCbCrSubsampling tag is not explicitly present. This helps a bit to reduce the I/O amount when the tag is present (especially on cloud hosted files). <LI> libtiff/tif_lzw.c: in LZWPostEncode(), increase, if necessary, the code bit-width after flushing the remaining code and before emitting the EOI code. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=1982 <LI> libtiff/tif_pixarlog.c: fix memory leak in error code path of PixarLogSetupDecode(). Patch by Nicolás Peña. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2665 <LI> libtiff/tif_fax3.c, tif_predict.c, tif_getimage.c: fix GCC 7 -Wimplicit-fallthrough warnings. <LI> libtiff/tif_dirread.c: fix memory leak in non DEFER_STRILE_LOAD mode (ie default) when there is both a StripOffsets and TileOffsets tag, or a StripByteCounts and TileByteCounts Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2689 <LI> libtiff/tif_ojpeg.c: fix potential memory leak in OJPEGReadHeaderInfoSecTablesQTable, OJPEGReadHeaderInfoSecTablesDcTable and OJPEGReadHeaderInfoSecTablesAcTable Patch by Nicolás Peña. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2670 <LI> libtiff/tif_fax3.c: avoid crash in Fax3Close() on empty file. Patch by Alan Coopersmith + complement by myself. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2673 <LI> libtiff/tif_read.c: TIFFFillStrip(): add limitation to the number of bytes read in case td_stripbytecount[strip] is bigger than reasonable, so as to avoid excessive memory allocation. <LI> libtiff/tif_zip.c, tif_pixarlog.c, tif_predict.c: fix memory leak when the underlying codec (ZIP, PixarLog) succeeds its setupdecode() method, but PredictorSetup fails. Credit to OSS-Fuzz (locally run, on GDAL) <LI> libtiff/tif_read.c: TIFFFillStrip() and TIFFFillTile(): avoid excessive memory allocation in case of shorten files. Only effective on 64 bit builds and non-mapped cases. Credit to OSS-Fuzz (locally run, on GDAL) <LI> libtiff/tif_read.c: TIFFFillStripPartial() / TIFFSeek(), avoid potential integer overflows with read_ahead in CHUNKY_STRIP_READ_SUPPORT mode. Should especially occur on 32 bit platforms. <LI> libtiff/tif_read.c: TIFFFillStripPartial(): avoid excessive memory allocation in case of shorten files. Only effective on 64 bit builds. Credit to OSS-Fuzz (locally run, on GDAL) <LI> libtiff/tif_read.c: update tif_rawcc in CHUNKY_STRIP_READ_SUPPORT mode with tif_rawdataloaded when calling TIFFStartStrip() or TIFFFillStripPartial(). This avoids reading beyond tif_rawdata when bytecount > tif_rawdatasize. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1545. Credit to OSS-Fuzz <LI> libtiff/tif_color.c: avoid potential int32 overflow in TIFFYCbCrToRGBInit() Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1533 Credit to OSS-Fuzz <LI> libtiff/tif_pixarlog.c, tif_luv.c: avoid potential int32 overflows in multiply_ms() and add_ms(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1558 Credit to OSS-Fuzz <LI> libtiff/tif_packbits.c: fix out-of-buffer read in PackBitsDecode() Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1563 Credit to OSS-Fuzz <LI> libtiff/tif_luv.c: LogL16InitState(): avoid excessive memory allocation when RowsPerStrip tag is missing. Credit to OSS-Fuzz (locally run, on GDAL) <LI> libtiff/tif_lzw.c: update dec_bitsleft at beginning of LZWDecode(), and update tif_rawcc at end of LZWDecode(). This is needed to properly work with the latest chnges in tif_read.c in CHUNKY_STRIP_READ_SUPPORT mode. <LI> libtiff/tif_pixarlog.c: PixarLogDecode(): resync tif_rawcp with next_in and tif_rawcc with avail_in at beginning and end of function, similarly to what is done in LZWDecode(). Likely needed so that it works properly with latest chnges in tif_read.c in CHUNKY_STRIP_READ_SUPPORT mode. But untested... <LI> libtiff/tif_getimage.c: initYCbCrConversion(): add basic validation of luma and refBlackWhite coefficients (just check they are not NaN for now), to avoid potential float to int overflows. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1663 Credit to OSS Fuzz <LI> libtiff/tif_read.c: _TIFFVSetField(): fix outside range cast of double to float. Credit to Google Autofuzz project <LI> libtiff/tif_getimage.c: initYCbCrConversion(): check luma[1] is not zero to avoid division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1665 Credit to OSS Fuzz <LI> libtiff/tif_read.c: _TIFFVSetField(): fix outside range cast of double to float. Credit to Google Autofuzz project <LI> libtiff/tif_getimage.c: initYCbCrConversion(): check luma[1] is not zero to avoid division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1665 Credit to OSS Fuzz <LI> libtiff/tif_getimage.c: initYCbCrConversion(): stricter validation for refBlackWhite coefficients values. To avoid invalid float->int32 conversion. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1718 Credit to OSS Fuzz </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI> tools/fax2tiff.c (main): Applied patch by Jörg Ahrens to fix passing client data for Win32 builds using tif_win32.c (USE_WIN32_FILEIO defined) for file I/O. Patch was provided via email on November 20, 2016. <LI> tools/tiffcp.c: avoid uint32 underflow in cpDecodedStrips that can cause various issues, such as buffer overflows in the library. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2598 <LI> tools/tiffcrop.c: fix readContigStripsIntoBuffer() in -i (ignore) mode so that the output buffer is correctly incremented to avoid write outside bounds. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2620 <LI> tools/tiffcrop.c: add 3 extra bytes at end of strip buffer in readSeparateStripsIntoBuffer() to avoid read outside of heap allocated buffer. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2621 <LI> tools/tiffcrop.c: fix integer division by zero when BitsPerSample is missing. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2619 <LI> tools/tiffinfo.c: fix null pointer dereference in -r mode when the image has no StripByteCount tag. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2594 <LI> tools/tiffcp.c: avoid potential division by zero is BitsPerSamples tag is missing. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2597 <LI> tools/tif_dir.c: when TIFFGetField(, TIFFTAG_NUMBEROFINKS, ) is called, limit the return number of inks to SamplesPerPixel, so that code that parses ink names doesn't go past the end of the buffer. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2599 <LI> tools/tiffcp.c: avoid potential division by zero is BitsPerSamples tag is missing. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2607 <LI> tools/tiffcp.c: fix uint32 underflow/overflow that can cause heap-based buffer overflow. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2610 <LI> tools/tiffcp.c: replace assert( (bps % 8) == 0 ) by a non assert check. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2605 <LI> tools/tiff2ps.c: fix 2 heap-based buffer overflows (in PSDataBW and PSDataColorContig). Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2633 and http://bugzilla.maptools.org/show_bug.cgi?id=2634. <LI> tools/tiff2pdf.c: prevent heap-based buffer overflow in -j mode on a paletted image. Note: this fix errors out before the overflow happens. There could probably be a better fix. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2635 <LI> tools/tiff2pdf.c: fix wrong usage of memcpy() that can trigger unspecified behaviour. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2638 <LI> tools/tiff2pdf.c: avoid potential invalid memory read in t2p_writeproc. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2639 <LI> tools/tiff2pdf.c: avoid potential heap-based overflow in t2p_readwrite_pdf_image_tile(). Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2640 <LI> tools/tiffcrop.c: remove extraneous TIFFClose() in error code path, that caused double free. Related to http://bugzilla.maptools.org/show_bug.cgi?id=2535 <LI> tools/tiffcp.c: error out cleanly in cpContig2SeparateByRow and cpSeparate2ContigByRow if BitsPerSample != 8 to avoid heap based overflow. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2656 and http://bugzilla.maptools.org/show_bug.cgi?id=2657 <LI> tools/raw2tiff.c: avoid integer division by zero. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2631 <LI> tools/tiff2ps.c: call TIFFClose() in error code paths. <LI> tools/fax2tiff.c: emit appropriate message if the input file is empty. Patch by Alan Coopersmith. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2672 <LI> tools/tiff2bw.c: close TIFF handle in error code path. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2677 </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <LI> None </UL> Last updated $Date: 2017-05-21 17:47:46 $. </BODY> </HTML> PK粐\�.�F�Fhtml/v4.0.9.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v4.0.9 </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Helvetica, Arial, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v4.0.9<BR> <B>Previous Version</B>: <A HREF=v4.0.8.html>v4.0.8</a><BR> <B>Master FTP Site</B>: <A HREF="ftp://download.osgeo.org/libtiff"> download.osgeo.org</a>, directory pub/libtiff</A><BR> <B>Master HTTP Site #1</B>: <A HREF="http://www.simplesystems.org/libtiff/"> http://www.simplesystems.org/libtiff/</a><BR> <B>Master HTTP Site #2</B>: <A HREF="http://libtiff.maptools.org/"> http://libtiff.maptools.org/</a> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#highlights">Major Changes</A> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contrib area</A> </UL> <p> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A> <UL> <LI> None </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI> test/Makefile.am: Add some tests for tiff2bw. <LI> * .appveyor.yml, .travis.yml, build/travis-ci: apply patches 0001-ci-Travis-script-improvements.patch and 0002-ci-Invoke-helper-script-via-shell.patch by Roger Leigh (sent to mailing list) <LI> .travis.yml, build/travis-ci: new files from 0001-ci-Add-Travis-support-for-Linux-builds-with-Autoconf.patch by Roger Leigh (sent to mailing list on 2017-06-08) This patch adds support for the Travis-CI service. <LI> .appveyor.yml: new file from 0002-ci-Add-AppVeyor-support.patch by Roger Leigh (sent to mailing list on 2017-06-08) This patch adds a .appveyor.yml file to the top-level. This allows one to opt in to having a branch built on Windows with Cygwin, MinGW and MSVC automatically when a branch is pushed to GitHub, GitLab, BitBucket or any other supported git hosting service. <LI> CMakeLists.txt, test/CMakeLists.txt, test/TiffTestCommon.cmake: apply patch 0001-cmake-Improve-Cygwin-and-MingGW-test-support.patch from Roger Leigh (sent to mailing list on 2017-06-08) This patch makes the CMake build system support running the tests with MinGW or Cygwin. <LI> test/tiffcp-lzw-compat.sh, test/images/quad-lzw-compat.tiff: new files to test old-style LZW decompression <LI> test/common.sh, Makefile.am, CMakeList.txt: updated with above <LI> test/Makefile.am: add missing reference to images/quad-lzw-compat.tiff to fix "make distcheck". Patch by Roger Leigh <LI> nmake.opt: support a DEBUG=1 option, so as to adjust OPTFLAGS and use /MDd runtime in debug mode. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI> libtiff/tif_color.c: TIFFYCbCrToRGBInit(): stricter clamping to avoid int32 overflow in TIFFYCbCrtoRGB(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1844 Credit to OSS Fuzz <LI> libtiff/tif_getimage.c: initYCbCrConversion(): stricter validation for refBlackWhite coefficients values. To avoid invalid float->int32 conversion (when refBlackWhite[0] == 2147483648.f) Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1907 Credit to OSS Fuzz <LI> libtiff/tif_dirinfo.c, tif_dirread.c: add _TIFFCheckFieldIsValidForCodec(), and use it in TIFFReadDirectory() so as to ignore fields whose tag is a codec-specified tag but this codec is not enabled. This avoids TIFFGetField() to behave differently depending on whether the codec is enabled or not, and thus can avoid stack based buffer overflows in a number of TIFF utilities such as tiffsplit, tiffcmp, thumbnail, etc. Patch derived from 0063-Handle-properly-CODEC-specific-tags.patch (http://bugzilla.maptools.org/show_bug.cgi?id=2580) by Raphaël Hertzog. Fixes: http://bugzilla.maptools.org/show_bug.cgi?id=2580 http://bugzilla.maptools.org/show_bug.cgi?id=2693 http://bugzilla.maptools.org/show_bug.cgi?id=2625 (CVE-2016-10095) http://bugzilla.maptools.org/show_bug.cgi?id=2564 (CVE-2015-7554) http://bugzilla.maptools.org/show_bug.cgi?id=2561 (CVE-2016-5318) http://bugzilla.maptools.org/show_bug.cgi?id=2499 (CVE-2014-8128) http://bugzilla.maptools.org/show_bug.cgi?id=2441 http://bugzilla.maptools.org/show_bug.cgi?id=2433 <LI> libtiff/tif_swab.c: if DISABLE_CHECK_TIFFSWABMACROS is defined, do not do the #ifdef TIFFSwabXXX checks. Make it easier for GDAL to rename the symbols of its internal libtiff copy. <LI> libtiff/tif_dirread.c: fix regression of libtiff 4.0.8 in ChopUpSingleUncompressedStrip() regarding update of newly single-strip uncompressed files whose bytecount is 0. Before the change of 2016-12-03, the condition bytecount==0 used to trigger an early exit/disabling of strip chop. Re-introduce that in update mode. Otherwise this cause later incorrect setting for the value of StripByCounts/StripOffsets. ( https://trac.osgeo.org/gdal/ticket/6924 ) <LI> libtiff/tif_dirread.c: TIFFFetchStripThing(): limit the number of items read in StripOffsets/StripByteCounts tags to the number of strips to avoid excessive memory allocation. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2215 Credit to OSS Fuzz <LI> libtiff/tif_getimage.c: avoid many (harmless) unsigned int overflows. <LI> libtiff/tif_fax3.c: avoid unsigned int overflow in Fax3Encode2DRow(). Could potentially be a bug with huge rows. <LI> libtiff/tif_jpeg.c: avoid (harmless) unsigned int overflow on tiled images. <LI> libtiff/tif_dirread.c: avoid unsigned int overflow in EstimateStripByteCounts() and BYTECOUNTLOOKSBAD when file is too short. <LI> libtiff/tif_predict.c: decorate legitimate functions where unsigned int overflow occur with TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW * libtiff/tif_dirread.c: avoid unsigned int overflow in EstimateStripByteCounts() <LI> libtiff/tiffiop.h: add TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW macro to disable CLang warnings raised by -fsanitize=undefined,unsigned-integer-overflow <LI> libtiff/tif_jpeg.c: add anti-denial of service measure to avoid excessive CPU consumption on progressive JPEGs with a huge number of scans. See http://www.libjpeg-turbo.org/pmwiki/uploads/About/TwoIssueswiththeJPEGStandard.pdf Note: only affects libtiff since 2014-12-29 where support of non-baseline JPEG was added. <LI> libtiff/tif_jpeg.c: error out at decoding time if anticipated libjpeg memory allocation is above 100 MB. libjpeg in case of multiple scans, which is allowed even in baseline JPEG, if components are spread over several scans and not interleavedin a single one, needs to allocate memory (or backing store) for the whole strip/tile. See http://www.libjpeg-turbo.org/pmwiki/uploads/About/TwoIssueswiththeJPEGStandard.pdf This limitation may be overriden by setting the LIBTIFF_ALLOW_LARGE_LIBJPEG_MEM_ALLOC environment variable, or recompiling libtiff with a custom value of TIFF_LIBJPEG_LARGEST_MEM_ALLOC macro. <LI> libtiff/tif_jbig.c: fix memory leak in error code path of JBIGDecode() Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2706 Reported by team OWL337 <LI> libtiff/tif_dirread.c: in TIFFReadDirEntryFloat(), check that a double value can fit in a float before casting. Patch by Nicolas RUFF <LI> libtiff/tiffiop.h, libtiff/tif_jpeg.c, libtiff/tif_jpeg_12.c, libtiff/tif_read.c: make TIFFReadScanline() works in CHUNKY_STRIP_READ_SUPPORT mode with JPEG stream with multiple scans. Also make configurable through a LIBTIFF_JPEG_MAX_ALLOWED_SCAN_NUMBER environment variable the maximum number of scans allowed. Defaults to 100. <LI> libtiff/tif_read.c: TIFFFillTile(): add limitation to the number of bytes read in case td_stripbytecount[strip] is bigger than reasonable, so as to avoid excessive memory allocation (similarly to what was done for TIFFFileStrip() on 2017-05-10) <LI> libtiff/tif_getimage.c: use _TIFFReadEncodedStripAndAllocBuffer(). Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2708 and https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2433 . Credit to OSS Fuzz <LI> libtiff/tif_read.c, tiffiop.h: add a _TIFFReadEncodedStripAndAllocBuffer() function, variant of TIFFReadEncodedStrip() that allocates the decoded buffer only after a first successful TIFFFillStrip(). This avoids excessive memory allocation on corrupted files. <LI> libtiff/tif_dirwrite.c: in TIFFWriteDirectoryTagCheckedXXXX() functions associated with LONG8/SLONG8 data type, replace assertion that the file is BigTIFF, by a non-fatal error. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2712 Reported by team OWL337 <LI> libtiff/tif_read.c: TIFFStartTile(): set tif_rawcc to tif_rawdataloaded when it is set. Similarly to TIFFStartStrip(). This issue was revealed by the change of 2017-06-30 in TIFFFileTile(), limiting the number of bytes read. But it could probably have been hit too in CHUNKY_STRIP_READ_SUPPORT mode previously ? Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2454 Credit to OSS Fuzz <LI> libtiff/tif_error.c, tif_warning.c: correctly use va_list when both an old-style and new-style warning/error handlers are installed. Patch by Paavo Helde (sent on the mailing list) <LI> libtiff/tif_getimage.c: use _TIFFReadTileAndAllocBuffer(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2470 Credit to OSS Fuzz. <LI> libtiff/tif_read.c, tiffiop.h: add a _TIFFReadEncodedTileAndAllocBuffer() and _TIFFReadTileAndAllocBuffer() variants of TIFFReadEncodedTile() and TIFFReadTile() that allocates the decoded buffer only after a first successful TIFFFillTile(). This avoids excessive memory allocation on corrupted files. <LI> libtiff/tif_pixarlog.c: avoid excessive memory allocation on decoding when RowsPerStrip tag is not defined (and thus td_rowsperstrip == UINT_MAX) Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2554 Credit to OSS Fuzz <LI> libtiff/tif_lzw.c: fix 4.0.8 regression in the decoding of old-style LZW compressed files. <LI> libtiff/tif_lzw.c: fix potential out-of-buffer read on 1-byte LZW strips. Crashing issue only on memory mapped files, where the strip offset is the last byte of the file, and the file size is a multiple of one page size on the CPU architecture (typically 4096). Credit to myself :-) <LI> libtiff/tif_dir.c: avoid potential null pointer dereference in _TIFFVGetField() on corrupted TIFFTAG_NUMBEROFINKS tag instance. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2713 <LI> tools/tiff2pdf.c: prevent heap buffer overflow write in "Raw" mode on PlanarConfig=Contig input images. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2715 Reported by team OWL337 <LI> libtiff/tif_read.c: TIFFFillStrip() / TIFFFillTile(). Complementary fix for http://bugzilla.maptools.org/show_bug.cgi?id=2708 in the isMapped() case, so as to avoid excessive memory allocation when we need a temporary buffer but the file is truncated. <LI> libtiff/tif_read.c: TIFFFillStrip() / TIFFFillTile(). Complementary fix for http://bugzilla.maptools.org/show_bug.cgi?id=2708 in the isMapped() case, so as to avoid excessive memory allocation when we need a temporary buffer but the file is truncated. <LI> libtiff/tif_read.c: in TIFFFetchStripThing(), only grow the arrays that hold StripOffsets/StripByteCounts, when they are smaller than the expected number of striles, up to 1 million striles, and error out beyond. Can be tweaked by setting the environment variable LIBTIFF_STRILE_ARRAY_MAX_RESIZE_COUNT. This partially goes against a change added on 2002-12-17 to accept those arrays of wrong sizes, but is needed to avoid denial of services. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2350 Credit to OSS Fuzz <LI> libtiff/tif_read.c: in TIFFFetchStripThing(), only grow the arrays that hold StripOffsets/StripByteCounts, when they are smaller than the expected number of striles, up to 1 million striles, and error out beyond. Can be tweaked by setting the environment variable LIBTIFF_STRILE_ARRAY_MAX_RESIZE_COUNT. This partially goes against a change added on 2002-12-17 to accept those arrays of wrong sizes, but is needed to avoid denial of services. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2350 Credit to OSS Fuzz <LI> libtiff/tif_read.c: add protection against excessive memory allocation attempts in TIFFReadDirEntryArray() on short files. Effective for mmap'ed case. And non-mmap'ed case, but restricted to 64bit builds. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2675 <LI> libtiff/tif_read.c: add protection against excessive memory allocation attempts in TIFFReadDirEntryArray() on short files. Effective for mmap'ed case. And non-mmap'ed case, but restricted to 64bit builds. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2675 <LI> libtiff/tif_luv.c: LogLuvInitState(): avoid excessive memory allocation when RowsPerStrip tag is missing. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2683 Credit to OSS-Fuzz <LI> libtiff/tif_getimage.c: gtTileContig() and gtTileSeparate(): properly break from loops on error when stoponerr is set, instead of going on iterating on row based loop. <LI> libtiff/tif_getimage.c: fix fromskew computation when to-be-skipped pixel number is not a multiple of the horizontal subsampling, and also in some other cases. Impact putcontig8bitYCbCr44tile, putcontig8bitYCbCr42tile, putcontig8bitYCbCr41tile, putcontig8bitYCbCr21tile and putcontig8bitYCbCr12tile Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2637 (discovered by Agostino Sarubbo) and https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2691 (credit to OSS Fuzz) <LI> libtiff/tif_luv.c: further reduce memory requirements for temporary buffer when RowsPerStrip >= image_length in LogLuvInitState() and LogL16InitState(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2700 Credit to OSS Fuzz <LI> libtiff/tif_dirwrite.c: replace assertion related to not finding the SubIFD tag by runtime check (in TIFFWriteDirectorySec()) Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2727 Reported by team OWL337 <LI> libtiff/tif_dirwrite.c: replace assertion to tag value not fitting on uint32 when selecting the value of SubIFD tag by runtime check (in TIFFWriteDirectoryTagSubifd()). Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2728 Reported by team OWL337 <LI> libtiff/tif_jpeg.c: accept reading the last strip of a JPEG compressed file if the codestream height is larger than the truncated height of the strip. Emit a warning in this situation since this is non compliant. <LI> libtiff/tiffiop.h, tif_aux.c: redirect SeekOK() macro to a _TIFFSeekoK() function that checks if the offset is not bigger than INT64_MAX, so as to avoid a -1 error return code of TIFFSeekFile() to match a required seek to UINT64_MAX/-1. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2726 Adapted from proposal by Nicolas Ruff. <LI> libtiff/tif_dirread.c: add NULL check to avoid likely false positive null-pointer dereference warning by CLang Static Analyzer. <LI> libtiff/libtiff.def: add TIFFReadRGBAStripExt and TIFFReadRGBATileExt Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2735 <LI> libtiff/tif_jpeg.c: add compatibility with libjpeg-turbo 1.5.2 that honours max_memory_to_use > 0. Cf https://github.com/libjpeg-turbo/libjpeg-turbo/issues/162 <LI> libtiff/tif_getimage.c: avoid floating point division by zero in initCIELabConversion() Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3733 Credit to OSS Fuzz </UL> <P><HR WIDTH=65% ALIGN=left> <!--------------------------------------------------------------------------> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI> tools/tiff2pdf.c: prevent heap buffer overflow write in "Raw" mode on PlanarConfig=Contig input images. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2715 Reported by team OWL337 <LI> tools/tiffset.c: fix setting a single value for the ExtraSamples tag (and other tags with variable number of values). So 'tiffset -s ExtraSamples 1 X'. This only worked when setting 2 or more values, but not just one. <LI> tools/fax2tiff.c (_FAX_Client_Data): Pass FAX_Client_Data as the client data. This client data is not used at all at the moment, but it makes the most sense. Issue that the value of client_data.fd was passed where a pointer is expected was reported via email by Gerald Schade on Sun, 29 Oct 2017. <LI> tools/tiff2pdf.c (t2p_sample_realize_palette): Fix possible arithmetic overflow in bounds checking code and eliminate comparison between signed and unsigned type. <LI> tools/tiff2bw.c (main): Free memory allocated in the tiff2bw program. This is in response to the report associated with CVE-2017-16232 but does not solve the extremely high memory usage with the associated POC file. </UL> <P><HR WIDTH=65% ALIGN=left> <!---------------------------------------------------------------------------> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A> <UL> <LI> None </UL> Last updated $Date: 2017-11-18 19:38:06 $. </BODY> </HTML> PK粐\}7����html/CMakeLists.txtnu�[���# CMake build for libtiff # # Copyright © 2015 Open Microscopy Environment / University of Dundee # Written by Roger Leigh <rleigh@codelibre.net> # # 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. set(docfiles addingtags.html bugs.html build.html contrib.html document.html images.html index.html internals.html intro.html libtiff.html misc.html support.html TIFFTechNote2.html tools.html v3.4beta007.html v3.4beta016.html v3.4beta018.html v3.4beta024.html v3.4beta028.html v3.4beta029.html v3.4beta031.html v3.4beta032.html v3.4beta033.html v3.4beta034.html v3.4beta035.html v3.4beta036.html v3.5.1.html v3.5.2.html v3.5.3.html v3.5.4.html v3.5.5.html v3.5.6-beta.html v3.5.7.html v3.6.0.html v3.6.1.html v3.7.0alpha.html v3.7.0beta.html v3.7.0beta2.html v3.7.0.html v3.7.1.html v3.7.2.html v3.7.3.html v3.7.4.html v3.8.0.html v3.8.1.html v3.8.2.html v3.9.0beta.html v3.9.1.html v3.9.2.html v4.0.0.html v4.0.1.html v4.0.2.html v4.0.3.html v4.0.4beta.html) install(FILES ${docfiles} DESTINATION "${LIBTIFF_DOCDIR}/html") add_subdirectory(images) add_subdirectory(man) extra_dist(${docfiles}) PK粐\[ޙ'r�r�html/TIFFTechNote2.htmlnu�[���<pre> 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! </pre> PK粐\TU�;..html/addingtags.htmlnu�[���<HTML> <HEAD> <TITLE> Modifying The TIFF Library </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Arial, Helvetica, Sans"> <H1> Defining New TIFF Tags </H1> 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. <p> <h2>TIFFFieldInfo</h2> 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: <p> <pre> 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; </pre> <ul> <li> <b>field_tag</b>: the tag number. For instance 277 for the SamplesPerPixel tag. Builtin tags will generally have a #define in tiff.h for each known tag. <p> <li> <b>field_readcount</b>: 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.<p> <li> <b>field_writecount</b>: 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. <p> <li> <b>field_type</b>: 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. <p> <li> <b>field_bit</b>: 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.<p> <li> <b>field_oktochange</b>: 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).<p> <li> <b>field_passcount</b>: 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).<p> <li> <b>field_name</b>: A name for the tag. Normally mixed case (studly caps) like "StripByteCounts" and relatively short. <p> </ul> 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. <p> 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.<p> <h2>Default Tag Auto-registration</h2> 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().<p> When tags are autodefined like this the <b>field_readcount</b> and <b>field_writecount</b> values are always TIFF_VARIABLE. The <b>field_passcount</b> is always TRUE, and the <b>field_bit</b> is FIELD_CUSTOM. The field name will be "Tag %d" where the %d is the tag number.<p> <h2>Defining Application Tags</h2> 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. <p> 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:<p> <pre> 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" } }; </pre> In order to define the tags, we call TIFFMergeFieldInfo() on the desired TIFF handle with the list of TIFFFieldInfos.<p> <pre> #define N(a) (sizeof (a) / sizeof (a[0])) /* Install the extended Tag field info */ TIFFMergeFieldInfo(tif, xtiffFieldInfo, N(xtiffFieldInfo)); </pre> 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. <P> <pre> 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); } </pre> 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.<p> <pre> 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); } </pre> 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.<p> <A NAME=AddingTags><P><H2>Adding New Builtin Tags</H2></A> 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.<p> 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: <OL> <LI>Define the tag in <B>tiff.h</B>. <LI>Add a field to the directory structure in <B>tif_dir.h</B> and define a <TT>FIELD_*</TT> bit (also update the definition of <TT>FIELD_CODEC</TT> to reflect your addition). <LI>Add an entry in the <TT>TIFFFieldInfo</TT> array defined at the top of <B>tif_dirinfo.c</B>. 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. <TT>LONG</TT> before <TT>SHORT</TT>). <LI>Add entries in <TT>_TIFFVSetField()</TT> and <TT>_TIFFVGetField()</TT> for the new tag. <LI>(<I>optional</I>) If the value associated with the tag is not a scalar value (e.g. the array for <TT>TransferFunction</TT>) and requires special processing, then add the appropriate code to <TT>TIFFReadDirectory()</TT> and <TT>TIFFWriteDirectory()</TT>. You're best off finding a similar tag and cribbing code. <LI>Add support to <TT>TIFFPrintDirectory()</TT> in <B>tif_print.c</B> to print the tag's value. </OL> <P> If you want to maintain portability, beware of making assumptions about data types. Use the typedefs (<TT>uint16</TT>, etc. when dealing with data on disk and <TT>t*_t</TT> when stuff is in memory) and be careful about passing items through printf or similar vararg interfaces. <A NAME=AddingCODECTags><P><H2>Adding New Codec-private Tags</H2></A> To add tags that are meaningful <EM>only when a particular compression algorithm is used</EM> follow these steps: <OL> <LI>Define the tag in <B>tiff.h</B>. <LI>Allocate storage for the tag values in the private state block of the codec. <LI>Insure the state block is created when the codec is initialized. <LI>At <TT>TIFFInitfoo</TT> time override the method pointers in the TIFF structure for getting, setting and printing tag values. For example, <PRE> 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 */ </PRE> (Actually you may decide not to override the <TT>tif_printdir</TT> method, but rather just specify it). <LI>Create a private <TT>TIFFFieldInfo</TT> array for your tags and merge them into the core tags at initialization time using <TT>_TIFFMergeFieldInfo</TT>; e.g. <PRE> _TIFFMergeFieldInfo(tif, fooFieldInfo, N(fooFieldInfo)); </PRE> (where <TT>N</TT> is a macro used liberaly throughout the distributed code). <LI>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 <TT>FIELD_*</TT> 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 <TT>TIFFTAG_FAXMODE</TT> in <B>tif_fax3.c</B> for an example of this). <LI>Fill in the print routine, if appropriate. </OL> Note that space has been allocated in the <TT>FIELD_*</TT> bit space for codec-private tags. Define your bits as <TT>FIELD_CODEC+<offset></TT> to keep them away from the core tags. If you need more tags than there is room for, just increase <TT>FIELD_SETLONGS</TT> at the top of <B>tiffiop.h</B>. <HR> Last updated: $Date: 2016-09-25 20:05:44 $ </BODY> </HTML> PK粐\V���� � html/bugs.htmlnu�[���<HTML> <HEAD> <TITLE>Bugs and the TIFF Mailing List</TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Arial, Helvetica, Sans"> <H1> <IMG SRC=images/cover.jpg WIDTH=110 HEIGHT=110 ALIGN=left BORDER=1 HSPACE=6> Bugs, Bugzilla, and the TIFF Mailing List </H1> <P> This software is free. Please let us know when you find a problem or fix a bug. <P> Thanks to <A HREF=http://www.maptools.org/>MapTools.org</a>, 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. <P> 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 <A HREF=http://bugzilla.maptools.org/buglist.cgi?product=libtiff>http://bugzilla.maptools.org/buglist.cgi?product=libtiff</A>. Also verify that the problem is still reproducable with the current development software from CVS. <P> If you'd like to enter a new bug, you can do so at <A HREF=http://bugzilla.maptools.org/enter_bug.cgi?product=libtiff>http://bugzilla.maptools.org/enter_bug.cgi?product=libtiff</A>. <P> 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 <a href="mailto:warmerdam@pobox.com"><warmerdam@pobox.com></a> and Bob Friesenhahn <a href="mailto:bfriesen@simple.dallas.tx.us"><bfriesen@simple.dallas.tx.us></a>. <P> Of course, reporting bugs is no substitute for discussion. The <a href="mailto:tiff@lists.maptools.org">tiff@lists.maptools.org</a> 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:<p> <a href="http://lists.maptools.org/mailman/listinfo/tiff">http://lists.maptools.org/mailman/listinfo/tiff</a><P> Posts to the list are only accepted from members of the list in order to limit the amount of spam propagated.<p> A <A HREF="http://www.awaresystems.be/imaging/tiff/tml.html">Long Term Archive</a> including recent messages, and most messages back to 1993, with search capabilities is available, and has been prepared and hosted by <a href="http://www.awaresystems.be">AWare Systems</a>. <p> <HR> Last updated: $Date: 2016-04-08 02:34:03 $ </BODY> </HTML> PK粐\�b��W�W�html/build.htmlnu�[���<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta name="generator" content= "HTML Tidy for Linux (vers 25 March 2009), see www.w3.org"> <title>Building the TIFF Software Distribution</title> </head> <body bgcolor="white"> <h1><font face="Arial, Helvetica, Sans"><img src= "images/cramps.gif" width="159" height="203" align="left" border= "1" hspace="6"> Building the Software Distribution</font></h1> <ul> <li><a href="#CMAKE">Building on all systems with CMake</a>.</li> <li><a href="#UNIX">Building on a UNIX system with Autoconf</a>.</li> <li><a href="#PC">Building on an MS-DOS or Windows system with nmake</a>.</li> <li><a href="#VMS">Building on a VMS system</a>.</li> <li><a href="#Other">Building the Software on Other Systems.</a></li> </ul> <br clear="left"> 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. <hr> <a name="CMake" id="CMAKE"></a> <h2>Building on all systems with CMake</h2> CMake may be used to generate build files for most common build systems and IDEs, and supports all UNIX-like systems as well as Windows. See the <a href="http://www.cmake.org/">CMake website</a> for further details. To build the software on you need to first run <tt>cmake</tt> to configure the build and generate the system-specific build files. This reads the top-level <tt>CMakeLists.txt</tt> file, which probes the target system for necessary tools and functions, checks any options you specified to configure the build, and then outputs build files configured for your system. If using <tt>Unix Makefiles</tt>, once configuration is done, you simply run <tt>make</tt> (or <tt>gmake</tt>) to build the software and then <tt>make install</tt> to do the installation. For other build systems, you do the equivalent steps with the tool for that system. For example, on any UNIX system: <div style="margin-left: 2em"> <pre> % <b>cd ./tiff-4.0.5</b> % <b>cmake</b> <i>...lots of messages...</i> % <b>make</b> <i>...lots of messages...</i> % <b>make test</b> <i>...lots of messages...</i> # <b>make install</b> </pre></div> Building is dependent on a <tt>make</tt> utility and a C (and optionally a C++ compiler), so you will need these tools. <p>In general, the software is designed such that the following targets will always be available</p> <div style="margin-left: 2em"> <pre> make [all] build stuff make test run the test suite make install build and install stuff make clean remove object files, executables and cruft </pre></div> <a name="CMakeBuildTrees" id= "CMakeBuildTrees"></a> <hr width="65%" align="right"> <h3>Build Trees</h3> 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. <div style="margin-left: 2em"> <pre> % <b>gzip -dc tiff-4.0.5.tar.gz | tar -xf -</b> % <b>cd ./tiff-4.0.5</b> % <b>cmake</b> % <b>make</b> % <b>make test</b> % <b>make install</b> </pre></div> <p>Otherwise, you can configure a build tree that is parallel to the source tree hierarchy (or in some completely different place) but which contains only configured files and files created during the build procedure.</p> <div style="margin-left: 2em"> <pre> % <b>gzip -dc tiff-4.0.5.tar.gz | tar -xf -</b> % <b>mkdir tiff-4.0.5-build</b> % <b>cd ./tiff-4.0.5-build</b> % <b>cmake ../tiff-4.0.5</b> % <b>make</b> % <b>make test</b> % <b>make install</b> </pre></div> This second scheme is useful for: <ul> <li>building multiple targets from a single source tree</li> <li>building from a read-only source tree (e.g. if you receive the distribution on CD-ROM)</li> <li>sharing the source files via a network, but building on multiple systems</li> <li>keeping the source tree clean (unlike <tt>autoconf</tt>, <tt>cmake</tt> does not provide a <tt>distclean</tt> target, so out of source builds are recommended)</li> </ul> <a name="CMakeGenerators" id= "CMakeGenerators"></a> <hr width="65%" align="right"> <h3>Generators</h3> The default generator for UNIX is <tt>Unix Makefiles</tt>, and on Windows is <tt>NMake Makefiles</tt> or MSBuild depending upon the setup. Run <b>cmake --help</b> to list all the generators available for your platform. For example, to use the Ninja <a href="https://martine.github.io/ninja/">build system</a> on UNIX or Windows: <pre> <b>cmake -G Ninja</b> <b>cmake --build .</b> <b>ctest -V</b> <b>cmake --build . --target install</b> </pre> <p>Note that <b>cmake --build .</b> is a build-system-independent way of building a target; you can always use the build system directly.</p> <p>Alternatively, using the MSBuild system on Windows (64-bit Release build with VS2013): </p> <pre> <b>cmake -G "Visual Studio 12 2013 Win64"</b> <b>cmake --build . --config Release</b> <b>ctest -V -C Release</b> <b>cmake --build . --config Release --target install</b> </pre> With the above configuration, it's also possible to open the generated solution file with the Visual Studio IDE as well as building on the command-line. <a name="CMakeConfigOptions" id="CMakeConfigOptions"></a> <hr width="65%" align="right"> <h3>Configuration Options</h3> The configuration process is critical to the proper compilation, installation, and operation of the software. The <tt>CMakeLists.txt</tt> 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. After running <tt>cmake</tt>, check the <tt>CMakeCache.txt</tt> file; this contains all the results of the checks performed and the options set by the user. If <tt>cmake</tt> failed to run, check <tt>CMakeFiles/CMakeOutput.log</tt> and <tt>CMakeFiles/CMakeError.log</tt>; these should record the error which caused the failure. <p>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 <b>/usr/local</b> hierarchy. To change this behaviour the appropriate parameters can be specified on the command line. Run <b>cmake --help</b> to get a full list of possible options, and <b>cmake -LH</b> to list all the configurable options for this software package, or <b>cmake -LAH</b> to show all advanced options in addition. Standard installation related options are shown below.</p> <pre> <tt> Installation directories: CMAKE_INSTALL_PREFIX Fine tuning of the installation directories: CMAKE_INSTALL_BINDIR user executables [PREFIX/bin] CMAKE_INSTALL_SBINDIR system admin executables [PREFIX/sbin] CMAKE_INSTALL_LIBEXECDIR program executables [PREFIX/libexec] CMAKE_INSTALL_SYSCONFDIR read-only single-machine data [PREFIX/etc] CMAKE_INSTALL_SHAREDSTATEDIR modifiable architecture-independent data [PREFIX/com] CMAKE_INSTALL_LOCALSTATEDIR modifiable single-machine data [PREFIX/var] CMAKE_INSTALL_LIBDIR object code libraries [PREFIX/lib] CMAKE_INSTALL_INCLUDEDIR C header files [PREFIX/include] CMAKE_INSTALL_OLDINCLUDEDIR C header files for non-gcc [/usr/include] CMAKE_INSTALL_DATAROOTDIR read-only arch.-independent data root [PREFIX/share] CMAKE_INSTALL_DATADIR read-only architecture-independent data [DATAROOTDIR] CMAKE_INSTALL_LOCALEDIR locale-dependent data [DATAROOTDIR/locale] CMAKE_INSTALL_MANDIR man documentation [DATAROOTDIR/man] CMAKE_INSTALL_DOCDIR documentation root [DATAROOTDIR/doc/tiff] </tt> </pre> Also see the CMake <a href="http://www.cmake.org/cmake/help/v3.3/">documentation</a> for <a href="http://www.cmake.org/cmake/help/v3.3/manual/cmake-variables.7.html" >additional variables</a> which may be set. <a name="CMakePackages" id="CMakePackages"></a> <hr width="65%" align="right"> <h3>Configuring Optional Packages/Support</h3> 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 <b>cmake</b> commandline parameters. <dl> <dt><i>Static/Shared Objects Support</i></dt> <dd><tt>BUILD_SHARED_LIBS[=ON|OFF] build shared libraries [default=ON]</tt><br> <p>This option controls 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 libraries are not used then the code is statically linked into each application that uses it. </p> <p><tt>ld-version-script[=ON|OFF] Enable linker version script (default is ON)</tt></p> <p>Add shared library symbol versioning on ELF-based systems (e.g. Linux and FreeBSD) which use the GNU linker. This is needed if several major versions of libtiff might be loaded at once into the same program.</p> </dd> <dt><i>JPEG Support</i></dt> <dd><tt>jpeg[=ON|OFF] enable IJG JPEG library usage (required for JPEG compression, enabled by default)<br> JPEG_INCLUDE_DIR=DIR location of IJG JPEG library headers<br> JPEG_LIBRARY=DIR location of IJG JPEG library binary)</tt></dd> <dd>The <tt>JPEG</tt> package enables support for the handling of TIFF images with JPEG-encoded data. Support for JPEG-encoded data requires the Independent JPEG Group (IJG) <tt>libjpeg</tt> distribution; this software is available at <a href= "http://www.ijg.org/">http://www.ijg.org/</a>. <b>cmake</b> script automatically tries to search for a 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 options for that.</dd> <dt><i>ZIP Support</i></dt> <dd>The <tt>ZIP</tt> support enables support for the handling of TIFF images with deflate-encoded data (enabled by default if available). Support for deflate-encoded data requires the freely available <tt>zlib</tt> distribution written by Jean-loup Gailly and Mark Adler; this software is available at <a href= "http://www.zlib.org/">http://www.zlib.org/</a>.</dd> </dl> <a name="Sample" id="Sample"></a> <hr width="65%" align="right"> <a name="UNIX" id="UNIX"></a> <h2>Building on a UNIX System with Autoconf</h2> 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 <tt>make</tt> (or <tt>gmake</tt>) to build the software and then <tt>make install</tt> to do the installation; for example: <div style="margin-left: 2em"> <pre> % <b>cd ./tiff-4.0.5</b> % <b>./configure</b> <i>...lots of messages...</i> % <b>make</b> <i>...lots of messages...</i> % <b>make check</b> <i>...lots of messages...</i> # <b>make install</b> </pre></div> Supplied makefiles are dependent on a <tt>make</tt> utility and a C (and optionally a C++ compiler), so you will need these tools. <p>In general, the software is designed such that the following should be ``<i>make-able</i>'' in each directory:</p> <div style="margin-left: 2em"> <pre> make [all] build stuff make check run the test suite make install build and install stuff make clean remove object files, executables and cruft make distclean remove everything, that can be recreated </pre></div> Note that after running "<tt>make distclean</tt>" the <tt>configure</tt> script must be run again to create the Makefiles and other make-related files. <a name="BuildTrees" id= "BuildTrees"></a> <hr width="65%" align="right"> <h3>Build Trees</h3> 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. <div style="margin-left: 2em"> <pre> % <b>gzip -dc tiff-4.0.5.tar.gz | tar -xf -</b> % <b>cd ./tiff-4.0.5</b> % <b>./configure</b> % <b>make</b> % <b>make check</b> % <b>make install</b> </pre></div> <p>Otherwise, you can configure a build tree that is parallel to the source tree hierarchy (or in some completely different place) but which contains only configured files and files created during the build procedure.</p> <div style="margin-left: 2em"> <pre> % <b>gzip -dc tiff-4.0.5.tar.gz | tar -xf -</b> % <b>mkdir tiff-4.0.5-build</b> % <b>cd ./tiff-4.0.5-build</b> % <b>../tiff-4.0.5/configure</b> % <b>make</b> % <b>make check</b> % <b>make install</b> </pre></div> This second scheme is useful for: <ul> <li>building multiple targets from a single source tree</li> <li>building from a read-only source tree (e.g. if you receive the distribution on CD-ROM)</li> <li>sharing the source files via a network, but building on multiple systems</li> </ul> <a name="ConfigOptions" id="ConfigOptions"></a> <hr width="65%" align="right"> <h3>Configuration Options</h3> 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. <p>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 <b>/usr/local</b> hierarchy. To change this behaviour the appropriate parameters can be specified on the command line to configure. Run <b>./configure --help</b> to get a full list of possible options. Standard installation related options are shown below.</p> <pre> <tt> 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] --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] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/tiff] --htmldir=DIR html documentation [DOCDIR] 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 </tt> </pre> <a name="Packages" id="Packages"></a> <hr width="65%" align="right"> <h3>Configuring Optional Packages/Support</h3> 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 <b>configure</b> script commandline parameters. <dl> <dt><i>Static/Shared Objects Support</i></dt> <dd><tt>--enable-shared[=PKGS] build shared libraries [default=yes]<br> --enable-static[=PKGS] build static libraries [default=yes]</tt> <p>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 libraries are not used then the code is statically linked into each application that uses it. By default both types of binaries is configured.</p> <p> <tt>--enable-rpath Enable runtime linker paths (-R libtool option)</tt></p> <p>Add library directories (see other options below) to the TIFF library run-time linker path.</p> <p><tt>--enable-ld-version-script Enable linker version script (default is disabled)</tt></p> <p>Add shared library symbol versioning on ELF-based systems (e.g. Linux and FreeBSD) which use the GNU linker. This is needed if several major versions of libtiff might be loaded at once into the same program.</p> </dd> <dt><i>JPEG Support</i></dt> <dd><tt>--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)</tt></dd> <dd>The <tt>JPEG</tt> package enables support for the handling of TIFF images with JPEG-encoded data. Support for JPEG-encoded data requires the Independent JPEG Group (IJG) <tt>libjpeg</tt> distribution; this software is available at <a href= "http://www.ijg.org/">http://www.ijg.org/</a>. <b>configure</b> script automatically tries to search for a 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.</dd> <dt><i>ZIP Support</i></dt> <dd>The <tt>ZIP</tt> support enables support for the handling of TIFF images with deflate-encoded data. Support for deflate-encoded data requires the freely available <tt>zlib</tt> distribution written by Jean-loup Gailly and Mark Adler; this software is available at <a href= "http://www.zlib.org/">http://www.zlib.org/</a>. If ZIP support is enabled the <tt>DIRS_LIBINC</tt> and <tt>DIR_GZLIB</tt> parameters should also be set (see below). By default this package is not configured.</dd> </dl> <a name="Sample" id="Sample"></a> <hr width="65%" align="right"> <a name="PC" id="PC"></a> <h2>Building the Software under Windows 2000/XP/7/8/10 with nmake</h2> 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 <tt>makefile.vc</tt>. <p>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 <a href= "http://www.info-zip.org/pub/infozip/">Info-Zip</a> package, you can extract the files using Windows normal line termination conventions with a command similar to:</p> <pre> unzip -aa -a tiff-4.0.5.zip </pre> <p>By default the nmake-based libtiff build does not depend on any additional libraries. Normally libtiff should be built with at least JPEG and ZIP support so that it can open JPEG and ZIP-compressed TIFF files. In order to add additional libraries (e.g. libjpeg, zlib, jbigkit), build those libraries according to their own particular build instructions, and then edit 'nmake.opt' (using a capable plain-text editor) to enable use of the libraries, including specifying where the libraries are installed. It is also necessary to edit libtiff/tiffconf.vc.h to enable the related configuration defines (<em>JPEG_SUPPORT</em>, <em>OJPEG_SUPPORT</em>, <em>PIXARLOG_SUPPORT</em>, <em>ZIP_SUPPORT</em>), or to disable features which are normally included by default. Ignore the comment at the top of the libtiff/tiffconf.vc.h file which says that it has no influence on the build, because the statement is not true for Windows. Please note that the nmake build copies tiffconf.vc.h to tiffconf.h, and copies tif_config.vc.h to tif_config.h, overwriting any files which may be present. Likewise, the 'nmake clean' step removes those files.</p> <p>To build using the provided makefile.vc you may use:</p> <pre> C:\tiff-4.0.5> nmake /f makefile.vc clean C:\tiff-4.0.5> nmake /f makefile.vc or (the hard way) C:\tiff-4.0.5> cd port C:\tiff-4.0.5\port> nmake /f makefile.vc clean C:\tiff-4.0.5\port> nmake /f makefile.vc C:\tiff-4.0.5> cd ../libtiff C:\tiff-4.0.5\libtiff> nmake /f makefile.vc clean C:\tiff-4.0.5\libtiff> nmake /f makefile.vc C:\tiff-4.0.5\libtiff> cd ..\tools C:\tiff-4.0.5\tools> nmake /f makefile.vc clean C:\tiff-4.0.5\tools> nmake /f makefile.vc </pre> <p>This will build the library file <tt>libtiff\libtiff\libtiff.lib</tt>.</p> <p>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.</p> <p>The <tt>libtiff\tools\makefile.vc</tt> should build .exe's for all the standard TIFF tool programs.</p> <hr> <a name="VMS" id="VMS"></a> <h2>Building the Software on a VMS System</h2> The VMS port was done by Karsten Spang (<a href= "mailto:krs@kampsax.dk">krs@kampsax.dk</a>), who also "sort of" maintains it. The VMS specific files are not in the main directories. Instead they are placed under <tt>[.CONTRIB.VMS...]</tt> 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]. <ol> <li>Move the VMS specific files to their proper directories. <pre> $ SET DEFAULT DISK:[TIFF.CONTRIB.VMS] $ RENAME [.LIBTIFF]*.* [-.-.LIBTIFF] $ RENAME [.TOOLS]*.* [-.-.TOOLS] </pre></li> <li>Compile the library. <pre> $ SET DEFAULT DISK:[TIFF.LIBTIFF] $ @MAKEVMS </pre></li> <li>Compile the tools. <pre> $ SET DEFAULT DISK:[TIFF.TOOLS] $ @MAKEVMS </pre></li> <li>Define the programs. <pre> $ 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 </pre></li> </ol> You will want to add these lines to your <tt>LOGIN.COM</tt> file, after changing the name of the directory that you have used on your machine. <p>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*.</p> <p>The command procedures (<tt>MAKEVMS.COM</tt>) for building the library and tools, is believed to choose the correct options for the VAX and AXP cases automatically.</p> <p>On the AXP, IEEE floating point is used by default. If you want VAX floating point, remove the <tt>/FLOAT=IEEE_FLOAT</tt> qualifier, and change <tt>HAVE_IEEEFP=1</tt> to <tt>HAVE_IEEEFP=0</tt> in the <tt>MAKEVMS.COM</tt> files in both the <b>libtiff</b> and <b>tools</b> directories.</p> <h3>Compiling your own program on a VMS system:</h3> When compiling a source file in which you <tt>"#include <tiffio.h>"</tt>, use the following command <pre> $ CC/INCLUDE=DISK:[TIFF.LIBTIFF] </pre> This ensures that the header file is found. On the AXP, also add <tt>/FLOAT=IEEE_FLOAT</tt> (if used when building the library). <h3>Linking your own program to the TIFF library on a VMS system:</h3> 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: <ol> <li>Using the shareable TIFF library. <pre> $ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/OPTIONS,SYS$INPUT:/OPTIONS SYS$SHARE:VAXCRTL/SHAREABLE </pre></li> <li>Using the TIFF object library. <pre> $ LINK MY_PROGRAM, - DISK:[TIFF.LIBTIFF]TIFF/LIBRARY/INCLUDE=(TIF_FAX3SM,TIF_CODEC), - SYS$INPUT:/OPTIONS SYS$SHARE:VAXCRTL/SHAREABLE </pre></li> </ol> On AXP (and possibly also using DEC C on VAX) the corresponding commands are <ol> <li>Using the shareable TIFF library. <pre> $ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/OPTIONS </pre></li> <li>Using the TIFF object library. <pre> $ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/LIBRARY </pre></li> </ol> Method 1 uses the shortest link time and smallest <tt>.EXE</tt> files, but it requires that <tt>TIFFSHR</tt> is defined as above at link time and <strong>at run time</strong>. Using the compilation procedure above, the tools are linked in this way. <p>Method 2 gives somewhat longer link time and larger <tt>.EXE</tt> files, but does not require <tt>TIFFSHR</tt> 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.</p> <hr> <a name="Other" id="Other"></a> <h2>Building the Software on Other Systems</h2> 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 <b>libtiff</b> directory. <p>The library requires two files that are generated <i>on-the-fly</i>. The file <b>tif_fax3sm.c</b> has the state tables for the Group 3 and Group 4 decoders. This file is generated by the <tt>mkg3states</tt> program on a UNIX system; for example,</p> <div style="margin-left: 2em"> <pre> <tt> cd libtiff cc -o mkg3states mkg3states.c rm -f tif_fax3sm.c ./mkg3states -c const tif_fax3sm.c </tt> </pre></div> The <tt>-c</tt> option can be used to control whether or not the resutling tables are generated with a <tt>const</tt> declaration. The <tt>-s</tt> option can be used to specify a C storage class for the table declarations. The <tt>-b</tt> 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. <p>The second file required to build the library, <b>version.h</b>, contains the version information returned by the <tt>TIFFGetVersion</tt> routine. This file is built on most systems using the <tt>mkversion</tt> program and the contents of the <tt>VERSION</tt> and <tt>tiff.alpha</tt> files; for example,</p> <div style="margin-left: 2em"> <pre> cd libtiff cc -o mkversion mkversion.c rm -f version.h ./mkversion -v ../VERSION -a ../dist/tiff.alpha version.h </pre></div> <p>Otherwise, when building the library on a non-UNIX system be sure to consult the files <b>tiffcomp.h</b> and <b>tiffconf.h</b>. 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.</p> <p>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 <a href= "internals.html#Config">documentation</a>.</p> <p>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 <b>port</b> directory is provided to emulate routines that may be missing on some systems. On UNIX systems the <tt>configure</tt> script automatically figures out which routines are not present on a system and enables the use of the equivalent emulation routines from the <b>port</b> directory. It may be necessary to manually do this work on a non-UNIX system. <a name= "Testing" id="Testing"></a></p> <hr> <h2>Checking out the Software</h2> <p>Assuming you have working versions of <tt>tiffgt</tt> and <tt>tiffsv</tt>, you can just use them to view any of the sample images available for testing (see the <a href="images.html">section on obtaining the test images</a>). Otherwise, you can do a cursory check of the library with the <tt>tiffcp</tt> and <tt>tiffcmp</tt> programs. For example,</p> <div style="margin-left: 2em"> <pre> tiffcp -lzw cramps.tif x.tif tiffcmp cramps.tif x.tif </pre></div> <p>(<tt>tiffcmp</tt> should be silent if the files compare correctly). <a name="TOC" id="TOC"></a></p> <hr> <h2>Table of Contents</h2> The following files makup the core library: <pre> 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_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. </pre> <hr> Last updated: $Date: 2015-08-29 15:30:11 $ </body> </html> PK粐\ �k��html/contrib.htmlnu�[���<HTML> <HEAD> <TITLE> Contributed TIFF Software </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Arial, Helvetica, Sans"> <H1> <IMG SRC=images/smallliz.jpg WIDTH=144 HEIGHT=108 ALIGN=left BORDER=1 HSPACE=6> Contributed TIFF Software </H1> <P> The <B>contrib</B> 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). <BR CLEAR=left> <P> <TABLE BORDER CELLPADDING=3> <TR> <TD VALIGN=top> <B>contrib/vms</B> </TD> <TD> scripts and files from Karsten Spang for building the library and tools under VMS </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/dbs</B> </TD> <TD> various tools from Dan & Chris Sears, including a simple X-based viewer </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/ras</B> </TD> <TD> two programs by Patrick Naughton for converting between Sun rasterfile format and TIFF (these require <TT>libpixrect.a</TT>, as opposed to the one in tools that doesn't) </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/mac-mpw</B><br> <B>contrib/mac-cw</B> </TD> <TD> scripts and files from Niles Ritter for building the library and tools under Macintosh/MPW C and code warrior. </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/acorn</B> </TD> <TD> scripts and files from Peter Greenham for building the library and tools on an Acorn RISC OS system. </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/win32</B> </TD> <TD> 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.) </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/win_dib</B> </TD> <TD> two separate implementations of TIFF to DIB code suitable for any Win32 platform. Contributed by Mark James, and Philippe Tenenhaus. </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/ojpeg</B> </TD> <TD> Patch for IJG JPEG library related to support for some Old JPEG in TIFF files. Contributed by Scott Marovich. </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/dosdjgpp</B> </TD> <TD> scripts and files from Alexander Lehmann for building the library under MSDOS with the DJGPP v2 compiler. </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/tags</B> </TD> <TD> scripts and files from Niles Ritter for adding private tag support at runtime, without changing libtiff. </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/mfs</B> </TD> <TD> code from Mike Johnson to read+write images in memory without modifying the library </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/pds</B> </TD> <TD> various routines from Conrad Poelman; a TIFF image iterator and code to support ``private sub-directories'' </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/iptcutil</B> </TD> <TD> A utility by <A HREF=mailto:billr@corbis.com>Bill Radcliffe</a> 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 <A HREF=http://www.ImageMagick.org/>ImageMagick</a> convert(1) utility. </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/addtiffo</B> </TD> <TD> A utility (and supporting subroutine) for building one or more reduce resolution overviews to an existing TIFF file. Supplied by <a href="http://pobox.com/~warmerdam">Frank Warmerdam</a>. </TD> </TR> <TR> <TD VALIGN=top> <B>contrib/stream</B> </TD> <TD> A class (TiffStream) for accessing TIFF files through a C++ stream interface. Supplied by <a href="mailto:avi@shutterfly.com">Avi Bleiweiss</a>. </TD> </TR> </TABLE> <P> Questions regarding these packages are usually best directed toward their authors. <P> <HR> Last updated: $Date: 2016-09-25 20:05:44 $ </BODY> </HTML> PK粐\EyD66html/document.htmlnu�[���<HTML> <HEAD> <TITLE> TIFF Documentation </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Arial, Helvetica, Sans"> <H1> <IMG SRC=images/jim.gif WIDTH=139 HEIGHT=170 ALIGN=left BORDER=1 HSPACE=6> TIFF Documentation </H1> <P> A copy of the 6.0 specification is available from Adobe at <A HREF="http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf">http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf</A>, or from the libtiff ftp site at <a href="ftp://download.osgeo.org/libtiff/doc/TIFF6.pdf"> ftp://download.osgeo.org/libtiff/doc/TIFF6.pdf</A>.<p> <P> Draft <a href="TIFFTechNote2.html">TIFF Technical Note #2</A> covers problems with the TIFF 6.0 design for embedding JPEG-compressed data in TIFF, and describes an alternative. <p> Other Adobe information on TIFF can be retrieved from: <A HREF="http://partners.adobe.com/public/developer/tiff/index.html"> http://partners.adobe.com/public/developer/tiff/index.html</A> <P> Joris Van Damme maintains a list of known tags and their descriptions and definitions. It is available online at <A HREF="http://www.awaresystems.be/imaging/tiff/tifftags.html"> http://www.awaresystems.be/imaging/tiff/tifftags.html</A> <P> There is a FAQ, related both to TIFF format and libtiff library: <A HREF="http://www.awaresystems.be/imaging/tiff/faq.html"> http://www.awaresystems.be/imaging/tiff/faq.html</A> <P> There is a preliminary <a href="bigtiffdesign.html">BigTIFF Design</a> for a TIFF variation supporting files larger than 4GB. <HR> <ADDRESS> Last updated: $Date: 2016-09-25 20:05:44 $ </ADDRESS> </BODY> </HTML> PK粐\�]��22html/images.htmlnu�[���<HTML> <HEAD> <TITLE> TIFF Test Images </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Arial, Helvetica, Sans"> <H1> <IMG SRC=images/bali.jpg WIDTH=158 HEIGHT=107 ALIGN=left BORDER=1 HSPACE=6> TIFF Test Images </H1> <P> 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. <BR CLEAR=left> <P> The latest archive of test images is located at <A HREF="ftp://download.osgeo.org/libtiff/pics-3.8.0.tar.gz"> ftp://download.osgeo.org/libtiff/pics-3.8.0.tar.gz</A> <P> There are two other good sources for TIFF test images: the contributed software <B>contrib/dbs</B> includes several programs that generate test images suitable for debugging, and the <TT>tiffcp</TT> program can be used to generate a variety of images with different storage characteristics. <P> <HR> Last updated: $Date: 2016-09-25 20:05:44 $ </BODY> </HTML> PK粐\�Y,��html/index.htmlnu�[���<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="en"> <head> <title>LibTIFF - TIFF Library and Utilities</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="content-language" content="en"> <style type="text/css"> <!-- th {text-align: left; vertical-align: top; padding-right: 1em; white-space: nowrap} --> </style> </head> <body lang="en" text="#000000" bgcolor="#ffffff" link="#0000ff" alink="#0000ff" vlink="#0000ff"> <h1>LibTIFF - TIFF Library and Utilities</h1> <hr> <table cellspacing="0" cellpadding="0" border="0"> <tr> <th>Home Page #1</th> <td><a href="http://www.simplesystems.org/libtiff/" title="Home of the LibTIFF software">http://www.simplesystems.org/libtiff/</a></td> </tr> <tr> <th>Home Page #2</th> <td><a href="http://libtiff.maptools.org/" title="Mirror of the LibTIFF software">http://libtiff.maptools.org/</a></td> </tr> <tr> <th>Latest Stable Release</th> <td><a href="v4.0.9.html">v4.0.9</a></td> </tr> <tr> <th>Master Download Site</th> <td><a href="ftp://download.osgeo.org/libtiff">download.osgeo.org</a>, directory libtiff</td> </tr> <tr> <th>Mailing List</th> <td><a href="mailto:tiff@lists.maptools.org">tiff@lists.maptools.org</a>, <a href="http://lists.maptools.org/mailman/listinfo/tiff/">Subscription</a>, <a href="http://www.awaresystems.be/imaging/tiff/tml.html">Archive</a>. Please, read the <a href="http://www.awaresystems.be/imaging/tiff/faq.html">TIFF FAQ</a> before asking questions.</td> </tr> <tr> <th>Anonymous CVS</th> <td><tt>export CVSROOT=:pserver:cvsanon@cvs.maptools.org:/cvs/maptools/cvsroot<br> cvs login</tt><br> (use empty password)<br> <tt>cvs checkout libtiff<br></tt> to get the stable libtiff code or<br> <tt>cvs checkout -r branch-3-9 libtiff</tt><br> to get the previous stable branch supporting the 3.9.X release series.</td> </tr> </table> <hr> <p> This software provides support for the <i>Tag Image File Format</i> (TIFF), a widely used format for storing image data. The latest version of the TIFF specification is <a href="document.html">available on-line</a> in several different formats. </p> <p> 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, and OpenVMS. It should be possible to port libtiff and additional tools on other OSes. </p> <p> 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. </p> <p> The software was originally authored and maintained by Sam Leffler but has been maintained by a cast of others since 1999. </p> <p> Questions should be sent to the TIFF mailing list: <a href="mailto:tiff@lists.maptools.org">tiff@lists.maptools.org</a>, with a subscription interface at <a href="http://lists.maptools.org/mailman/listinfo/tiff">http://lists.maptools.org/mailman/listinfo/tiff</a>. </p> <p> The persons currently actively maintaining and releasing libtiff are <a href="mailto:even.rouault@spatialys.com">Even Rouault</a> and <a href="mailto:bfriesen@GraphicsMagick.org">Bob Friesenhahn</a>. </p> <p>Significant maintainers in the past (since the 3.5.1 release) are <a href="http://pobox.com/~warmerdam">Frank Warmerdam</a>, <a href="mailto:dron@ak4719.spb.edu">Andrey Kiselev</a>, Joris Van Damme, and Lee Howard. </p> <p> The following sections are included in this documentation: </p> <ul> <li><a href="support.html">TIFF 6.0 specification coverage</a></li> <li><a href="libtiff.html">Using the TIFF Library</a></li> <li><a href="internals.html">Modifying the TIFF Library</a> and <a href="addingtags.html">Adding New Tags</a></li> <li><a href="tools.html">TIFF tools overview</a></li> <li><a href="contrib.html">Contributed software</a></li> <li><a href="document.html">TIFF documentation</a></li> <li><a href="build.html">Building the software distribution</a></li> <li><a href="bugs.html">Bugs, Bugzilla, and the TIFF mailing list</a></li> <li><a href="images.html">Test images</a></li> <li><a href="misc.html">Acknowledgements and copyright issues</a></li> <li><a href="man/index.html">Man Pages</a></li> </ul> <p> <b>BigTIFF News</b> </p> <ul> <li><a href="BigTIFFProposal.html">BigTIFF project proposal</a> (work is completed!)</li> <li><a href="bigtiffpr.html">Press release: Currently extending LibTiff</a> (work is completed!)</li> </ul> <hr> <p> Last updated $Date: 2017-11-07 02:00:06 $. </p> </body> </html> PK粐\9�>$K$Khtml/internals.htmlnu�[���<HTML> <HEAD> <TITLE> Modifying The TIFF Library </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Arial, Helvetica, Sans"> <H1> <IMG SRC=images/dave.gif WIDTH=107 HEIGHT=148 BORDER=2 ALIGN=left HSPACE=6> Modifying The TIFF Library </H1> <P> 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: <UL> <LI><A HREF=#Config>Library Configuration</A> <LI><A HREF=#Portability>General Portability Comments</A> <LI><A HREF="#Types">Types and Portability</A> <LI><A HREF="addingtags.html">Adding New Tags</A> <LI><A HREF=#AddingCODECS>Adding New Builtin Codecs</A> <LI><A HREF="addingtags.html#AddingCODECTags">Adding New Codec-private Tags</A> <LI><A HREF=#Other>Other Comments</A> </UL> <A NAME="Config"><P><HR WIDTH=65% ALIGN=right><H3>Library Configuration</H3></A> Information on compiling the library is given <A HREF=build.html>elsewhere in this documentation</A>. 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 <TT>port.h</TT> (as generated by the <TT>configure</TT> script for UNIX systems) or <B>tiffconf.h</B>. <P> Configuration defines are split into three areas: <UL> <LI>those that control which compression schemes are configured as part of the builtin codecs, <LI>those that control support for groups of tags that are considered optional, and <LI>those that control operating system or machine-specific support. </UL> <P> If the define <TT>COMPRESSION_SUPPORT</TT> is <STRONG>not defined</STRONG> then a default set of compression schemes is automatically configured: <UL> <LI>CCITT Group 3 and 4 algorithms (compression codes 2, 3, 4, and 32771), <LI>the Macintosh PackBits algorithm (compression 32773), <LI>a 4-bit run-length encoding scheme from ThunderScan (compression 32809), <LI>a 2-bit encoding scheme used by NeXT (compression 32766), and <LI>two experimental schemes intended for images with high dynamic range (compression 34676 and 34677). </UL> <P> To override the default compression behaviour define <TT>COMPRESSION_SUPPORT</TT> and then one or more additional defines to enable configuration of the appropriate codecs (see the table below); e.g. <UL><PRE> #define COMPRESSION_SUPPORT #define CCITT_SUPPORT #define PACKBITS_SUPPORT </PRE></UL> Several other compression schemes are configured separately from the default set because they depend on ancillary software packages that are not distributed with <TT>libtiff</TT>. <P> Support for JPEG compression is controlled by <TT>JPEG_SUPPORT</TT>. The JPEG codec that comes with <TT>libtiff</TT> 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 <A HREF=ftp://ftp.uu.net/graphics/jpeg>ftp.uu.net:/graphics/jpeg/</A>. <P> <IMG SRC="images/info.gif" ALT="NOTE: " ALIGN=left HSPACE=8> <EM>Enabling JPEG support automatically enables support for the TIFF 6.0 colorimetry and YCbCr-related tags.</EM> <P> Experimental support for the deflate algorithm is controlled by <TT>DEFLATE_SUPPORT</TT>. The deflate codec that comes with <TT>libtiff</TT> is designed for use with version 0.99 or later of the freely available <TT>libz</TT> library written by Jean-loup Gailly and Mark Adler. The data format used by this library is described in the files <A HREF=ftp://ftp.uu.net/pub/archiving/zip/doc/zlib-3.1.doc>zlib-3.1.doc</A>, and <A HREF=ftp://ftp.uu.net/pub/archiving/zip/doc/deflate-1.1.doc>deflate-1.1.doc</A>, available in the directory <A HREF=ftp://ftp.uu.net/pub/archiving/zip/doc>ftp.uu.net:/pub/archiving/zip/doc</A>.</EM> The library can be retried from the directory <A HREF=ftp://ftp.uu.net/pub/archiving/zip/zlib/>ftp.uu.net:/pub/archiving/zip/zlib/</A> (or try <A HREF=ftp://quest.jpl.nasa.gov/beta/zlib/>quest.jpl.nasa.gov:/beta/zlib/</A>). <P> <IMG SRC="images/warning.gif" ALT="NOTE: " ALIGN=left HSPACE=8 VSPACE=6> <EM>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.</EM> <P> By default <B>tiffconf.h</B> defines <TT>COLORIMETRY_SUPPORT</TT>, <TT>YCBCR_SUPPORT</TT>, and <TT>CMYK_SUPPORT</TT>. <P> <TABLE BORDER CELLPADDING=3> <TR><TH ALIGN=left>Define</TH><TH ALIGN=left>Description</TH></TR> <TR> <TD VALIGN=top><TT>CCITT_SUPPORT</TT></TD> <TD>CCITT Group 3 and 4 algorithms (compression codes 2, 3, 4, and 32771)</TD> </TR> <TR> <TD VALIGN=top><TT>PACKBITS_SUPPORT</TT></TD> <TD>Macintosh PackBits algorithm (compression 32773)</TD> </TR> <TR> <TD VALIGN=top><TT>LZW_SUPPORT</TT></TD> <TD>Lempel-Ziv & Welch (LZW) algorithm (compression 5)</TD> </TR> <TR> <TD VALIGN=top><TT>THUNDER_SUPPORT</TT></TD> <TD>4-bit run-length encoding scheme from ThunderScan (compression 32809)</TD> </TR> <TR> <TD VALIGN=top><TT>NEXT_SUPPORT</TT></TD> <TD>2-bit encoding scheme used by NeXT (compression 32766)</TD> </TR> <TR> <TD VALIGN=top><TT>OJPEG_SUPPORT</TT></TD> <TD>obsolete JPEG scheme defined in the 6.0 spec (compression 6)</TD> </TR> <TR> <TD VALIGN=top><TT>JPEG_SUPPORT</TT></TD> <TD>current JPEG scheme defined in TTN2 (compression 7)</TD> </TR> <TR> <TD VALIGN=top><TT>ZIP_SUPPORT</TT></TD> <TD>experimental Deflate scheme (compression 32946)</TD> </TR> <TR> <TD VALIGN=top><TT>PIXARLOG_SUPPORT</TT></TD> <TD>Pixar's compression scheme for high-resolution color images (compression 32909)</TD> </TR> <TR> <TD VALIGN=top><TT>SGILOG_SUPPORT</TT></TD> <TD>SGI's compression scheme for high-resolution color images (compression 34676 and 34677)</TD> </TR> <TR> <TD VALIGN=top><TT>COLORIMETRY_SUPPORT</TT></TD> <TD>support for the TIFF 6.0 colorimetry tags</TD> </TR> <TR> <TD VALIGN=top><TT>YCBCR_SUPPORT</TT></TD> <TD>support for the TIFF 6.0 YCbCr-related tags</TD> </TR> <TR> <TD VALIGN=top><TT>CMYK_SUPPORT</TT></TD> <TD>support for the TIFF 6.0 CMYK-related tags</TD> </TR> <TR> <TD VALIGN=top><TT>ICC_SUPPORT</TT></TD> <TD>support for the ICC Profile tag; see <I>The ICC Profile Format Specification</I>, Annex B.3 "Embedding ICC Profiles in TIFF Files"; available at <A HREF=http://www.color.org>http://www.color.org</A> </TD> </TR> </TABLE> <A NAME="Portability"><P><HR WIDTH=65% ALIGN=right><H3>General Portability Comments</H3></A> This software is developed on Silicon Graphics UNIX systems (big-endian, MIPS CPU, 32-bit ints, IEEE floating point). The <TT>configure</TT> 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. <P> 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. <P> The software is written to assume an ANSI C compilation environment. If your compiler does not support ANSI function prototypes, <TT>const</TT>, and <TT><stdarg.h></TT> then you will have to make modifications to the software. In the past I have tried to support compilers without <TT>const</TT> and systems without <TT><stdarg.h></TT>, but I am <EM>no longer interested in these antiquated environments</EM>. With the general availability of the freely available GCC compiler, I see no reason to incorporate modifications to the software for these purposes. <P> An effort has been made to isolate as many of the operating system-dependencies as possible in two files: <B>tiffcomp.h</B> and <B>libtiff/tif_<os>.c</B>. The latter file contains operating system-specific routines to do I/O and I/O-related operations. The UNIX (<B>tif_unix.c</B>), Macintosh (<B>tif_apple.c</B>), and VMS (<B>tif_vms.c</B>) code has had the most use; the MS/DOS support (<B>tif_msdos.c</B>) assumes some level of UNIX system call emulation (i.e. <TT>open</TT>, <TT>read</TT>, <TT>write</TT>, <TT>fstat</TT>, <TT>malloc</TT>, <TT>free</TT>). <P> Native CPU byte order is determined on the fly by the library and does not need to be specified. The <TT>HOST_FILLORDER</TT> and <TT>HOST_BIGENDIAN</TT> definitions are not currently used, but may be employed by codecs for optimization purposes. <P> The following defines control general portability: <P> <TABLE BORDER CELLPADDING=3 WIDTH=100%> <TR> <TD VALIGN=top><TT>BSDTYPES</TT></TD> <TD>Define this if your system does NOT define the usual BSD typedefs: <TT>u_char</TT>, <TT>u_short</TT>, <TT>u_int</TT>, <TT>u_long</TT>.</TD> </TR> <TR> <TD VALIGN=top><TT>HAVE_IEEEFP</TT></TD> <TD>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.</TD> </TR> <TR> <TD VALIGN=top><TT>HAVE_MMAP</TT></TD> <TD>Define this if there is <I>mmap-style</I> support for mapping files into memory (used only to read data).</TD> </TR> <TR> <TD VALIGN=top><TT>HOST_FILLORDER</TT></TD> <TD>Define the native CPU bit order: one of <TT>FILLORDER_MSB2LSB</TT> or <TT>FILLORDER_LSB2MSB</TT></TD> </TR> <TR> <TD VALIGN=top><TT>HOST_BIGENDIAN</TT></TD> <TD>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</TD> </TR> </TABLE> <P> On UNIX systems <TT>HAVE_MMAP</TT> is defined through the running of the <TT>configure</TT> script; otherwise support for memory-mapped files is disabled. Note that <B>tiffcomp.h</B> defines <TT>HAVE_IEEEFP</TT> to be 1 (<TT>BSDTYPES</TT> is not defined). <A NAME="Types"><P><HR WIDTH=65% ALIGN=right><H3>Types and Portability</H3></A> 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: <P> <TABLE BORDER CELLPADDING=3 WIDTH=100%> <TR> <TD>uint8</TD> <TD>8-bit unsigned integer</TD> <TD>tiff.h</TD> </TR> <TR> <TD>int8</TD> <TD>8-bit signed integer</TD> <TD>tiff.h</TD> </TR> <TR> <TD>uint16</TD> <TD>16-bit unsigned integer</TD> <TD>tiff.h</TD> </TR> <TR> <TD>int16</TD> <TD>16-bit signed integer</TD> <TD>tiff.h</TD> </TR> <TR> <TD>uint32</TD> <TD>32-bit unsigned integer</TD> <TD>tiff.h</TD> </TR> <TR> <TD>int32</TD> <TD>32-bit signed integer</TD> <TD>tiff.h</TD> </TR> <TR> <TD>dblparam_t</TD> <TD>promoted type for floats</TD> <TD>tiffcomp.h</TD> </TR> </TABLE> <P> (to clarify <TT>dblparam_t</TT>, it is the type that float parameters are promoted to when passed by value in a function call.) <P> The following typedefs are used throughout the library and interfaces to refer to certain objects whose size is dependent on the TIFF image structure: <P> <TABLE BORDER CELLPADDING=3 WIDTH=100%> <TR> <TD WIDTH=25%>typedef unsigned int ttag_t;</TD> <TD>directory tag</TD> </TR> <TR> <TD>typedef uint16 tdir_t;</TD> <TD>directory index</TD> </TR> <TR> <TD>typedef uint16 tsample_t;</TD> <TD>sample number</TD> </TR> <TR> <TD>typedef uint32 tstrip_t;</TD> <TD>strip number</TD> </TR> <TR> <TD>typedef uint32 ttile_t;</TD> <TD>tile number</TD> </TR> <TR> <TD>typedef int32 tsize_t;</TD> <TD>i/o size in bytes</TD> </TR> <TR> <TD>typedef void* tdata_t;</TD> <TD>image data ref</TD> </TR> <TR> <TD>typedef void* thandle_t;</TD> <TD>client data handle</TD> </TR> <TR> <TD>typedef int32 toff_t;</TD> <TD>file offset (should be off_t)</TD> </TR> <TR> <TD>typedef unsigned char* tidata_t;</TD> <TD>internal image data</TD> </TR> </TABLE> <P> Note that <TT>tstrip_t</TT>, <TT>ttile_t</TT>, and <TT>tsize_t</TT> are constrained to be no more than 32-bit quantities by 32-bit fields they are stored in in the TIFF image. Likewise <TT>tsample_t</TT> is limited by the 16-bit field used to store the <TT>SamplesPerPixel</TT> tag. <TT>tdir_t</TT> constrains the maximum number of IFDs that may appear in an image and may be an arbitrary size (without penalty). <TT>ttag_t</TT> must be either <TT>int</TT>, <TT>unsigned int</TT>, pointer, or <TT>double</TT> because the library uses a varargs interface and ANSI C restricts the type of the parameter before an ellipsis to be a promoted type. <TT>toff_t</TT> is defined as <TT>int32</TT> 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 <TT>tidata_t</TT> 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. <P><HR WIDTH=65% ALIGN=right><H3>General Comments</H3></A> 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). <A NAME=AddingCODECS><P><HR WIDTH=65% ALIGN=right><H3>Adding New Builtin Codecs</H3></A> 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 <A HREF=addingtags.html>Adding New Tags</A>), or do the following to add support directly to the core library: <OL> <LI>Define the tag value in <B>tiff.h</B>. <LI>Edit the file <B>tif_codec.c</B> to add an entry to the _TIFFBuiltinCODECS array (see how other algorithms are handled). <LI>Add the appropriate function prototype declaration to <B>tiffiop.h</B> (close to the bottom). <LI>Create a file with the compression scheme code, by convention files are named <B>tif_*.c</B> (except perhaps on some systems where the tif_ prefix pushes some filenames over 14 chars. <LI>Edit <B>Makefile.in</B> (and any other Makefiles) to include the new source file. </OL> <P> A codec, say <TT>foo</TT>, can have many different entry points: <PRE> 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 */ </PRE> <P> 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 <TT>PlanarConfig</TT>=2 (separate planes). This is important for algorithms such as JPEG. If <TT>PlanarConfig</TT>=1 (interleaved), then sample will always be 0. <A NAME=Other><P><HR WIDTH=65% ALIGN=right><H3>Other Comments</H3></A> 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 <TT>TIFFFlushData1()</TT> 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 <TT>tif_postdecode</TT> routine (set it to <TT>TIFFNoPostDecode</TT>) and doing the required work internally. For an example of doing this look at the horizontal differencing code in the routines in <B>tif_predict.c</B>. <P> The variables <TT>tif_rawcc</TT>, <TT>tif_rawdata</TT>, and <TT>tif_rawcp</TT> in a <TT>TIFF</TT> structure are associated with the raw data buffer. <TT>tif_rawcc</TT> must be non-zero for the library to automatically flush data. The variable <TT>tif_scanlinesize</TT> is the size a user's scanline buffer should be. The variable <TT>tif_tilesize</TT> 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 <TT>cc</TT> parameter to the <TT>tif_decode*</TT> and <TT>tif_encode*</TT> routines should be used in terminating decompression/compression. This ensures these routines can be used, for example, to decode/encode entire strips of data. <P> In general, if you have a new compression algorithm to add, work from the code for an existing routine. In particular, <B>tif_dumpmode.c</B> has the trivial code for the "nil" compression scheme, <B>tif_packbits.c</B> is a simple byte-oriented scheme that has to watch out for buffer boundaries, and <B>tif_lzw.c</B> 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. <P> <HR> Last updated: $Date: 2016-09-25 20:05:44 $ </BODY> </HTML> PK粐\szRBZ Z html/intro.htmlnu�[���<HTML> <HEAD> <TITLE> Introduction to the TIFF Documentation </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Arial, Helvetica, Sans"> <H1> <IMG SRC=images/strike.gif WIDTH=128 HEIGHT=100 ALIGN=left HSPACE=6> Introduction to the TIFF Documentation </H1> <P> The following definitions are used throughout this documentation. They are consistent with the terminology used in the TIFF 6.0 specification. <DL> <DT><I>Sample</I> <DD>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 <DT><I>Pixel</I> <DD>A collection of one or more samples that go together. <DT><I>Row</I> <DD>An Nx1 rectangular collection of pixels. <DT><I>Tile</I> <DD>An NxM rectangular organization of data (or pixels). <DT><I>Strip</I> <DD>A tile whose width is the full image width. <DT><I>Compression</I> <DD>A scheme by which pixel or sample data are stored in an encoded form, specifically with the intent of reducing the storage cost. <DT><I>Codec</I> <DD>Software that implements the decoding and encoding algorithms of a compression scheme. </UL> <P> 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. <P> <HR> Last updated: $Date: 2016-09-25 20:05:44 $ </BODY> </HTML> PK粐\u���9�9�html/libtiff.htmlnu�[���<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="en"> <head> <title>Using The TIFF Library</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="content-language" content="en"> <style type="text/css"> <!-- th {text-align: left; vertical-align: top; font-style: italic; font-weight: normal} --> </style> </head> <body lang="en" text="#000000" bgcolor="#ffffff" link="#0000ff" alink="#0000ff" vlink="#0000ff"> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td style="padding-left: 1em; padding-right: 1em"><img src="images/cat.gif" width="113" height="146" alt=""></td> <td> <h1>Using The TIFF Library</h1> <p> <tt>libtiff</tt> 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. </p> </td> </tr> </table> <br> <p> <tt>libtiff</tt> 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. </p> <p> 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 <a href="http://www.simplesystems.org/libtiff/man/index.html">UNIX manual pages</a> that accompany this software. </p> <p> Michael Still has also written a useful introduction to libtiff for the IBM DeveloperWorks site available at <a href="http://www.ibm.com/developerworks/linux/library/l-libtiff">http://www.ibm.com/developerworks/linux/library/l-libtiff</a>. </p> <p> The following sections are found in this chapter: </p> <ul> <li><a href="#version">How to tell which version you have</a></li> <li><a href="#typedefs">Library Datatypes</a></li> <li><a href="#mman">Memory Management</a></li> <li><a href="#errors">Error Handling</a></li> <li><a href="#fio">Basic File Handling</a></li> <li><a href="#dirs">TIFF Directories</a></li> <li><a href="#tags">TIFF Tags</a></li> <li><a href="#compression">TIFF Compression Schemes</a></li> <li><a href="#byteorder">Byte Order</a></li> <li><a href="#dataplacement">Data Placement</a></li> <li><a href="#tiffrgbaimage">TIFFRGBAImage Support</a></li> <li><a href="#scanlines">Scanline-based Image I/O</a></li> <li><a href="#strips">Strip-oriented Image I/O</a></li> <li><a href="#tiles">Tile-oriented Image I/O</a></li> <li><a href="#other">Other Stuff</a></li> </ul> <hr> <h2 id="version">How to tell which version you have</h2> <p> The software version can be found by looking at the file named <tt>VERSION</tt> that is located at the top of the source tree; the precise alpha number is given in the file <tt>dist/tiff.alpha</tt>. If you have need to refer to this specific software, you should identify it as: </p> <p style="margin-left: 40px"> <tt>TIFF <<i>version</i>> <<i>alpha</i>></tt> </p> <p> where <tt><<i>version</i>></tt> is whatever you get from <tt>"cat VERSION"</tt> and <tt><<i>alpha</i>></tt> is what you get from <tt>"cat dist/tiff.alpha"</tt>. </p> <p> Within an application that uses <tt>libtiff</tt> the <tt>TIFFGetVersion</tt> routine will return a pointer to a string that contains software version information. The library include file <tt><tiffio.h></tt> contains a C pre-processor define <tt>TIFFLIB_VERSION</tt> that can be used to check library version compatiblity at compile time. </p> <hr> <h2 id="typedefs">Library Datatypes</h2> <p> <tt>libtiff</tt> defines a portable programming interface through the use of a set of C type definitions. These definitions, defined in in the files <b>tiff.h</b> and <b>tiffio.h</b>, isolate the <tt>libtiff</tt> API from the characteristics of the underlying machine. To insure portable code and correct operation, applications that use <tt>libtiff</tt> should use the typedefs and follow the function prototypes for the library API. </p> <hr> <h2 id="mman">Memory Management</h2> <p> <tt>libtiff</tt> uses a machine-specific set of routines for managing dynamically allocated memory. <tt>_TIFFmalloc</tt>, <tt>_TIFFrealloc</tt>, and <tt>_TIFFfree</tt> 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 <tt>malloc</tt>, <tt>realloc</tt>, and <tt>free</tt> routines in the C library.) </p> <p> To deal with segmented pointer issues <tt>libtiff</tt> also provides <tt>_TIFFmemcpy</tt>, <tt>_TIFFmemset</tt>, and <tt>_TIFFmemmove</tt> routines that mimic the equivalent ANSI C routines, but that are intended for use with memory allocated through <tt>_TIFFmalloc</tt> and <tt>_TIFFrealloc</tt>. </p> <hr> <h2 id="errors">Error Handling</h2> <p> <tt>libtiff</tt> 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 <tt>TIFFSetErrorHandler</tt>. Likewise warning messages are directed to a single handler routine that can be specified with a call to <tt>TIFFSetWarningHandler</tt> </p> <hr> <h2 id="fio">Basic File Handling</h2> <p> 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: </p> <p style="margin-left: 40px"> <tt>#include "tiffio.h"<br> main()<br> {<br> TIFF* tif = TIFFOpen("foo.tif", "r");<br> ... do stuff ...<br> TIFFClose(tif);<br> }</tt> </p> <p> The handle returned by <tt>TIFFOpen</tt> is <i>opaque</i>, 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. </p> <p> To create or overwrite a TIFF image the file is also opened, but with a <tt>"w"</tt> argument: <p> <p style="margin-left: 40px"> <tt>#include "tiffio.h"<br> main()<br> {<br> TIFF* tif = TIFFOpen("foo.tif", "w");<br> ... do stuff ...<br> TIFFClose(tif);<br> }</tt> </p> <p> If the file already exists it is first truncated to zero length. </p> <table> <tr> <td valign=top><img src="images/warning.gif" width="40" height="40" alt=""></td> <td><i>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.</i></td> </tr> </table> <p> <tt>libtiff</tt> buffers much information associated with writing a valid TIFF image. Consequently, when writing a TIFF image it is necessary to always call <tt>TIFFClose</tt> or <tt>TIFFFlush</tt> to flush any buffered information to a file. Note that if you call <tt>TIFFClose</tt> you do not need to call <tt>TIFFFlush</tt>. </p> <hr> <h2 id="dirs">TIFF Directories</h2> <p> TIFF supports the storage of multiple images in a single file. Each image has an associated data structure termed a <i>directory</i> 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. </p> <p> <tt>libtiff</tt> 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 <tt>TIFFClose</tt> or <tt>TIFFFlush</tt> are called). </p> <p> For a file open for reading the <tt>TIFFSetDirectory</tt> routine can be used to select an arbitrary directory; directories are referenced by number with the numbering starting at 0. Otherwise the <tt>TIFFReadDirectory</tt> and <tt>TIFFWriteDirectory</tt> 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: </p> <p style="margin-left: 40px"> <tt>#include "tiffio.h"<br> main(int argc, char* argv[])<br> {<br> TIFF* tif = TIFFOpen(argv[1], "r");<br> if (tif) {<br> int dircount = 0;<br> do {<br> dircount++;<br> } while (TIFFReadDirectory(tif));<br> printf("%d directories in %s\n", dircount, argv[1]);<br> TIFFClose(tif);<br> }<br> exit(0);<br> }</tt> </p> <p> Finally, note that there are several routines for querying the directory status of an open file: <tt>TIFFCurrentDirectory</tt> returns the index of the current directory and <tt>TIFFLastDirectory</tt> returns an indication of whether the current directory is the last directory in a file. There is also a routine, <tt>TIFFPrintDirectory</tt>, that can be called to print a formatted description of the contents of the current directory; consult the manual page for complete details. </p> <hr> <h2 id="tags">TIFF Tags</h2> <p> Image-related information such as the image width and height, number of samples, orientation, colorimetric information, etc. are stored in each image directory in <i>fields</i> or <i>tags</i>. 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. </p> <p> <tt>libtiff</tt> 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 <a href="addingtags.html">elsewhere</a>. </p> <p> <tt>libtiff</tt> provides two interfaces for getting and setting tag values: <tt>TIFFGetField</tt> and <tt>TIFFSetField</tt>. These routines use a variable argument list-style interface to pass parameters of different type through a single function interface. The <i>get interface</i> 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 <i>set interface</i> takes the tag values either by-reference or by-value. The TIFF specification defines <i>default values</i> for some tags. To get the value of a tag, or its default value if it is undefined, the <tt>TIFFGetFieldDefaulted</tt> interface may be used. </p> <p> 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. </p> <hr> <h2 id="compression">TIFF Compression Schemes</h2> <p> <tt>libtiff</tt> includes support for a wide variety of data compression schemes. In normal operation a compression scheme is automatically used when the TIFF <tt>Compression</tt> tag is set, either by opening a file for reading, or by setting the tag when writing. </p> <p> Compression schemes are implemented by software modules termed <i>codecs</i> 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 <tt>TIFFRegisterCODEC</tt> routine. This interface can also be used to override the core-library implementation for a compression scheme. </p> <hr> <h2 id="byteorder">Byte Order</h2> <p> The TIFF specification says, and has always said, that <em>a correct TIFF reader must handle images in big-endian and little-endian byte order</em>. <tt>libtiff</tt> 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). </p> <hr> <h2 id="dataplacement">Data Placement</h2> <p> 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. <tt>libtiff</tt> provides no mechanism for controlling the placement of data in a file; image data is typically written before directory information. </p> <hr> <h2 id="tiffrgbaimage">TIFFRGBAImage Support</h2> <p> <tt>libtiff</tt> 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. </p> <p> 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 <tt>TIFFReadRGBAImage</tt> can be used: </p> <p> <p style="margin-left: 40px"> <tt>#include "tiffio.h"<br> main(int argc, char* argv[])<br> {<br> TIFF* tif = TIFFOpen(argv[1], "r");<br> if (tif) {<br> uint32 w, h;<br> size_t npixels;<br> uint32* raster;<br> <br> TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &w);<br> TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &h);<br> npixels = w * h;<br> raster = (uint32*) _TIFFmalloc(npixels * sizeof (uint32));<br> if (raster != NULL) {<br> if (TIFFReadRGBAImage(tif, w, h, raster, 0)) {<br> ...process raster data...<br> }<br> _TIFFfree(raster);<br> }<br> TIFFClose(tif);<br> }<br> exit(0);<br> }</tt> </p> <p> Note above that <tt>_TIFFmalloc</tt> is used to allocate memory for the raster passed to <tt>TIFFReadRGBAImage</tt>; this is important to insure the ``appropriate type of memory'' is passed on machines with segmented architectures. </p> <p> Alternatively, <tt>TIFFReadRGBAImage</tt> 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: </p> <p style="margin-left: 40px"> <tt>#include "tiffio.h"<br> main(int argc, char* argv[])<br> {<br> TIFF* tif = TIFFOpen(argv[1], "r");<br> if (tif) {<br> TIFFRGBAImage img;<br> char emsg[1024];<br> <br> if (TIFFRGBAImageBegin(&img, tif, 0, emsg)) {<br> size_t npixels;<br> uint32* raster;<br> <br> npixels = img.width * img.height;<br> raster = (uint32*) _TIFFmalloc(npixels * sizeof (uint32));<br> if (raster != NULL) {<br> if (TIFFRGBAImageGet(&img, raster, img.width, img.height)) {<br> ...process raster data...<br> }<br> _TIFFfree(raster);<br> }<br> TIFFRGBAImageEnd(&img);<br> } else<br> TIFFError(argv[1], emsg);<br> TIFFClose(tif);<br> }<br> exit(0);<br> }</tt> </p> <p> 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: </p> <ul> <li>repeatedly fetch (and manipulate) an image without opening and closing the file</li> <li>interpose a method for packing raster pixel data according to application-specific needs (or write the data at all)</li> <li>interpose methods that handle TIFF formats that are not already handled by the core library</li> </ul> <p> 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. </p> <p> 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. </p> <p> 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. </p> <p> The TIFF image viewer found in <b>tools/sgigt.c</b> is an example of an application that makes use of the <tt>TIFFRGBAImage</tt> support. </p> <hr> <h2 id="scanlines">Scanline-based Image I/O</h2> <p> The simplest interface provided by <tt>libtiff</tt> 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 (<tt>RowsPerStrip</tt> is one). </p> <p> Two routines are provided for scanline-based i/o: <tt>TIFFReadScanline</tt> and <tt>TIFFWriteScanline</tt>. For example, to read the contents of a file that is assumed to be organized in strips, the following might be used: </p> <p style="margin-left: 40px"> <tt>#include "tiffio.h"<br> main()<br> {<br> TIFF* tif = TIFFOpen("myfile.tif", "r");<br> if (tif) {<br> uint32 imagelength;<br> tdata_t buf;<br> uint32 row;<br> <br> TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength);<br> buf = _TIFFmalloc(TIFFScanlineSize(tif));<br> for (row = 0; row < imagelength; row++)<br> tiffreadscanline(tif, buf, row);<br> _tifffree(buf);<br> tiffclose(tif);<br> }<br> }</tt> </p> <p> <tt>TIFFScanlineSize</tt> returns the number of bytes in a decoded scanline, as returned by <tt>TIFFReadScanline</tt>. 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: </p> <p style="margin-left: 40px"> <tt>#include "tiffio.h"<br> main()<br> {<br> TIFF* tif = TIFFOpen("myfile.tif", "r");<br> if (tif) {<br> uint32 imagelength;<br> tdata_t buf;<br> uint32 row;<br> <br> TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength);<br> TIFFGetField(tif, TIFFTAG_PLANARCONFIG, &config);<br> buf = _TIFFmalloc(TIFFScanlineSize(tif));<br> if (config == PLANARCONFIG_CONTIG) {<br> for (row = 0; row < imagelength; row++)<br> tiffreadscanline(tif, buf, row);<br> } else if (config == planarconfig_separate) {<br> uint16 s, nsamples;<br> <br> tiffgetfield(tif, tifftag_samplesperpixel, &nsamples);<br> for (s = 0; s < nsamples; s++)<br> for (row = 0; row < imagelength; row++)<br> tiffreadscanline(tif, buf, row, s);<br> }<br> _tifffree(buf);<br> tiffclose(tif);<br> }<br> }</tt> </p> <p> Beware however that if the following code were used instead to read data in the case <tt>PLANARCONFIG_SEPARATE</tt>,... </p> <p style="margin-left: 40px"> <tt> for (row = 0; row < imagelength; row++)<br> for (s = 0; s < nsamples; s++)<br> tiffreadscanline(tif, buf, row, s);</tt> </p> <p> ...then problems would arise if <tt>RowsPerStrip</tt> 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). </p> <hr> <h2 id="strips">Strip-oriented Image I/O</h2> <p> 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. </p> <p> A simple example of reading an image by strips is: </p> <p style="margin-left: 40px"> <tt>#include "tiffio.h"<br> main()<br> {<br> TIFF* tif = TIFFOpen("myfile.tif", "r");<br> if (tif) {<br> tdata_t buf;<br> tstrip_t strip;<br> <br> buf = _TIFFmalloc(TIFFStripSize(tif));<br> for (strip = 0; strip < tiffnumberofstrips(tif); strip++)<br> tiffreadencodedstrip(tif, strip, buf, (tsize_t) -1);<br> _tifffree(buf);<br> tiffclose(tif);<br> }<br> }</tt> </p> <p> Notice how a strip size of <tt>-1</tt> is used; <tt>TIFFReadEncodedStrip</tt> will calculate the appropriate size in this case. </p> <p> 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 <tt>PLANARCONFIG_SEPARATE</tt> then all the strips of data holding the first sample will be read, followed by strips for the second sample, etc. </p> <p> Finally, note that the last strip of data in an image may have fewer rows in it than specified by the <tt>RowsPerStrip</tt> tag. A reader should not assume that each decoded strip contains a full set of rows in it. </p> <p> The following is an example of how to read raw strips of data from a file: </p> <p style="margin-left: 40px"> <tt>#include "tiffio.h"<br> main()<br> {<br> TIFF* tif = TIFFOpen("myfile.tif", "r");<br> if (tif) {<br> tdata_t buf;<br> tstrip_t strip;<br> uint32* bc;<br> uint32 stripsize;<br> <br> TIFFGetField(tif, TIFFTAG_STRIPBYTECOUNTS, &bc);<br> stripsize = bc[0];<br> buf = _TIFFmalloc(stripsize);<br> for (strip = 0; strip < tiffnumberofstrips(tif); strip++) {<br> if (bc[strip] > stripsize) {<br> buf = _TIFFrealloc(buf, bc[strip]);<br> stripsize = bc[strip];<br> }<br> TIFFReadRawStrip(tif, strip, buf, bc[strip]);<br> }<br> _TIFFfree(buf);<br> TIFFClose(tif);<br> }<br> }</tt> </p> <p> 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. </p> <hr> <h2 id="tiles">Tile-oriented Image I/O</h2> <p> 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. </p> <p> 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. </p> <p> 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: </p> <p style="margin-left: 40px"> <tt>main()<br> {<br> TIFF* tif = TIFFOpen("myfile.tif", "r");<br> if (tif) {<br> uint32 imageWidth, imageLength;<br> uint32 tileWidth, tileLength;<br> uint32 x, y;<br> tdata_t buf;<br> <br> TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &imageWidth);<br> TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imageLength);<br> TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tileWidth);<br> TIFFGetField(tif, TIFFTAG_TILELENGTH, &tileLength);<br> buf = _TIFFmalloc(TIFFTileSize(tif));<br> for (y = 0; y < imagelength; y += tilelength)<br> for (x = 0; x < imagewidth; x += tilewidth)<br> tiffreadtile(tif, buf, x, y, 0);<br> _tifffree(buf);<br> tiffclose(tif);<br> }<br> }</tt> </p> <p> (once again, we assume samples are packed contiguously.) </p> <p> Alternatively a direct interface to the low-level data is provided a la strips. Tiles can be read with <tt>TIFFReadEncodedTile</tt> or <tt>TIFFReadRawTile</tt>, and written with <tt>TIFFWriteEncodedTile</tt> or <tt>TIFFWriteRawTile</tt>. For example, to read all the tiles in an image: </p> <p style="margin-left: 40px"> <tt>#include "tiffio.h"<br> main()<br> {<br> TIFF* tif = TIFFOpen("myfile.tif", "r");<br> if (tif) {<br> tdata_t buf;<br> ttile_t tile;<br> <br> buf = _TIFFmalloc(TIFFTileSize(tif));<br> for (tile = 0; tile < tiffnumberoftiles(tif); tile++)<br> tiffreadencodedtile(tif, tile, buf, (tsize_t) -1);<br> _tifffree(buf);<br> tiffclose(tif);<br> }<br> }</tt> </p> <hr> <h2 id="other">Other Stuff</h2> <p> Some other stuff will almost certainly go here... </p> <hr> <p> Last updated: $Date: 2016-09-25 20:05:44 $ </p> </body> </html> PK粐\�5*�html/misc.htmlnu�[���<HTML> <HEAD> <TITLE> Acknowledgments and Other Issues </TITLE> </HEAD> <BODY BGCOLOR=white> <FONT FACE="Arial, Helvetica, Sans"> <H1> <IMG SRC=images/ring.gif WIDTH=124 HEIGHT=124 ALIGN=left BORDER=1 HSPACE=6> Acknowledgments and Other Issues </H1> <P> 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. It would also be nice to be acknowledged.<p> <BR CLEAR=left> <H2>Acknowledgements</H2> The libtiff software was written by Sam Leffler while working for Silicon Graphics.<p> The LZW algorithm is derived from the compress program (the proper attribution is included in the source code). The Group 3 fax stuff originated as code from Jef Poskanzer, but has since been rewritten several times. The latest version uses an algorithm from Frank Cringle -- consult <TT>libtiff/mkg3states.c</TT> and <TT>libtiff/tif_fax3.h</TT> for further information. The JPEG support was written by Tom Lane and is dependent on the excellent work of Tom Lane and the Independent JPEG Group (IJG) who distribute their work under friendly licensing similar to this software. Joris Van Damme implemented the robust Old JPEG decoder (as included in libtiff since version 3.9.0, there was another Old JPEG module in older releases, which was incomplete and unsuitable for many existing images of that format). JBIG module was written by Lee Howard and depends on JBIG library from the Markus Kuhn. Many other people have by now helped with bug fixes and code; a few of the more persistent contributors have been: <PRE> Bjorn P. Brox Dan McCoy J.T. Conklin Richard Minner Frank D. Cringle Richard Mlynarik Soren Pingel Dalsgaard Niles Ritter Steve Johnson Karsten Spang Tom Lane Peter Smith Brent Roman Mike Welles Frank Warmerdam Greg Ward Stanislav Brabec Roman Shpount Peter Skarpetis Arvan Pritchard Bernt Herd Joseph Orost Phil Beffery Ivo Penzar Francois Dagand Albert Chin-A-Young Bruce A. Mallett Dwight Kelly Andrey Kiselev Ross Finlayson Dmitry V. Levin Bob Friesenhahn Lee Howard Joris Van Damme Tavis Ormandy Richard Nolde Even Rouault </PRE> (my apology to anyone that was inadvertently not listed.) <H2>Use and Copyright</H2> <P><H5><PRE> 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. </PRE></H5> <P> <HR> Last updated: $Date: 2016-09-25 20:05:44 $ </BODY> </HTML> PK粐\ո��EEhtml/support.htmlnu�[���<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="en"> <head> <title>TIFF 6.0 Specification Coverage</title> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"> <meta http-equiv="content-language" content="en"> <style type="text/css"> <!-- th {text-align: left; vertical-align: top; font-style: italic; font-weight: normal} --> </style> </head> <body lang="en" text="#000000" bgcolor="#ffffff" link="#0000ff" alink="#0000ff" vlink="#0000ff"> <table border="0" cellspacing="0" cellpadding="0"> <tr> <td style="padding-left: 1em; padding-right: 1em"><img src="images/strike.gif" width="128" height="100" alt=""></td> <td> <h1>TIFF 6.0 Specification Coverage</h1> <p> The library is capable of dealing with images that are written to follow the 5.0 or 6.0 TIFF spec. There is also considerable support for some of the more esoteric portions of the 6.0 TIFF spec. </p> </td> </tr> </table> <br> <table border="1" cellspacing="0" cellpadding="5"> <tr> <th>Core requirements</th> <td> <p> Both <tt>"MM"</tt> and <tt>"II"</tt> byte orders are handled. Both packed and separated planar configuration of samples. Any number of samples per pixel (memory permitting). Any image width and height (memory permitting). Multiple subfiles can be read and written. Editing is <b>not</b> supported in that related subfiles (e.g. a reduced resolution version of an image) are not automatically updated. </p> <p> Tags handled: <tt>ExtraSamples</tt>, <tt>ImageWidth</tt>, <tt>ImageLength</tt>, <tt>NewSubfileType</tt>, <tt>ResolutionUnit</tt>. <tt>Rowsperstrip</tt>, <tt>StripOffsets</tt>, <tt>StripByteCounts</tt>, <tt>XResolution</tt>, <tt>YResolution</tt> </p> </td> </tr> <tr> <th>Tiled Images</th> <td><tt>TileWidth</tt>, <tt>TileLength</tt>, <tt>TileOffsets</tt>, <tt>TileByteCounts</tt></td> </tr> <tr> <th>Image Colorimetry Information</th> <td><tt>WhitePoint</tt>, <tt>PrimaryChromaticities</tt>, <tt>TransferFunction</tt>, <tt>ReferenceBlackWhite</tt></td> </tr> <tr> <th>Class B for bilevel images</th> <td><tt>SamplesPerPixel</tt> = 1<br> <tt>BitsPerSample</tt> = 1<br> <tt>Compression</tt> = 1 (none), 2 (CCITT 1D), or 32773 (PackBits)<br> <tt>PhotometricInterpretation</tt> = 0 (Min-is-White), 1 (Min-is-Black)</td> </tr> <tr> <th>Class G for grayscale images</th> <td><tt>SamplesPerPixel</tt> = 1<br> <tt>BitsPerSample</tt> = 4, 8<br> <tt>Compression</tt> = 1 (none) 5 (LZW)<br> <tt>PhotometricInterpretation</tt> = 0 (Min-is-White), 1 (Min-is-Black)</td> </tr> <tr> <th>Class P for palette color images</th> <td><tt>SamplesPerPixel</tt> = 1<br> <tt>BitsPerSample</tt> = 1-8<br> <tt>Compression</tt> = 1 (none) 5 (LZW)<br> <tt>PhotometricInterpretation</tt> = 3 (Palette RGB)<br> <tt>ColorMap</tt></td> </tr> <tr> <th>Class R for RGB full color images</th> <td><tt>SamplesPerPixel</tt> = 3<br> <tt>BitsPerSample</tt> = <8,8,8><br> <tt>PlanarConfiguration</tt> = 1, 2<br> <tt>Compression</tt> = 1 (none) 5 (LZW)<br> <tt>PhotometricInterpretation</tt> = 2 (RGB)</td> </tr> <tr> <th>Class F for facsimile</th> <td>(<i>Class B tags plus...</i>)<br> <tt>Compression</tt> = 3 (CCITT Group 3), 4 (CCITT Group 4)<br> <tt>FillOrder</tt> = 1 (MSB), 2 (LSB)<br> <tt>Group3Options</tt> = 1 (2d encoding), 4 (zero fill), 5 (2d+fill)<br> <tt>ImageWidth</tt> = 1728, 2048, 2482<br> <tt>NewSubFileType</tt> = 2<br> <tt>ResolutionUnit</tt> = 2 (Inch), 3 (Centimeter)<br> <tt>PageNumber</tt>, <tt>XResolution</tt>, <tt>YResolution</tt>, <tt>Software</tt>, <tt>BadFaxLines</tt>, <tt>CleanFaxData</tt>, <tt>ConsecutiveBadFaxLines</tt>, <tt>DateTime</tt>, <tt>DocumentName</tt>, <tt>ImageDescription</tt>, <tt>Orientation</tt></td> </tr> <tr> <th>Class S for separated images</th> <td><tt>SamplesPerPixel</tt> = 4<br> <tt>PlanarConfiguration</tt> = 1, 2<br> <tt>Compression</tt> = 1 (none), 5 (LZW)<br> <tt>PhotometricInterpretation</tt> = 5 (Separated)<br> <tt>InkSet</tt> = 1 (CMYK)<br> <tt>DotRange</tt>, <tt>InkNames</tt>, <tt>DotRange</tt>, <tt>TargetPrinter</tt></td> </tr> <tr> <th>Class Y for YCbCr images</th> <td><tt>SamplesPerPixel</tt> = 3<br> <tt>BitsPerSample</tt> = <8,8,8><br> <tt>PlanarConfiguration</tt> = 1, 2<br> <tt>Compression</tt> = 1 (none), 5 (LZW), 7 (JPEG)<br> <tt>PhotometricInterpretation</tt> = 6 (YCbCr)<br> <tt>YCbCrCoefficients</tt>, <tt>YCbCrSubsampling</tt>, <tt>YCbCrPositioning</tt><br> (<i>colorimetry info from Appendix H; see above</i>)</td> </tr> <tr> <th>Class "JPEG" for JPEG images (per TTN2)</th> <td><tt>PhotometricInterpretation</tt> = 1 (grayscale), 2 (RGB), 5 (CMYK), 6 (YCbCr)<br> (<i>Class Y tags if YCbCr</i>)<br> (<i>Class S tags if CMYK</i>)<br> <tt>Compression</tt> = 7 (JPEG)</td> </tr> </table> <p> In addition, the library supports some optional compression algorithms that are, in some cases, of dubious value. </p> <table border="0" cellspacing="0" cellpadding="2"> <tr><th>Compression tag value</th><th>Compression algorithm</th></tr> <tr><td>32766</td><td>NeXT 2-bit encoding</td></tr> <tr><td>32809</td><td>ThunderScan 4-bit encoding</td></tr> <tr><td>32909</td><td>Pixar companded 11-bit ZIP encoding</td></tr> <tr><td>32946</td><td>PKZIP-style Deflate encoding (experimental)</td></tr> <tr><td>34676</td><td>SGI 32-bit Log Luminance encoding (experimental)</td></tr> <tr><td>34677</td><td>SGI 24-bit Log Luminance encoding (experimental)</td></tr> </table> <br> <p> Note that there is no support for the JPEG-related tags defined in the 6.0 specification; the JPEG support is based on the post-6.0 proposal given in TIFF Technical Note #2. </p> <table> <tr> <td valign=top><img src="images/info.gif" width="32" height="32" alt=""></td> <td>For more information on the experimental Log Luminance encoding consult the materials available at <a href="http://www.anyhere.com/gward/pixformat/tiffluv.html">http://www.anyhere.com/gward/pixformat/tiffluv.html</a>.</td> </tr> </table> <br> <p> The following table shows the tags that are recognized and how they are used by the library. If no use is indicated, then the library reads and writes the tag, but does not use it internally. </p> <table border="1" cellspacing="0" cellpadding="5"> <tr> <th>Tag Name</th> <th>Value</th> <th>R/W</th> <th>Library's Use (Comments)</th> </tr> <tr> <td><tt>NewSubFileType</tt></td> <td>254</td> <td>R/W</td> <td>none (called <tt>SubFileType</tt> in <tiff.h>)</td> </tr> <tr> <td><tt>SubFileType</tt></td> <td>255</td> <td>R/W</td> <td>none (called <tt>OSubFileType</tt> in <tiff.h>)</td> </tr> <tr> <td><tt>ImageWidth</tt></td> <td>256</td> <td>R/W</td> <td>lots</td> </tr> <tr> <td><tt>ImageLength</tt></td> <td>257</td> <td>R/W</td> <td>lots</td> </tr> <tr> <td><tt>BitsPerSample</tt></td> <td>258</td> <td>R/W</td> <td>lots</td> </tr> <tr> <td><tt>Compression</tt></td> <td>259</td> <td>R/W</td> <td>to select appropriate codec</td> </tr> <tr> <td><tt>PhotometricInterpretation</tt></td> <td>262</td> <td>R/W</td> <td>lots</td> </tr> <tr> <td><tt>Thresholding</tt></td> <td>263</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>CellWidth</tt></td> <td>264</td> <td> </td> <td>parsed but ignored</td> </tr> <tr> <td><tt>CellLength</tt></td> <td>265</td> <td> </td> <td>parsed but ignored</td> </tr> <tr> <td><tt>FillOrder</tt></td> <td>266</td> <td>R/W</td> <td>control bit order</td> </tr> <tr> <td><tt>DocumentName</tt></td> <td>269</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>ImageDescription</tt></td> <td>270</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>Make</tt></td> <td>271</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>Model</tt></td> <td>272</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>StripOffsets</tt></td> <td>273</td> <td>R/W</td> <td>data i/o</td> </tr> <tr> <td><tt>Orientation</tt></td> <td>274</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>SamplesPerPixel</tt></td> <td>277</td> <td>R/W</td> <td>lots</td> </tr> <tr> <td><tt>RowsPerStrip</tt></td> <td>278</td> <td>R/W</td> <td>data i/o</td> </tr> <tr> <td><tt>StripByteCounts</tt></td> <td>279</td> <td>R/W</td> <td>data i/o</td> </tr> <tr> <td><tt>MinSampleValue</tt></td> <td>280</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>MaxSampleValue</tt></td> <td>281</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>XResolution</tt></td> <td>282</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>YResolution</tt></td> <td>283</td> <td>R/W</td> <td>used by Group 3 2d encoder</td> </tr> <tr> <td><tt>PlanarConfiguration</tt></td> <td>284</td> <td>R/W</td> <td>data i/o</td> </tr> <tr> <td><tt>PageName</tt></td> <td>285</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>XPosition</tt></td> <td>286</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>YPosition</tt></td> <td>286</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>FreeOffsets</tt></td> <td>288</td> <td> </td> <td>parsed but ignored</td> </tr> <tr> <td><tt>FreeByteCounts</tt></td> <td>289</td> <td> </td> <td>parsed but ignored</td> </tr> <tr> <td><tt>GrayResponseUnit</tt></td> <td>290</td> <td> </td> <td>parsed but ignored</td> </tr> <tr> <td><tt>GrayResponseCurve</tt></td> <td>291</td> <td> </td> <td>parsed but ignored</td> </tr> <tr> <td><tt>Group3Options</tt></td> <td>292</td> <td>R/W</td> <td>used by Group 3 codec</td> </tr> <tr> <td><tt>Group4Options</tt></td> <td>293</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>ResolutionUnit</tt></td> <td>296</td> <td>R/W</td> <td>used by Group 3 2d encoder</td> </tr> <tr> <td><tt>PageNumber</tt></td> <td>297</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>ColorResponseUnit</tt></td> <td>300</td> <td> </td> <td>parsed but ignored</td> </tr> <tr> <td><tt>TransferFunction</tt></td> <td>301</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>Software</tt></td> <td>305</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>DateTime</tt></td> <td>306</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>Artist</tt></td> <td>315</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>HostComputer</tt></td> <td>316</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>Predictor</tt></td> <td>317</td> <td>R/W</td> <td>used by LZW codec</td> </tr> <tr> <td><tt>WhitePoint</tt></td> <td>318</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>PrimaryChromacities</tt></td> <td>319</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>ColorMap</tt></td> <td>320</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>TileWidth</tt></td> <td>322</td> <td>R/W</td> <td>data i/o</td> </tr> <tr> <td><tt>TileLength</tt></td> <td>323</td> <td>R/W</td> <td>data i/o</td> </tr> <tr> <td><tt>TileOffsets</tt></td> <td>324</td> <td>R/W</td> <td>data i/o</td> </tr> <tr> <td><tt>TileByteCounts</tt></td> <td>324</td> <td>R/W</td> <td>data i/o</td> </tr> <tr> <td><tt>BadFaxLines</tt></td> <td>326</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>CleanFaxData</tt></td> <td>327</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>ConsecutiveBadFaxLines</tt></td> <td>328</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>SubIFD</tt></td> <td>330</td> <td>R/W</td> <td>subimage descriptor support</td> </tr> <tr> <td><tt>InkSet</tt></td> <td>332</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>InkNames</tt></td> <td>333</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>DotRange</tt></td> <td>336</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>TargetPrinter</tt></td> <td>337</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>ExtraSamples</tt></td> <td>338</td> <td>R/W</td> <td>lots</td> </tr> <tr> <td><tt>SampleFormat</tt></td> <td>339</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>SMinSampleValue</tt></td> <td>340</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>SMaxSampleValue</tt></td> <td>341</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>JPEGTables</tt></td> <td>347</td> <td>R/W</td> <td>used by JPEG codec</td> </tr> <tr> <td><tt>YCbCrCoefficients</tt></td> <td>529</td> <td>R/W</td> <td>used by <tt>TIFFReadRGBAImage</tt> support</td> </tr> <tr> <td><tt>YCbCrSubsampling</tt></td> <td>530</td> <td>R/W</td> <td>tile/strip size calculations</td> </tr> <tr> <td><tt>YCbCrPositioning</tt></td> <td>531</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>ReferenceBlackWhite</tt></td> <td>532</td> <td>R/W</td> <td> </td> </tr> <tr> <td><tt>Matteing</tt></td> <td>32995</td> <td>R</td> <td>none (obsoleted by <tt>ExtraSamples</tt> tag)</td> </tr> <tr> <td><tt>DataType</tt></td> <td>32996</td> <td>R</td> <td>none (obsoleted by <tt>SampleFormat</tt> tag)</td> </tr> <tr> <td><tt>ImageDepth</tt></td> <td>32997</td> <td>R/W</td> <td>tile/strip calculations</td> </tr> <tr> <td><tt>TileDepth</tt></td> <td>32998</td> <td>R/W</td> <td>tile/strip calculations</td> </tr> <tr> <td><tt>StoNits</tt></td> <td>37439</td> <td>R/W</td> <td> </td> </tr> </table> <p> The <tt>Matteing</tt> and <tt>DataType</tt> tags have been obsoleted by the 6.0 <tt>ExtraSamples</tt> and <tt>SampleFormat</tt> tags. Consult the documentation on the <tt>ExtraSamples</tt> tag and Associated Alpha for elaboration. Note however that if you use Associated Alpha, you are expected to save data that is pre-multipled by Alpha. If this means nothing to you, check out Porter & Duff's paper in the '84 SIGGRAPH proceedings: "Compositing Digital Images". </p> <p> The <tt>ImageDepth</tt> tag is a non-standard, but registered tag that specifies the Z-dimension of volumetric data. The combination of <tt>ImageWidth</tt>, <tt>ImageLength</tt>, and <tt>ImageDepth</tt>, defines a 3D volume of pixels that are further specified by <tt>BitsPerSample</tt> and <tt>SamplesPerPixel</tt>. The <tt>TileDepth</tt> tag (also non-standard, but registered) can be used to specified a subvolume "tiling" of a volume of data. </p> <p> The Colorimetry, and CMYK tags are additions that appear in TIFF 6.0. Consult the TIFF 6.0 specification included in the <b>doc</b> directory and <a href="document.html">online</a>. </p> <p> The JPEG-related tag is specified in <a href="TIFFTechNote2.html">TIFF Technical Note #2</a> which defines a revised JPEG-in-TIFF scheme (revised over that appendix that was part of the TIFF 6.0 specification). </p> <hr> <p> Last updated: $Date: 2016-09-25 20:05:45 $ </p> </body> </html> PK粐\~<�^^html/tools.htmlnu�[���<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta name="generator" content= "HTML Tidy for Solaris (vers 12 April 2005), see www.w3.org"> <title>TIFF Tools Overview</title> </head> <body bgcolor="white"> <h1><font face="Arial, Helvetica, Sans"><img src="images/quad.jpg" width="144" height="108" align="left" border="1" hspace="6"> TIFF Tools Overview</font></h1> <p>This software distribution comes with a small collection of programs for converting non-TIFF format images to TIFF and for manipulating and interrogating the contents of TIFF images. Several of these tools are useful in their own right. Many of them however are more intended to serve as programming examples for using the TIFF library.</p> <h3>Device-dependent Programs</h3> There are two device-dependent programs that serve as simple examples for writing programs to display and save TIFF images. <table border cellpadding="3"> <tr> <td valign="top" width="10%"> <tt><a href="man/tiffgt.1.html">tiffgt</a> </tt></td> <td>Display the contents of one or more TIFF images using OpenGL. The software makes extensive use of the <tt>TIFFRGBAImage</tt> facilities described elsewhere.</td> </tr> </table> <h3>Device-independent Programs</h3> The remaining programs should be device-independent: <table border cellpadding="3"> <td valign="top" width="10%"><tt><a href="man/fax2ps.1.html">fax2ps</a></tt></td> <td>Convert a Group 3- or Group 4- compressed TIFF to PostScript that is significantly more compressed than is generated by <tt>tiff2ps</tt> (unless <tt>tiff2ps</tt> writes PS Level II)</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/fax2tiff.1.html">fax2tiff</a></tt></td> <td>Convert raw Group 3 or Group 4 facsimile data to TIFF</td> </tr> <td valign="top" width="10%"><tt><a href="man/pal2rgb.1.html">pal2rgb</a></tt></td> <td>Convert a Palette-style image to a full color RGB image by applying the colormap</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/ppm2tiff.1.html">ppm2tiff</a></tt></td> <td>A quick hack that converts 8-bit PPM format images to TIFF</td> </tr> <td valign="top" width="10%"><tt><a href="man/raw2tiff.1.html">raw2tiff</a></tt></td> <td>Create a TIFF file from raw data</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/rgb2ycbcr.1.html">rgb2ycbcr</a></tt></td> <td>Convert an RGB, grayscale, or bilevel TIFF image to a YCbCr TIFF image; it's mainly provided for testing</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/thumbnail.1.html">thumbnail</a></tt></tt></td> <td>Copy a bilevel TIFF to one that includes 8-bit greyscale "thumbnail images" for each page; it is provided as an example of how one might use the <tt>SubIFD</tt> tag (and the library support for it)</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/tiff2bw.1.html">tiff2bw</a></tt></td> <td>A simple program to convert a color image to grayscale</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/tiff2pdf.1.html">tiff2pdf</a></tt></td> <td>Convert TIFF images to PDF</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/tiff2ps.1.html">tiff2ps</a></tt></td> <td>Convert TIFF images to PostScript</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/tiff2rgba.1.html">tiff2rgba</a></tt></td> <td>Convert a TIFF image to RGBA color space</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/tiffcmp.1.html">tiffcmp</a></tt></td> <td>Compare the contents of two TIFF files (it does not check all the directory information, but does check all the data)</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/tiffcp.1.html">tiffcp</a></tt></td> <td>Copy, concatenate, and convert TIFF images (e.g. switching from Compression=5 to Compression=1)</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/tiffcrop.1.html">tiffcrop</a></tt></td> <td>Provides selection of images from within one or more multi-image TIFF files, with orthogonal rotation, mirroring, cropping, and extraction of multiple sections and exporting to one or more files. It extends the functionality of tiffcp to support additional bit depths in strips and tiles and enhances the selection capabilities of tiffsplit. Bilevel images can be inverted and images may be split into segments to fit on multiple /pages/ (standard paper sizes), plus other functions described in the tiffcrop man page</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/tiffdither.1.html">tiffdither</a></tt></td> <td>Dither a b&w image into a bilevel image (suitable for use in creating fax files)</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/tiffdump.1.html">tiffdump</a></tt></td> <td>Display the verbatim contents of the TIFF directory in a file (it's very useful for debugging bogus files that you may get from someone that claims they support TIFF)</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/tiffinfo.1.html">tiffinfo</a></tt></td> <td>Display information about one or more TIFF files.</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/tiffmedian.1.html">tiffmedian</a></tt></td> <td>A version of Paul Heckbert's median cut program that reads an RGB TIFF image, and creates a TIFF palette file as a result</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/tiffset.1.html">tiffset</a></tt></td> <td>Set a field in a TIFF header</td> </tr> <tr> <td valign="top" width="10%"><tt><a href="man/tiffsplit.1.html">tiffsplit</a></tt></td> <td>Create one or more single-image files from a (possibly) multi-image file</td> </tr> </table> <p>Check out the manual pages for details about the above programs.</p> <hr> Last updated: $Date: 2016-06-05 19:54:00 $ </body> </html> PK粐\�^77html/v3.4beta007.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.4beta007 </TITLE> </HEAD> <BODY> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.4beta007<BR> <B>Previous Version</B>: v3.4beta004<BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#port">Changes in the portability support</A> <LI><A HREF="#tools">Changes in the tools</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI>bit order was corrected for Pentium systems <LI>a new define, <TT>HOST_BIGENDIAN</TT>, was added for code that wants to statically use information about native cpu byte order </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI>the G3/G4 decoder was replaced by a new one that is faster and has smaller state tables <LI>Niles Ritter's client tag extension hooks were added <LI>a new routine <TT>TIFFCurrentDirOffset</TT> was added for applications that want to find out the file offset of a TIFF directory <LI>the calculation of the number of strips in an image was corected for images with certain esoteric configurations <LI>a potential memory leak (very unlikely) was plugged <LI>the <TT>TIFFReadRGBAImage</TT> support was completely rewritten and new, more flexible support was added for reading images into a fixed-format raster <LI>YCbCr to RGB conversion done in the <TT>TIFFReadRGBAImage</TT> support was optimized <LI>a bug in JPEG support calculation of strip size was corrected <LI>the LZW decoder was changed to initialize the code table to zero to lessen potential problems that arise when invalid data is decoded <LI><B>tiffcomp.h</B> is now aware of OS/2 <LI>some function prototypes in <B>tiffio.h</B> and <B>tiffiop.h</B> that contained parameter names have been changed to avoid complaints from certain compilers </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="port"><B><FONT SIZE=+3>C</FONT>HANGES IN THE PORTABILITY SUPPORT:</B></A> <UL> <LI><B>Makefile.in</B> has been corrected to use the parameters chosen by the configure script </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI><TT>fax2ps</TT> has been rewritten and moved over from the user contributed software <LI>an uninitialized variable in <TT>pal2rgb</TT> has been fixed <LI><TT>ras2tiff</TT> now converts 24-bit RGB raster data so that samples are written in the proper order <LI><TT>tiff2ps</TT> has been updated to include fixes and enhancements from Alberto Accomazzi <LI><TT>tiffcp</TT> now has a <TT>-o</TT> option to select a directory by file offset <LI><TT>tiffinfo</TT> is now capable of displaying the raw undecoded image data in a file <LI><TT>tiffgt</TT> has been rewritten to use the new <TT>TIFFRGBAImage</TT> support and to handle multiple files </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> <ADDRESS> <A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A> Last updated $Date: 2016-09-25 20:05:45 $. </ADDRESS> </BODY> </HTML> PK粐\��n���html/v3.4beta016.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.4beta016 </TITLE> </HEAD> <BODY> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.4beta016<BR> <B>Previous Version</B>: <A HREF=v3.4beta007.html>v3.4beta007</A><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#man">Changes in the manual pages</A> <LI><A HREF="#html">Changes in the documentation</A> <LI><A HREF="#contrib">Changes in contributed software</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI>support was added for configuring the Deflate codec <LI>support was added for the HTML documentation <LI>codecs that are not configured for inclusion in the library are no longer compiled </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI>support was added for registering new codecs external to the library and for overriding the codecs that are builtin to the library <LI>emulation support for the old <TT>DataType</TT> tag was improved <LI>suppport was added for the <TT>SMinSampleValue</TT> and <TT>SMaxSampleValue</TT> tags <LI>the library no longer ignores <TT>TileWidth</TT> and <TT>TileLength</TT> tags whose values are not a multiple of 16 (per the spec); this permits old, improperly written, images to be read <LI>the support for the <TT>Predictor</TT> tag was placed in a reusable module so that it can be shared by multiple codecs <LI>experimental compression support was added for the Deflate algorithm (using the freely available zlib package) <LI>a new routine, <TT>TIFFWriteBufferSetup</TT> was added a la the routine <TT>TIFFReadBufferSetup</TT> <LI>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 </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI>all the tools now use common code to process compress-oriented arguments <LI><TT>tiffdump</TT> should now compile on a Macintosh with MPW </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="man"><B><FONT SIZE=+3>C</FONT>HANGES IN THE MANUAL PAGES:</B></A> <UL> <LI>everything was updated </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="html"><B><FONT SIZE=+3>C</FONT>HANGES IN THE DOCUMENTATION:</B></A> <UL> <LI>everything was updated </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN CONTRIBUTED SOFTWARE:</B></A> <UL> <LI><B>contrib/dbs/xtiff</B> was made to compile <LI><B>contrib/mac-mpw</B> is new support for compiling the software on a Macintosh under MPW; consult <A HREF=build.html#Mac>the documentation</A> for details <LI><B>contrib/tags</B> is information on how to use the tag extenion facilities; consult <A HREF=../contrib/tags/README>contrib/tags/README</A> for details </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> <ADDRESS> <A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A> Last updated $Date: 2016-09-25 20:05:45 $. </ADDRESS> </BODY> </HTML> PK粐\���W W html/v3.4beta018.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.4beta018 </TITLE> </HEAD> <BODY> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.4beta018<BR> <B>Previous Version</B>: <A HREF=v3.4beta016.html>v3.4beta016</A><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI>configure now recognizes IRIX 6.x systems <LI>configure now uses <TT>ENVOPTS</TT> when searching for an ANSI C compiler; this fixes a problem configuring the software under HP/UX with the native C compiler <LI>configure now correctly recognizes memory-mapped files are supported under AIX </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI><TT>make install</TT> now properly installs the include files <LI>some portability fixes from Bjorn Brox <LI>the G3/G4 codec now warns about decoded rows that are longer than the image/tile width <LI>changes from Frank Cringle to make the library work with the gcc-specific bounds checking software <LI>miscellaneous fixes to <TT>TIFFPrintDirectory</TT> <LI>bug fix to correct a problem where <TT>TIFFWriteRawStrip</TT> could not be used to automatically grow an image's length </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI>fixes from Frank Cringle to update <TT>fax2tiff</TT> <LI>portability fixes to <TT>tiff2bw</TT> and <TT>tiffcmp</TT> <LI><TT>tiffdump</TT> now uses the byte swapping routines in the library </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> <ADDRESS> <A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A> Last updated $Date: 2016-09-25 20:05:45 $. </ADDRESS> </BODY> </HTML> PK粐\�_+��html/v3.4beta024.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.4beta024 </TITLE> </HEAD> <BODY> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.4beta024<BR> <B>Previous Version</B>: <A HREF=v3.4beta018.html>v3.4beta018</A><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#man">Changes in the manual pages</A> <LI><A HREF="#contrib">Changes in the contributed software</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI>It is now possible to setup the software to build only the library; configure reconizes this is the intent when the <B>VERSION</B>, <B>tiff.alpha</B>, and <B>tif_version.c</B> files are in the local directory (i.e. ``.'') <LI>configure no longer tries to setup HTML materials <LI>include file directories needed in building the library are now specified with a <TT>DIRS_LIBINC</TT> config parameter <LI>configure no longer checks for alternate compilers if <TT>CC</TT> is set; if the specified compiler is not found or is not appropriate the configuration procedure aborts <LI>the <B>port.h</B> file generated by configure is now used only by the library and as such as have been moved to the <B>libtiff</B> directory <LI>there is beginning support for building DSO's on systems other than IRIX <LI>configure now verifies the JPEG and zlib directory pathnames by checking for well-known include files in these directories <LI>configure no longer creates the <B>dist</B> directory needed only on SGI machines (for building SGI binary distributions) <LI>a bug was fixed whereby configure would incorrectly set <TT>ENVOPTS</TT> when building the software with gcc under AIX </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI>two new typedefs were added to <B>tiff.h</TT>: <TT>int8</TT> and <TT>uint8</TT> for signed and unsigned 8-bit quantities, respectively; these are currently used only by programs in the <B>tools</B> directory <LI>the <TT>BadFaxLines</TT>, <TT>CleanFaxData</TT>, and <TT>ConsecutiveBadFaxLines</B> tags are now supported with Group 4 compression <LI>byte order is now correctly identified on 64-bit machines <LI>a bug was fixed in the PackBits decoder where input data would appear short when a no-op run was present <LI>a bug was fixed in calculations with very wide strips <LI><TT>TIFFWriteEncodedStrip</TT> and <TT>TIFFWriteRawStrip</TT> were extended to support dynamically growing the number of strips in an image (must set <TT>ImageLength</TT> prior to making calls though) <LI><TT>TIFFDefaultTileSize</TT> now rounds tile width and height up to a multiple of 16 pixels, as required by the TIFF 6.0 specification <LI>the file <B>version.h</B> is now built by a new <B>mkversion</B> program; this was done for portability to non-UNIX systems <LI>support was added for the Acorn RISC OS (from Peter Greenham) <LI>the builtin codec table is now made <TT>const</TT> when compiling under VMS so that <B>libtiff</B> can be built as a shared library <LI>support for the PowerPC Mac (from Ruedi Boesch) <LI>support for Window NT/Window 95 (from Scott Wagner) </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI>the tools no longer include <B>port.h</B> <LI>various portability fixes; mostly to eliminate implicit assumptions about how long <TT>int32</TT> data types are <LI>PostScript Level II additions to <TT>tiff2ps</TT> from Bjorn Brox <LI><TT>sgi2tiff</TT> now handles RGBA images </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="man"><B><FONT SIZE=+3>C</FONT>HANGES IN THE MANUAL PAGES:</B></A> <UL> <LI>the documentation has been updated to reflect the current state of the software <LI>some routines have been moved to different manual pages to group like-routines together </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIBUTED SOFTWARE:</B></A> <UL> <LI>support was added for the Acorn RISC OS (from Peter Greenham) <LI>support for Windows NT/Windows 95 contributed for a previous version of this software was sort of incorporated (it's broken right now) (from Scott Wagner) </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> <ADDRESS> <A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A> Last updated $Date: 2016-09-25 20:05:45 $. </ADDRESS> </BODY> </HTML> PK粐\͠=�^^html/v3.4beta028.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.4beta028 </TITLE> </HEAD> <BODY> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.4beta028<BR> <B>Previous Version</B>: <A HREF=v3.4beta024.html>v3.4beta024</A><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#man">Changes in the manual pages</A> <LI><A HREF="#contrib">Changes in the contributed software</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI>a <TT>-noninteractive</TT> flag was added to configure to control whether or not it prints and prompts for configuration information <LI>various typos and fixes were made in configure for the the library-only build support (this and other configure fixes from Richard Mlynarik <A HREF=mailto:mly@adoc.xerox.com><mly@adoc.xerox.com></A>) <LI>bugs were fixed in the handling of pathnames supplied for external packages; e.g. <TT>DIR_JPEG</TT> <LI>the handling of <TT>SETMAKE</TT> is now done properly <LI>the default prototype function declaration for <TT>pow</TT> was corrected <LI>a bug was fixed in <B>libtiff/Makefile.in</B> that caused installation to fail on systems without DSO support </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI>Acorn RISC O/S support that was accidentally left out of the left out of the previous distribution is present (from Peter Greenham) <LI>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 <LI>bugs in handling unknown tags have been corrected; applications that use multiple codecs, each with codec-specific tags, no longer generate confusing error messages <LI>a missing pseudo-tag definition in the CCITT G3 codec was fixed (this problem caused core dumps in the <TT>tiffcp</TT> program) <LI>pseudo-tags are now treated specially; they are always considered to be set (i.e. they do not use bits in the <TT>FIELD_*</TT> bit-vectors). <LI>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) <LI>two bugs were fixed in the writing of opposite-endian byte-order files <LI>support was added for three new fax-related tags registered to SGI: FaxRecvParams, FaxRecvTime, and FaxSubAddress <LI>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) <LI>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) <LI>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) <LI>the use of the <TT>WIN32</TT> define in <B>tiffiop.h</B> has been replaced by <TT>__WIN32__</TT> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI><TT>fax2ps</TT> now does a <TT>save</TT> and <TT>restore</TT> around each page of PostScript; this fixes a problem with VM overflow when printing a many-page document on some printers <LI>a bug in the handling of 3-channel images by <TT>ras2tiff</TT> was fixed <LI><TT>tiffcp</TT> has new options to control the byte order of newly created files: <B>-B</B> for Big-Endian byte order, <B>-L</B> for Little-Endian byte order; a <B>-M</B> option to disable the use of memory-mapped files, and a <B>-C</B> option to disable the use of strip chopping <LI>bugs were fixed in <TT>tiffcp</TT>'s handling of codec-specific tags </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="man"><B><FONT SIZE=+3>C</FONT>HANGES IN THE MANUAL PAGES:</B></A> <UL> <LI>the <TT>TIFFOpen</TT> page has been updated to reflect the new optional open mode parameters </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIBUTED SOFTWARE:</B></A> <UL> <LI><B>contrib/win95</B> contains information and code from Philippe Tenenhaus <A HREF=mailto:100423.3705@compuserve.com><100423.3705@compuserve.com></A> about using the software under Windows 95 <LI><B>contrib/winnt</B> contains information and code from Dave Dyer <A HREF=mailto:ddyer@triple-i.com><ddyer@triple-i.com></A> about using the software under Windows NT </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> <ADDRESS> <A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A> Last updated $Date: 2016-09-25 20:05:45 $. </ADDRESS> </BODY> </HTML> PK粐\��/� � html/v3.4beta029.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.4beta029 </TITLE> </HEAD> <BODY> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.4beta029<BR> <B>Previous Version</B>: <A HREF=v3.4beta028.html>v3.4beta028</A><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#contrib">Changes in the contributed software</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI><B>configure</B> now relativizes pathname references given in <TT>-L</TT> options (as frequently specified when configuring ancillary packages) <LI>problems related to configuring the software on Ultrix 4.4 have been corrected <LI>the shell to use in Makefiles and scripts can now be set with the <TT>SCRIPT_SH</TT> configuration parameter <LI>comments in <B>config.site</B> now correctly indicate how to setup the use of ancillary packages </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI>mods for building the software on a Mac using the MetroWerks CodeWarrior compilers <LI>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 <LI>a bug in the CCITT RLE codecs was fixed whereby the pseudo tags were not being properly registered </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIBUTED SOFTWARE:</B></A> <UL> <LI><B>contrib/mac-cw</B> contains information and code from Niles Ritter <A HREF=mailto:ndr@tazboy.jpl.nasa.gov><ndr@tazboy.jpl.nasa.gov></A> about building the software with the MetroWerks CodeWarrior compilers on Macintosh systems </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> <ADDRESS> <A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A> Last updated $Date: 2016-09-25 20:05:45 $. </ADDRESS> </BODY> </HTML> PK粐\��J���html/v3.4beta031.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.4beta031 </TITLE> </HEAD> <BODY> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.4beta031<BR> <B>Previous Version</B>: <A HREF=v3.4beta029.html>v3.4beta029</A><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#man">Changes in the manual pages</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI><B>configure</B> now captures significantly more information in the <B>config.log</B> file and provides more information when it is unable to setup a configuration <LI>support was added for building shared libraries on more systems: AIX, HPUX, Solaris, and Linux. <LI>a new configuration parameter <TT>LIBCOPTS</TT> 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 <LI>include files for optional packages that reside in <B>/usr/include</B> are now handled correctly <LI>build trees may now be configured using either relative or absolute pathnames to the source distribution <LI>several new configuration parameters were added, mainly for building shared libraries: <TT>DIST_MAJOR</TT>, <TT>DIST_MINOR</TT>, <TT>DIST_ALPHA</TT>, and <TT>DSOSUF_VERSION</TT> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI>the Deflate support has been revised: it requires version 0.99 of the zlib software distribution, <B>the output format has changed and is incompatible with previous versions of this library</B> (each strip now includes a header read and written by the zlib library) <LI>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 <LI>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 </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="man"><B><FONT SIZE=+3>C</FONT>HANGES IN THE MANUAL PAGES:</B></A> <UL> <LI>the creation and installation of manual pages was redone; it now implements the documented ``configuration scheme'' </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> <ADDRESS> <A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A> Last updated $Date: 2016-09-25 20:05:45 $. </ADDRESS> </BODY> </HTML> PK粐\-V\� � html/v3.4beta032.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.4beta032 </TITLE> </HEAD> <BODY> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.4beta032<BR> <B>Previous Version</B>: <A HREF=v3.4beta031.html>v3.4beta031</A><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contributed software</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI>various fixups and subtle improvements to <B>configure</B> from Richard Mlynarik </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI>a new codec from Pixar designed for high-resolution color images; note that this codec is not configured by default <LI>a bug fix for reading tags with a single <TT>FLOAT</TT> value <LI>change to the <TT>TIFFGetField</TT> calling convention: a tag that has a single value of type <TT>DOUBLE</TT> is now retrieved by passing a ``<TT>double*</TT>'' instead of a ``<TT>double**</TT>'' (this change makes the handling of tags with <TT>DOUBLE</TT> values identical to the handling of tags with <TT>FLOAT</TT> values) <LI>fix to VMS support for the handling of floating point values </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI><B>tiffdump</B> now handles tags with <TT>FLOAT</TT> and <TT>DOUBLE</TT> values </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIBUTED SOFTWARE:</B></A> <UL> <LI>updates to the Acorn OS support from Peter Greenham </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> <ADDRESS> <A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A> Last updated $Date: 2016-09-25 20:05:45 $. </ADDRESS> </BODY> </HTML> PK粐\x�s���html/v3.4beta033.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.4beta033 </TITLE> </HEAD> <BODY> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.4beta033 (aka the v3.4 release)<BR> <B>Previous Version</B>: <A HREF=v3.4beta032.html>v3.4beta032</A><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> <LI><A HREF="#tools">Changes in the tools</A> <LI><A HREF="#contrib">Changes in the contributed software</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI>support was added for building the library as a DSO under OSF/1 </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI>fixes to the Pixar codec <LI>portability mods for VMS </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A> <UL> <LI>fixes to <B>gif2tiff</B> and <B>ppm2tiff</B> for building under MS/DOS <LI>portability mods to <B>fax2ps</B> and <B>ycbcr</B> for VMS </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIBUTED SOFTWARE:</B></A> <UL> <LI>a new package from Alexander Lehmann for building the library and tools under MS/DOS with DJGPP v2 <LI>updated VMS support from Karsten Spang </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> <ADDRESS> <A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A> Last updated $Date: 2016-09-25 20:05:45 $. </ADDRESS> </BODY> </HTML> PK粐\A-!0qqhtml/v3.4beta034.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.4beta034 </TITLE> </HEAD> <BODY> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.4beta034<BR> <B>Previous Version</B>: <A HREF=v3.4beta033.html>v3.4beta033</A><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI>support was added for building the library as a DSO under NetBSD <LI>a bug was fixed in the DSO support for Linux <LI>the handling of version strings has changed slightly to simplify parsing <LI>a new parameter, <TT>TIFFLIBREF</TT>, was added to control how the library is referenced when linking programs in the <B>tools</B> directory </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI>DSO creation under Solaris now forces the DSO name with a <TT>-h</TT> option <LI>the interface to the <B>mkversion</B> program was changed to eliminate the need to parse files <LI>a bug was fixed in the EOL-detection logic of the T.4/T.6 decoder <LI>ANSI IT8 TIFF/IT tag definitions were added to <B>tiff.h</B> </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> <ADDRESS> <A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A> Last updated $Date: 2016-09-25 20:05:45 $. </ADDRESS> </BODY> </HTML> PK粐\�html/v3.4beta035.htmlnu�[���<HTML> <HEAD> <TITLE> Changes in TIFF v3.4beta035 </TITLE> </HEAD> <BODY> <FONT FACE="Arial, Helvetica, Sans"> <BASEFONT SIZE=4> <B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B> <BASEFONT SIZE=3> <UL> <HR SIZE=4 WIDTH=65% ALIGN=left> <B>Current Version</B>: v3.4beta035<BR> <B>Previous Version</B>: <A HREF=v3.4beta034.html>v3.4beta034</A><BR> <B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR> <HR SIZE=4 WIDTH=65% ALIGN=left> </UL> <P> This document describes the changes made to the software between the <I>previous</I> and <I>current</I> 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: <UL> <LI><A HREF="#configure">Changes in the software configuration</A> <LI><A HREF="#libtiff">Changes in libtiff</A> </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A> <UL> <LI>support was added installing the HTML documentation <LI>support was added for building the library as a DSO under FreeBSD </UL> <P><HR WIDTH=65% ALIGN=right> <A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A> <UL> <LI>the interface to the <B>mkversion</B> program was restored to the form used prior to v3.4beta034 <LI>several portability problems for 16-bit systems were fixed </UL> <A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> <HR> <ADDRESS> <A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A> Last updated $Date: 2016-09-25 20:05:45 $. </ADDRESS> </BODY> </HTML> PK粐\(�H�t�t ChangeLognu�[���2017-11-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * configure.ac: libtiff 4.0.9 released. * html/v4.0.9.html: Add HTML file to document changes in libtiff v4.0.9. 2017-11-17 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_aux.c, tif_getimage.c, tif_read.c: typo fixes in comments. 2017-11-02 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * test/Makefile.am: Add some tests for tiff2bw. 2017-11-01 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiff2bw.c (main): Free memory allocated in the tiff2bw program. This is in response to the report associated with CVE-2017-16232 but does not solve the extremely high memory usage with the associated POC file. 2017-10-29 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiff2pdf.c (t2p_sample_realize_palette): Fix possible arithmetic overflow in bounds checking code and eliminate comparison between signed and unsigned type. * tools/fax2tiff.c (_FAX_Client_Data): Pass FAX_Client_Data as the client data. This client data is not used at all at the moment, but it makes the most sense. Issue that the value of client_data.fd was passed where a pointer is expected was reported via email by Gerald Schade on Sun, 29 Oct 2017. 2017-10-23 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_getimage.c: avoid floating point division by zero in initCIELabConversion() Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=3733 Credit to OSS Fuzz 2017-10-17 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_jpeg.c: add compatibility with libjpeg-turbo 1.5.2 that honours max_memory_to_use > 0. Cf https://github.com/libjpeg-turbo/libjpeg-turbo/issues/162 2017-10-10 Even Rouault <even.rouault at spatialys.com> * nmake.opt: support a DEBUG=1 option, so as to adjust OPTFLAGS and use /MDd runtime in debug mode. 2017-10-01 Even Rouault <even.rouault at spatialys.com> * tools/tiffset.c: fix setting a single value for the ExtraSamples tag (and other tags with variable number of values). So 'tiffset -s ExtraSamples 1 X'. This only worked when setting 2 or more values, but not just one. 2017-09-29 Even Rouault <even.rouault at spatialys.com> * libtiff/libtiff.def: add TIFFReadRGBAStripExt and TIFFReadRGBATileExt Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2735 2017-09-09 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: add NULL check to avoid likely false positive null-pointer dereference warning by CLang Static Analyzer. 2017-09-07 Even Rouault <even.rouault at spatialys.com> * libtiff/tiffiop.h, tif_aux.c: redirect SeekOK() macro to a _TIFFSeekoK() function that checks if the offset is not bigger than INT64_MAX, so as to avoid a -1 error return code of TIFFSeekFile() to match a required seek to UINT64_MAX/-1. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2726 Adapted from proposal by Nicolas Ruff. 2017-08-29 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_jpeg.c: accept reading the last strip of a JPEG compressed file if the codestream height is larger than the truncated height of the strip. Emit a warning in this situation since this is non compliant. 2017-08-28 Even Rouault <even.rouault at spatialys.com> * test/Makefile.am: add missing reference to images/quad-lzw-compat.tiff to fix "make distcheck". Patch by Roger Leigh 2017-08-23 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirwrite.c: replace assertion to tag value not fitting on uint32 when selecting the value of SubIFD tag by runtime check (in TIFFWriteDirectoryTagSubifd()). Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2728 Reported by team OWL337 2017-08-23 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirwrite.c: replace assertion related to not finding the SubIFD tag by runtime check (in TIFFWriteDirectorySec()) Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2727 Reported by team OWL337 2017-07-24 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_luv.c: further reduce memory requirements for temporary buffer when RowsPerStrip >= image_length in LogLuvInitState() and LogL16InitState(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2700 Credit to OSS Fuzz 2017-07-24 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_getimage.c: fix fromskew computation when to-be-skipped pixel number is not a multiple of the horizontal subsampling, and also in some other cases. Impact putcontig8bitYCbCr44tile, putcontig8bitYCbCr42tile, putcontig8bitYCbCr41tile, putcontig8bitYCbCr21tile and putcontig8bitYCbCr12tile Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2637 (discovered by Agostino Sarubbo) and https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2691 (credit to OSS Fuzz) 2017-07-24 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_getimage.c: gtTileContig() and gtTileSeparate(): properly break from loops on error when stoponerr is set, instead of going on iterating on row based loop. 2017-07-18 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_luv.c: LogLuvInitState(): avoid excessive memory allocation when RowsPerStrip tag is missing. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2683 Credit to OSS-Fuzz 2017-07-15 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: add protection against excessive memory allocation attempts in TIFFReadDirEntryArray() on short files. Effective for mmap'ed case. And non-mmap'ed case, but restricted to 64bit builds. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2675 2017-07-15 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: in TIFFFetchStripThing(), only grow the arrays that hold StripOffsets/StripByteCounts, when they are smaller than the expected number of striles, up to 1 million striles, and error out beyond. Can be tweaked by setting the environment variable LIBTIFF_STRILE_ARRAY_MAX_RESIZE_COUNT. This partially goes against a change added on 2002-12-17 to accept those arrays of wrong sizes, but is needed to avoid denial of services. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2350 Credit to OSS Fuzz 2017-07-15 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: TIFFFillStrip() / TIFFFillTile(). Complementary fix for http://bugzilla.maptools.org/show_bug.cgi?id=2708 in the isMapped() case, so as to avoid excessive memory allocation when we need a temporary buffer but the file is truncated. 2017-07-15 Even Rouault <even.rouault at spatialys.com> * tools/tiff2pdf.c: prevent heap buffer overflow write in "Raw" mode on PlanarConfig=Contig input images. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2715 Reported by team OWL337 2017-07-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dir.c: avoid potential null pointer dereference in _TIFFVGetField() on corrupted TIFFTAG_NUMBEROFINKS tag instance. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2713 2017-07-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_lzw.c: fix potential out-of-buffer read on 1-byte LZW strips. Crashing issue only on memory mapped files, where the strip offset is the last byte of the file, and the file size is a multiple of one page size on the CPU architecture (typically 4096). Credit to myself :-) 2017-07-11 Even Rouault <even.rouault at spatialys.com> * test/tiffcp-lzw-compat.sh, test/images/quad-lzw-compat.tiff: new files to test old-style LZW decompression * test/common.sh, Makefile.am, CMakeList.txt: updated with above 2017-07-11 Even Rouault <even.rouault at spatialys.com> * refresh autoconf/make stuff with what is on Ubuntu 16.04 (minor changes) 2017-07-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_lzw.c: fix 4.0.8 regression in the decoding of old-style LZW compressed files. 2017-07-10 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_pixarlog.c: avoid excessive memory allocation on decoding when RowsPerStrip tag is not defined (and thus td_rowsperstrip == UINT_MAX) Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2554 Credit to OSS Fuzz 2017-07-04 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c, tiffiop.h: add a _TIFFReadEncodedTileAndAllocBuffer() and _TIFFReadTileAndAllocBuffer() variants of TIFFReadEncodedTile() and TIFFReadTile() that allocates the decoded buffer only after a first successful TIFFFillTile(). This avoids excessive memory allocation on corrupted files. * libtiff/tif_getimage.c: use _TIFFReadTileAndAllocBuffer(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2470 Credit to OSS Fuzz. 2017-07-04 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_error.c, tif_warning.c: correctly use va_list when both an old-style and new-style warning/error handlers are installed. Patch by Paavo Helde (sent on the mailing list) 2017-07-02 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: TIFFStartTile(): set tif_rawcc to tif_rawdataloaded when it is set. Similarly to TIFFStartStrip(). This issue was revealed by the change of 2017-06-30 in TIFFFileTile(), limiting the number of bytes read. But it could probably have been hit too in CHUNKY_STRIP_READ_SUPPORT mode previously ? Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2454 Credit to OSS Fuzz 2017-06-30 Even Rouault <even.rouault at spatialys.com> * man: update documentation regarding SubIFD tag and TIFFSetSubDirectory() data type. Patch by Eric Piel Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2671 2017-06-30 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirwrite.c: in TIFFWriteDirectoryTagCheckedXXXX() functions associated with LONG8/SLONG8 data type, replace assertion that the file is BigTIFF, by a non-fatal error. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2712 Reported by team OWL337 2017-06-30 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c, tiffiop.h: add a _TIFFReadEncodedStripAndAllocBuffer() function, variant of TIFFReadEncodedStrip() that allocates the decoded buffer only after a first successful TIFFFillStrip(). This avoids excessive memory allocation on corrupted files. * libtiff/tif_getimage.c: use _TIFFReadEncodedStripAndAllocBuffer(). Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2708 and https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2433 . Credit to OSS Fuzz 2017-06-30 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: TIFFFillTile(): add limitation to the number of bytes read in case td_stripbytecount[strip] is bigger than reasonable, so as to avoid excessive memory allocation (similarly to what was done for TIFFFileStrip() on 2017-05-10) 2017-06-29 Even Rouault <even.rouault at spatialys.com> * libtiff/tiffiop.h, libtiff/tif_jpeg.c, libtiff/tif_jpeg_12.c, libtiff/tif_read.c: make TIFFReadScanline() works in CHUNKY_STRIP_READ_SUPPORT mode with JPEG stream with multiple scans. Also make configurable through a LIBTIFF_JPEG_MAX_ALLOWED_SCAN_NUMBER environment variable the maximum number of scans allowed. Defaults to 100. 2017-06-27 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: in TIFFReadDirEntryFloat(), check that a double value can fit in a float before casting. Patch by Nicolas RUFF 2017-06-26 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_jbig.c: fix memory leak in error code path of JBIGDecode() Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2706 Reported by team OWL337 2017-06-24 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_jpeg.c: error out at decoding time if anticipated libjpeg memory allocation is above 100 MB. libjpeg in case of multiple scans, which is allowed even in baseline JPEG, if components are spread over several scans and not interleavedin a single one, needs to allocate memory (or backing store) for the whole strip/tile. See http://www.libjpeg-turbo.org/pmwiki/uploads/About/TwoIssueswiththeJPEGStandard.pdf This limitation may be overriden by setting the LIBTIFF_ALLOW_LARGE_LIBJPEG_MEM_ALLOC environment variable, or recompiling libtiff with a custom value of TIFF_LIBJPEG_LARGEST_MEM_ALLOC macro. 2017-06-24 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_jpeg.c: add anti-denial of service measure to avoid excessive CPU consumption on progressive JPEGs with a huge number of scans. See http://www.libjpeg-turbo.org/pmwiki/uploads/About/TwoIssueswiththeJPEGStandard.pdf Note: only affects libtiff since 2014-12-29 where support of non-baseline JPEG was added. 2017-06-18 Even Rouault <even.rouault at spatialys.com> * libtiff/tiffiop.h: add TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW macro to disable CLang warnings raised by -fsanitize=undefined,unsigned-integer-overflow * libtiff/tif_predict.c: decorate legitimate functions where unsigned int overflow occur with TIFF_NOSANITIZE_UNSIGNED_INT_OVERFLOW * libtiff/tif_dirread.c: avoid unsigned int overflow in EstimateStripByteCounts() and BYTECOUNTLOOKSBAD when file is too short. * libtiff/tif_jpeg.c: avoid (harmless) unsigned int overflow on tiled images. * libtiff/tif_fax3.c: avoid unsigned int overflow in Fax3Encode2DRow(). Could potentially be a bug with huge rows. * libtiff/tif_getimage.c: avoid many (harmless) unsigned int overflows. 2017-06-12 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: TIFFFetchStripThing(): limit the number of items read in StripOffsets/StripByteCounts tags to the number of strips to avoid excessive memory allocation. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=2215 Credit to OSS Fuzz 2017-06-12 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: fix regression of libtiff 4.0.8 in ChopUpSingleUncompressedStrip() regarding update of newly single-strip uncompressed files whose bytecount is 0. Before the change of 2016-12-03, the condition bytecount==0 used to trigger an early exit/disabling of strip chop. Re-introduce that in update mode. Otherwise this cause later incorrect setting for the value of StripByCounts/StripOffsets. ( https://trac.osgeo.org/gdal/ticket/6924 ) 2017-06-10 Even Rouault <even.rouault at spatialys.com> * .appveyor.yml, .travis.yml, build/travis-ci: apply patches 0001-ci-Travis-script-improvements.patch and 0002-ci-Invoke-helper-script-via-shell.patch by Roger Leigh (sent to mailing list) 2017-06-08 Even Rouault <even.rouault at spatialys.com> * .travis.yml, build/travis-ci: new files from 0001-ci-Add-Travis-support-for-Linux-builds-with-Autoconf.patch by Roger Leigh (sent to mailing list on 2017-06-08) This patch adds support for the Travis-CI service. * .appveyor.yml: new file from 0002-ci-Add-AppVeyor-support.patch by Roger Leigh (sent to mailing list on 2017-06-08) This patch adds a .appveyor.yml file to the top-level. This allows one to opt in to having a branch built on Windows with Cygwin, MinGW and MSVC automatically when a branch is pushed to GitHub, GitLab, BitBucket or any other supported git hosting service. * CMakeLists.txt, test/CMakeLists.txt, test/TiffTestCommon.cmake: apply patch 0001-cmake-Improve-Cygwin-and-MingGW-test-support.patch from Roger Leigh (sent to mailing list on 2017-06-08) This patch makes the CMake build system support running the tests with MinGW or Cygwin. 2017-06-08 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_swab.c: if DISABLE_CHECK_TIFFSWABMACROS is defined, do not do the #ifdef TIFFSwabXXX checks. Make it easier for GDAL to rename the symbols of its internal libtiff copy. 2017-06-01 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirinfo.c, tif_dirread.c: add _TIFFCheckFieldIsValidForCodec(), and use it in TIFFReadDirectory() so as to ignore fields whose tag is a codec-specified tag but this codec is not enabled. This avoids TIFFGetField() to behave differently depending on whether the codec is enabled or not, and thus can avoid stack based buffer overflows in a number of TIFF utilities such as tiffsplit, tiffcmp, thumbnail, etc. Patch derived from 0063-Handle-properly-CODEC-specific-tags.patch (http://bugzilla.maptools.org/show_bug.cgi?id=2580) by Raphaël Hertzog. Fixes: http://bugzilla.maptools.org/show_bug.cgi?id=2580 http://bugzilla.maptools.org/show_bug.cgi?id=2693 http://bugzilla.maptools.org/show_bug.cgi?id=2625 (CVE-2016-10095) http://bugzilla.maptools.org/show_bug.cgi?id=2564 (CVE-2015-7554) http://bugzilla.maptools.org/show_bug.cgi?id=2561 (CVE-2016-5318) http://bugzilla.maptools.org/show_bug.cgi?id=2499 (CVE-2014-8128) http://bugzilla.maptools.org/show_bug.cgi?id=2441 http://bugzilla.maptools.org/show_bug.cgi?id=2433 2017-05-29 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_getimage.c: initYCbCrConversion(): stricter validation for refBlackWhite coefficients values. To avoid invalid float->int32 conversion (when refBlackWhite[0] == 2147483648.f) Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1907 Credit to OSS Fuzz 2017-05-29 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_color.c: TIFFYCbCrToRGBInit(): stricter clamping to avoid int32 overflow in TIFFYCbCrtoRGB(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1844 Credit to OSS Fuzz 2017-05-21 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * configure.ac: libtiff 4.0.8 released. * html/v4.0.8.html: Add description of changes targeting the 4.0.8 release. 2017-05-20 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_getimage.c: initYCbCrConversion(): stricter validation for refBlackWhite coefficients values. To avoid invalid float->int32 conversion. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1718 Credit to OSS Fuzz 2017-05-18 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_getimage.c: initYCbCrConversion(): check luma[1] is not zero to avoid division by zero. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1665 Credit to OSS Fuzz 2017-05-17 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: _TIFFVSetField(): fix outside range cast of double to float. Credit to Google Autofuzz project 2017-05-17 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_getimage.c: initYCbCrConversion(): add basic validation of luma and refBlackWhite coefficients (just check they are not NaN for now), to avoid potential float to int overflows. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1663 Credit to OSS Fuzz 2017-05-17 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_pixarlog.c: PixarLogDecode(): resync tif_rawcp with next_in and tif_rawcc with avail_in at beginning and end of function, similarly to what is done in LZWDecode(). Likely needed so that it works properly with latest chnges in tif_read.c in CHUNKY_STRIP_READ_SUPPORT mode. But untested... 2017-05-17 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_lzw.c: update dec_bitsleft at beginning of LZWDecode(), and update tif_rawcc at end of LZWDecode(). This is needed to properly work with the latest chnges in tif_read.c in CHUNKY_STRIP_READ_SUPPORT mode. 2017-05-14 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_luv.c: LogL16InitState(): avoid excessive memory allocation when RowsPerStrip tag is missing. Credit to OSS-Fuzz (locally run, on GDAL) 2017-05-14 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_packbits.c: fix out-of-buffer read in PackBitsDecode() Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1563 Credit to OSS-Fuzz 2017-05-13 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_pixarlog.c, tif_luv.c: avoid potential int32 overflows in multiply_ms() and add_ms(). Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1558 Credit to OSS-Fuzz 2017-05-13 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_color.c: avoid potential int32 overflow in TIFFYCbCrToRGBInit() Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1533 Credit to OSS-Fuzz 2017-05-13 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: update tif_rawcc in CHUNKY_STRIP_READ_SUPPORT mode with tif_rawdataloaded when calling TIFFStartStrip() or TIFFFillStripPartial(). This avoids reading beyond tif_rawdata when bytecount > tif_rawdatasize. Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=1545. Credit to OSS-Fuzz 2017-05-12 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: TIFFFillStripPartial(): avoid excessive memory allocation in case of shorten files. Only effective on 64 bit builds. Credit to OSS-Fuzz (locally run, on GDAL) 2017-05-12 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: TIFFFillStripPartial() / TIFFSeek(), avoid potential integer overflows with read_ahead in CHUNKY_STRIP_READ_SUPPORT mode. Should especially occur on 32 bit platforms. 2017-05-10 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: TIFFFillStrip() and TIFFFillTile(): avoid excessive memory allocation in case of shorten files. Only effective on 64 bit builds and non-mapped cases. Credit to OSS-Fuzz (locally run, on GDAL) 2017-05-10 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_zip.c, tif_pixarlog.c, tif_predict.c: fix memory leak when the underlying codec (ZIP, PixarLog) succeeds its setupdecode() method, but PredictorSetup fails. Credit to OSS-Fuzz (locally run, on GDAL) 2017-05-10 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: TIFFFillStrip(): add limitation to the number of bytes read in case td_stripbytecount[strip] is bigger than reasonable, so as to avoid excessive memory allocation. 2017-04-28 Even Rouault <even.rouault at spatialys.com> * tools/tiff2bw.c: close TIFF handle in error code path. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2677 2017-04-27 Even Rouault <even.rouault at spatialys.com> * litiff/tif_fax3.c: avoid crash in Fax3Close() on empty file. Patch by Alan Coopersmith + complement by myself. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2673 * tools/fax2tiff.c: emit appropriate message if the input file is empty. Patch by Alan Coopersmith. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2672 2017-04-27 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_ojpeg.c: fix potential memory leak in OJPEGReadHeaderInfoSecTablesQTable, OJPEGReadHeaderInfoSecTablesDcTable and OJPEGReadHeaderInfoSecTablesAcTable Patch by Nicolás Peña. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2670 2017-04-27 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: fix memory leak in non DEFER_STRILE_LOAD mode (ie default) when there is both a StripOffsets and TileOffsets tag, or a StripByteCounts and TileByteCounts Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2689 * tools/tiff2ps.c: call TIFFClose() in error code paths. 2017-02-25 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_fax3.c, tif_predict.c, tif_getimage.c: fix GCC 7 -Wimplicit-fallthrough warnings. 2017-02-18 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_pixarlog.c: fix memory leak in error code path of PixarLogSetupDecode(). Patch by Nicolás Peña. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2665 2017-02-18 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_lzw.c: in LZWPostEncode(), increase, if necessary, the code bit-width after flushing the remaining code and before emitting the EOI code. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=1982 2017-01-31 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_jpeg.c: only run JPEGFixupTagsSubsampling() if the YCbCrSubsampling tag is not explicitly present. This helps a bit to reduce the I/O amount when te tag is present (especially on cloud hosted files). 2017-01-14 Even Rouault <even.rouault at spatialys.com> * tools/raw2tiff.c: avoid integer division by zero. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2631 2017-01-12 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_ojpeg.c: fix leak in OJPEGReadHeaderInfoSecTablesQTable, OJPEGReadHeaderInfoSecTablesDcTable and OJPEGReadHeaderInfoSecTablesAcTable when read fails. Patch by Nicolás Peña. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2659 2017-01-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_luv.c, tif_lzw.c, tif_packbits.c: return 0 in Encode functions instead of -1 when TIFFFlushData1() fails. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2130 2017-01-11 Even Rouault <even.rouault at spatialys.com> * tools/tiffcp.c: error out cleanly in cpContig2SeparateByRow and cpSeparate2ContigByRow if BitsPerSample != 8 to avoid heap based overflow. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2656 and http://bugzilla.maptools.org/show_bug.cgi?id=2657 2017-01-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tiffio.h, tif_unix.c, tif_win32.c, tif_vms.c: add _TIFFcalloc() * libtiff/tif_read.c: TIFFReadBufferSetup(): use _TIFFcalloc() to zero initialize tif_rawdata. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2651 2017-01-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_getimage.c: add explicit uint32 cast in putagreytile to avoid UndefinedBehaviorSanitizer warning. Patch by Nicolás Peña. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2658 2017-01-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: avoid potential undefined behaviour on signed integer addition in TIFFReadRawStrip1() in isMapped() case. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2650 2017-01-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_jpeg.c: validate BitsPerSample in JPEGSetupEncode() to avoid undefined behaviour caused by invalid shift exponent. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2648 2017-01-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dir.c, tif_dirread.c, tif_dirwrite.c: implement various clampings of double to other data types to avoid undefined behaviour if the output range isn't big enough to hold the input value. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2643 http://bugzilla.maptools.org/show_bug.cgi?id=2642 http://bugzilla.maptools.org/show_bug.cgi?id=2646 http://bugzilla.maptools.org/show_bug.cgi?id=2647 2017-01-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: avoid division by floating point 0 in TIFFReadDirEntryCheckedRational() and TIFFReadDirEntryCheckedSrational(), and return 0 in that case (instead of infinity as before presumably) Apparently some sanitizers do not like those divisions by zero. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2644 2017-01-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirwrite.c: in TIFFWriteDirectoryTagCheckedRational, replace assertion by runtime check to error out if passed value is strictly negative. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2535 * tools/tiffcrop.c: remove extraneous TIFFClose() in error code path, that caused double free. Related to http://bugzilla.maptools.org/show_bug.cgi?id=2535 2017-01-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_jpeg.c: avoid integer division by zero in JPEGSetupEncode() when horizontal or vertical sampling is set to 0. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2653 2017-01-03 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_jpeg.c: increase libjpeg max memory usable to 10 MB instead of libjpeg 1MB default. This helps when creating files with "big" tile, without using libjpeg temporary files. Related to https://trac.osgeo.org/gdal/ticket/6757 2016-12-20 Even Rouault <even.rouault at spatialys.com> * tools/tiff2pdf.c: avoid potential heap-based overflow in t2p_readwrite_pdf_image_tile(). Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2640 2016-12-20 Even Rouault <even.rouault at spatialys.com> * tools/tiff2pdf.c: avoid potential invalid memory read in t2p_writeproc. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2639 2016-12-20 Even Rouault <even.rouault at spatialys.com> * tools/tiff2pdf.c: fix wrong usage of memcpy() that can trigger unspecified behaviour. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2638 2016-12-18 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_getimage.c: fix potential memory leaks in error code path of TIFFRGBAImageBegin(). Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2627 2016-12-18 Even Rouault <even.rouault at spatialys.com> * tools/tiff2pdf.c: prevent heap-based buffer overflow in -j mode on a paletted image. Note: this fix errors out before the overflow happens. There could probably be a better fix. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2635 2016-12-17 Even Rouault <even.rouault at spatialys.com> * libtiff/tiffio.h, libtiff/tif_getimage.c: add TIFFReadRGBAStripExt() and TIFFReadRGBATileExt() variants of the functions without ext, with an extra argument to control the stop_on_error behaviour. 2016-12-17 Even Rouault <even.rouault at spatialys.com> * tools/tiff2ps.c: fix 2 heap-based buffer overflows (in PSDataBW and PSDataColorContig). Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2633 and http://bugzilla.maptools.org/show_bug.cgi?id=2634. 2016-12-13 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_fax3.h: revert change done on 2016-01-09 that made Param member of TIFFFaxTabEnt structure a uint16 to reduce size of the binary. It happens that the Hylafax software uses the tables that follow this typedef (TIFFFaxMainTable, TIFFFaxWhiteTable, TIFFFaxBlackTable), although they are not in a public libtiff header. Raised by Lee Howard. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2636 2016-12-04 Even Rouault <even.rouault at spatialys.com> * html/man/Makefile.am: remove thumbnail.1.html and rgb2ycbcr.1.html from installed pages since the corresponding utilities are no longer installed. Reported by Havard Eidnes Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2606 2016-12-03 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_write.c: fix misleading indentation as warned by GCC. 2016-12-03 Even Rouault <even.rouault at spatialys.com> * tools/tiffcp.c: replace assert( (bps % 8) == 0 ) by a non assert check. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2605 2016-12-03 Even Rouault <even.rouault at spatialys.com> * tools/tiffcp.c: fix uint32 underflow/overflow that can cause heap-based buffer overflow. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2610 2016-12-03 Even Rouault <even.rouault at spatialys.com> * tools/tiffcp.c: avoid potential division by zero is BitsPerSamples tag is missing. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2607 2016-12-03 Even Rouault <even.rouault at spatialys.com> * man/Makefile.am: remove thumbnail.1 and rgb2ycbcr.1 from installed man pages since the corresponding utilities are no longer installed. Reported by Havard Eidnes Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2606 2016-12-03 Even Rouault <even.rouault at spatialys.com> * tools/tif_dir.c: when TIFFGetField(, TIFFTAG_NUMBEROFINKS, ) is called, limit the return number of inks to SamplesPerPixel, so that code that parses ink names doesn't go past the end of the buffer. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2599 2016-12-03 Even Rouault <even.rouault at spatialys.com> * tools/tiffcp.c: avoid potential division by zero is BitsPerSamples tag is missing. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2597 2016-12-03 Even Rouault <even.rouault at spatialys.com> * tools/tiffinfo.c: fix null pointer dereference in -r mode when the image has no StripByteCount tag. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2594 2016-12-03 Even Rouault <even.rouault at spatialys.com> * tools/tiffcrop.c: fix integer division by zero when BitsPerSample is missing. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2619 2016-12-03 Even Rouault <even.rouault at spatialys.com> * tools/tiffcrop.c: add 3 extra bytes at end of strip buffer in readSeparateStripsIntoBuffer() to avoid read outside of heap allocated buffer. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2621 2016-12-03 Even Rouault <even.rouault at spatialys.com> * tools/tiffcrop.c: fix readContigStripsIntoBuffer() in -i (ignore) mode so that the output buffer is correctly incremented to avoid write outside bounds. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2620 2016-12-03 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_ojpeg.c: make OJPEGDecode() early exit in case of failure in OJPEGPreDecode(). This will avoid a divide by zero, and potential other issues. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2611 2016-12-03 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: modify ChopUpSingleUncompressedStrip() to instanciate compute ntrips as TIFFhowmany_32(td->td_imagelength, rowsperstrip), instead of a logic based on the total size of data. Which is faulty is the total size of data is not sufficient to fill the whole image, and thus results in reading outside of the StripByCounts/StripOffsets arrays when using TIFFReadScanline(). Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2608. * libtiff/tif_strip.c: revert the change in TIFFNumberOfStrips() done for http://bugzilla.maptools.org/show_bug.cgi?id=2587 / CVE-2016-9273 since the above change is a better fix that makes it unnecessary. 2016-12-03 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_pixarlog.c, libtiff/tif_luv.c: fix heap-based buffer overflow on generation of PixarLog / LUV compressed files, with ColorMap, TransferFunction attached and nasty plays with bitspersample. The fix for LUV has not been tested, but suffers from the same kind of issue of PixarLog. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2604 2016-12-02 Even Rouault <even.rouault at spatialys.com> * tools/tiffcp.c: avoid uint32 underflow in cpDecodedStrips that can cause various issues, such as buffer overflows in the library. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2598 2016-12-02 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c, libtiff/tiffiop.h: fix uint32 overflow in TIFFReadEncodedStrip() that caused an integer division by zero. Reported by Agostino Sarubbo. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2596 2016-11-20 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_getimage.c, libtiff/tif_open.c: add parenthesis to fix cppcheck clarifyCalculation warnings * libtiff/tif_predict.c, libtiff/tif_print.c: fix printf unsigned vs signed formatting (cppcheck invalidPrintfArgType_uint warnings) 2016-11-20 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/fax2tiff.c (main): Applied patch by Jörg Ahrens to fix passing client data for Win32 builds using tif_win32.c (USE_WIN32_FILEIO defined) for file I/O. Patch was provided via email on November 20, 2016. 2016-11-19 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff 4.0.7 released. * configure.ac: Update for 4.0.7 release. * tools/tiffdump.c (ReadDirectory): Remove uint32 cast to _TIFFmalloc() argument which resulted in Coverity report. Added more mutiplication overflow checks. 2016-11-18 Even Rouault <even.rouault at spatialys.com> * tools/tiffcrop.c: Fix memory leak in (recent) error code path. Fixes Coverity 1394415. 2016-11-17 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_getimage.c: Fix some benign warnings which appear in 64-bit compilation under Microsoft Visual Studio of the form "Arithmetic overflow: 32-bit value is shifted, then cast to 64-bit value. Results might not be an expected value.". Problem was reported on November 16, 2016 on the tiff mailing list. 2016-11-16 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: in TIFFFetchNormalTag(), do not dereference NULL pointer when values of tags with TIFF_SETGET_C16_ASCII / TIFF_SETGET_C32_ASCII access are 0-byte arrays. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2593 (regression introduced by previous fix done on 2016-11-11 for CVE-2016-9297). Reported by Henri Salo. Assigned as CVE-2016-9448 2016-11-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffinfo.c (TIFFReadContigTileData): Fix signed/unsigned comparison warning. (TIFFReadSeparateTileData): Fix signed/unsigned comparison warning. * tools/tiffcrop.c (readContigTilesIntoBuffer): Fix signed/unsigned comparison warning. * html/v4.0.7.html: Add a file to document the pending 4.0.7 release. 2016-11-11 Even Rouault <even.rouault at spatialys.com> * tools/tiff2pdf.c: avoid undefined behaviour related to overlapping of source and destination buffer in memcpy() call in t2p_sample_rgbaa_to_rgb() Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2577 2016-11-11 Even Rouault <even.rouault at spatialys.com> * tools/tiff2pdf.c: fix potential integer overflows on 32 bit builds in t2p_read_tiff_size() Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2576 2016-11-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_aux.c: fix crash in TIFFVGetFieldDefaulted() when requesting Predictor tag and that the zip/lzw codec is not configured. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2591 2016-11-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: in TIFFFetchNormalTag(), make sure that values of tags with TIFF_SETGET_C16_ASCII / TIFF_SETGET_C32_ASCII access are null terminated, to avoid potential read outside buffer in _TIFFPrintField(). Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2590 (CVE-2016-9297) 2016-11-11 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: reject images with OJPEG compression that have no TileOffsets/StripOffsets tag, when OJPEG compression is disabled. Prevent null pointer dereference in TIFFReadRawStrip1() and other functions that expect td_stripbytecount to be non NULL. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2585 2016-11-11 Even Rouault <even.rouault at spatialys.com> * tools/tiffcrop.c: fix multiple uint32 overflows in writeBufferToSeparateStrips(), writeBufferToContigTiles() and writeBufferToSeparateTiles() that could cause heap buffer overflows. Reported by Henri Salo from Nixu Corporation. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2592 (CVE-2016-9532) 2016-11-10 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_strip.c: make TIFFNumberOfStrips() return the td->td_nstrips value when it is non-zero, instead of recomputing it. This is needed in TIFF_STRIPCHOP mode where td_nstrips is modified. Fixes a read outsize of array in tiffsplit (or other utilities using TIFFNumberOfStrips()). Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2587 (CVE-2016-9273) 2016-11-04 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_predic.c: fix memory leaks in error code paths added in previous commit (fix for MSVR 35105) 2016-10-31 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_predict.h, libtiff/tif_predict.c: Replace assertions by runtime checks to avoid assertions in debug mode, or buffer overflows in release mode. Can happen when dealing with unusual tile size like YCbCr with subsampling. Reported as MSVR 35105 by Axel Souchet & Vishal Chauhan from the MSRC Vulnerabilities & Mitigations team. 2016-10-26 Even Rouault <even.rouault at spatialys.com> * tools/fax2tiff.c: fix segfault when specifying -r without argument. Patch by Yuriy M. Kaminskiy. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2572 2016-10-25 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dir.c: discard values of SMinSampleValue and SMaxSampleValue when they have been read and the value of SamplesPerPixel is changed afterwards (like when reading a OJPEG compressed image with a missing SamplesPerPixel tag, and whose photometric is RGB or YCbCr, forcing SamplesPerPixel being 3). Otherwise when rewriting the directory (for example with tiffset, we will expect 3 values whereas the array had been allocated with just one), thus causing a out of bound read access. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2500 (CVE-2014-8127, duplicate: CVE-2016-3658) * libtiff/tif_dirwrite.c: avoid null pointer dereference on td_stripoffset when writing directory, if FIELD_STRIPOFFSETS was artificially set for a hack case in OJPEG case. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2500 (CVE-2014-8127, duplicate: CVE-2016-3658) 2016-10-25 Even Rouault <even.rouault at spatialys.com> * tools/tiffinfo.c: fix out-of-bound read on some tiled images. (http://bugzilla.maptools.org/show_bug.cgi?id=2517) * libtiff/tif_compress.c: make TIFFNoDecode() return 0 to indicate an error and make upper level read routines treat it accordingly. (linked to the test case of http://bugzilla.maptools.org/show_bug.cgi?id=2517) 2016-10-14 Even Rouault <even.rouault at spatialys.com> * tools/tiffcrop.c: fix out-of-bound read of up to 3 bytes in readContigTilesIntoBuffer(). Reported as MSVR 35092 by Axel Souchet & Vishal Chauhan from the MSRC Vulnerabilities & Mitigations team. 2016-10-09 Even Rouault <even.rouault at spatialys.com> * tools/tiff2pdf.c: fix write buffer overflow of 2 bytes on JPEG compressed images. Reported by Tyler Bohan of Cisco Talos as TALOS-CAN-0187 / CVE-2016-5652. Also prevents writing 2 extra uninitialized bytes to the file stream. 2016-10-08 Even Rouault <even.rouault at spatialys.com> * tools/tiffcp.c: fix out-of-bounds write on tiled images with odd tile width vs image width. Reported as MSVR 35103 by Axel Souchet and Vishal Chauhan from the MSRC Vulnerabilities & Mitigations team. 2016-10-08 Even Rouault <even.rouault at spatialys.com> * tools/tiff2pdf.c: fix read -largely- outsize of buffer in t2p_readwrite_pdf_image_tile(), causing crash, when reading a JPEG compressed image with TIFFTAG_JPEGTABLES length being one. Reported as MSVR 35101 by Axel Souchet and Vishal Chauhan from the MSRC Vulnerabilities & Mitigations team. CVE-2016-9453 2016-10-08 Even Rouault <even.rouault at spatialys.com> * tools/tiffcp.c: fix read of undefined variable in case of missing required tags. Found on test case of MSVR 35100. * tools/tiffcrop.c: fix read of undefined buffer in readContigStripsIntoBuffer() due to uint16 overflow. Probably not a security issue but I can be wrong. Reported as MSVR 35100 by Axel Souchet from the MSRC Vulnerabilities & Mitigations team. 2016-09-25 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * html: Change as many remotesensing.org broken links to a working URL as possible. 2016-09-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_getimage.c (TIFFRGBAImageOK): Reject attempts to read floating point images. * libtiff/tif_predict.c (PredictorSetup): Enforce bits-per-sample requirements of floating point predictor (3). Fixes CVE-2016-3622 "Divide By Zero in the tiff2rgba tool." 2016-09-23 Even Rouault <even.rouault at spatialys.com> * tools/tiffcrop.c: fix various out-of-bounds write vulnerabilities in heap or stack allocated buffers. Reported as MSVR 35093, MSVR 35096 and MSVR 35097. Discovered by Axel Souchet and Vishal Chauhan from the MSRC Vulnerabilities & Mitigations team. * tools/tiff2pdf.c: fix out-of-bounds write vulnerabilities in heap allocate buffer in t2p_process_jpeg_strip(). Reported as MSVR 35098. Discovered by Axel Souchet and Vishal Chauhan from the MSRC Vulnerabilities & Mitigations team. * libtiff/tif_pixarlog.c: fix out-of-bounds write vulnerabilities in heap allocated buffers. Reported as MSVR 35094. Discovered by Axel Souchet and Vishal Chauhan from the MSRC Vulnerabilities & Mitigations team. * libtiff/tif_write.c: fix issue in error code path of TIFFFlushData1() that didn't reset the tif_rawcc and tif_rawcp members. I'm not completely sure if that could happen in practice outside of the odd behaviour of t2p_seekproc() of tiff2pdf). The report points that a better fix could be to check the return value of TIFFFlushData1() in places where it isn't done currently, but it seems this patch is enough. Reported as MSVR 35095. Discovered by Axel Souchet & Vishal Chauhan & Suha Can from the MSRC Vulnerabilities & Mitigations team. 2016-09-20 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * html/man/index.html: Comment out links to documentation for abandoned utilities. 2016-09-17 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_lzma.c: typo fix in comment 2016-09-04 Even Rouault <even.rouault at spatialys.com> * libtiff/*.c: fix warnings raised by clang 3.9 -Wcomma 2016-09-03 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirwrite.c, libtiff/tif_color.c: fix warnings raised by GCC 5 / clang -Wfloat-conversion 2016-08-16 Even Rouault <even.rouault at spatialys.com> * tools/tiffcrop.c: fix C99'ism. 2016-08-15 Even Rouault <even.rouault at spatialys.com> * tools/tiff2bw.c: fix weight computation that could result of color value overflow (no security implication). Fix bugzilla #2550. Patch by Frank Freudenberg. 2016-08-15 Even Rouault <even.rouault at spatialys.com> * tools/rgb2ycbcr.c: validate values of -v and -h parameters to avoid potential divide by zero. Fixes CVE-2016-3623 (bugzilla #2569) 2016-08-15 Even Rouault <even.rouault at spatialys.com> * tools/tiffcrop.c: Fix out-of-bounds write in loadImage(). From patch libtiff-CVE-2016-3991.patch from libtiff-4.0.3-25.el7_2.src.rpm by Nikola Forro (bugzilla #2543) 2016-08-15 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_pixarlog.c: Fix write buffer overflow in PixarLogEncode if more input samples are provided than expected by PixarLogSetupEncode. Idea based on libtiff-CVE-2016-3990.patch from libtiff-4.0.3-25.el7_2.src.rpm by Nikola Forro, but with different and simpler check. (bugzilla #2544) 2016-08-15 Even Rouault <even.rouault at spatialys.com> * tools/tiff2rgba.c: Fix integer overflow in size of allocated buffer, when -b mode is enabled, that could result in out-of-bounds write. Based initially on patch tiff-CVE-2016-3945.patch from libtiff-4.0.3-25.el7_2.src.rpm by Nikola Forro, with correction for invalid tests that rejected valid files. (bugzilla #2545) 2016-07-11 Even Rouault <even.rouault at spatialys.com> * tools/tiffcrop.c: Avoid access outside of stack allocated array on a tiled separate TIFF with more than 8 samples per pixel. Reported by Kaixiang Zhang of the Cloud Security Team, Qihoo 360 (CVE-2016-5321 / CVE-2016-5323 , bugzilla #2558 / #2559) 2016-07-10 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: Fix out-of-bounds read on memory-mapped files in TIFFReadRawStrip1() and TIFFReadRawTile1() when stripoffset is beyond tmsize_t max value (reported by Mathias Svensson) 2016-07-10 Even Rouault <even.rouault at spatialys.com> * tools/tiffdump.c: fix a few misaligned 64-bit reads warned by -fsanitize 2016-07-03 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c: make TIFFReadEncodedStrip() and TIFFReadEncodedTile() directly use user provided buffer when no compression (and other conditions) to save a memcpy(). * libtiff/tif_write.c: make TIFFWriteEncodedStrip() and TIFFWriteEncodedTile() directly use user provided buffer when no compression to save a memcpy(). 2016-07-01 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_luv.c: validate that for COMPRESSION_SGILOG and PHOTOMETRIC_LOGL, there is only one sample per pixel. Avoid potential invalid memory write on corrupted/unexpected images when using the TIFFRGBAImageBegin() interface (reported by Clay Wood) 2016-06-28 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_pixarlog.c: fix potential buffer write overrun in PixarLogDecode() on corrupted/unexpected images (reported by Mathias Svensson) (CVE-2016-5875) 2016-06-15 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/libtiff.def: Added _TIFFMultiply32 and _TIFFMultiply64 to libtiff.def 2016-06-05 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/Makefile.am: The libtiff tools bmp2tiff, gif2tiff, ras2tiff, sgi2tiff, sgisv, and ycbcr are completely removed from the distribution. The libtiff tools rgb2ycbcr and thumbnail are only built in the build tree for testing. Old files are put in new 'archive' subdirectory of the source repository, but not in distribution archives. These changes are made in order to lessen the maintenance burden. 2016-05-10 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_config.vc.h (HAVE_SNPRINTF): Add a '1' to the HAVE_SNPRINTF definition.' 2016-05-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_config.vc.h (HAVE_SNPRINTF): Applied patch by Edward Lam to define HAVE_SNPRINTF for Visual Studio 2015. 2016-04-27 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: when compiled with DEFER_STRILE_LOAD, fix regression, introduced on 2014-12-23, when reading a one-strip file without a StripByteCounts tag. GDAL #6490 2016-04-07 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * html/bugs.html: Replace Andrey Kiselev with Bob Friesenhahn for purposes of security issue reporting. 2016-01-23 Even Rouault <even.rouault at spatialys.com> * libtiff/*: upstream typo fixes (mostly contributed by Kurt Schwehr) coming from GDAL internal libtiff 2016-01-09 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_fax3.h: make Param member of TIFFFaxTabEnt structure a uint16 to reduce size of the binary. 2016-01-03 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_read.c, tif_dirread.c: fix indentation issues raised by GCC 6 -Wmisleading-indentation 2015-12-27 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_pixarlog.c: avoid zlib error messages to pass a NULL string to %s formatter, which is undefined behaviour in sprintf(). 2015-12-27 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_next.c: fix potential out-of-bound write in NeXTDecode() triggered by http://lcamtuf.coredump.cx/afl/vulns/libtiff5.tif (bugzilla #2508) 2015-12-27 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_luv.c: fix potential out-of-bound writes in decode functions in non debug builds by replacing assert()s by regular if checks (bugzilla #2522). Fix potential out-of-bound reads in case of short input data. 2015-12-26 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_getimage.c: fix out-of-bound reads in TIFFRGBAImage interface in case of unsupported values of SamplesPerPixel/ExtraSamples for LogLUV / CIELab. Add explicit call to TIFFRGBAImageOK() in TIFFRGBAImageBegin(). Fix CVE-2015-8665 reported by limingxing and CVE-2015-8683 reported by zzf of Alibaba. 2015-12-21 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: workaround false positive warning of Clang Static Analyzer about null pointer dereference in TIFFCheckDirOffset(). 2015-12-19 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_fax3.c: remove dead assignment in Fax3PutEOLgdal(). Found by Clang Static Analyzer 2015-12-18 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirwrite.c: fix truncation to 32 bit of file offsets in TIFFLinkDirectory() and TIFFWriteDirectorySec() when aligning directory offsets on a even offset (affects BigTIFF). This was a regression of the changeset of 2015-10-19. 2015-12-12 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_write.c: TIFFWriteEncodedStrip() and TIFFWriteEncodedTile() should return -1 in case of failure of tif_encodestrip() as documented * libtiff/tif_dumpmode.c: DumpModeEncode() should return 0 in case of failure so that the above mentionned functions detect the error. 2015-12-06 Even Rouault <even.rouault at spatialys.com> * libtiff/uvcode.h: const'ify uv_code array 2015-12-06 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirinfo.c: const'ify tiffFields, exifFields, tiffFieldArray and exifFieldArray arrays 2015-12-06 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_print.c: constify photoNames and orientNames arrays 2015-12-06 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_close.c, libtiff/tif_extension.c : rename link variable to avoid -Wshadow warnings 2015-11-22 Even Rouault <even.rouault at spatialys.com> * libtiff/*.c: fix typos in comments (patch by Kurt Schwehr) 2015-11-22 Even Rouault <even.rouault at spatialys.com> * libtiff/*.c: fix MSVC warnings related to cast shortening and assignment within conditional expression 2015-11-18 Even Rouault <even.rouault at spatialys.com> * libtiff/*.c: fix clang -Wshorten-64-to-32 warnings 2015-11-18 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: initialize double* data at line 3693 to NULL to please MSVC 2013 2015-11-17 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: prevent reading ColorMap or TransferFunction if BitsPerPixel > 24, so as to avoid huge memory allocation and file read attempts 2015-11-02 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dirread.c: remove duplicated assignment (reported by Clang static analyzer) 2015-10-28 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dir.c, libtiff/tif_dirinfo.c, libtiff/tif_compress.c, libtiff/tif_jpeg_12.c: suppress warnings about 'no previous declaration/prototype' 2015-10-19 Even Rouault <even.rouault at spatialys.com> * libtiff/tiffiop.h, libtiff/tif_dirwrite.c: suffix constants by U to fix 'warning: negative integer implicitly converted to unsigned type' warning (part of -Wconversion) 2015-10-17 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_dir.c, libtiff/tif_dirread.c, libtiff/tif_getimage.c, libtiff/tif_print.c: fix -Wshadow warnings (only in libtiff/) 2015-09-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff 4.0.6 released. * html/v4.0.6.html: Added release notes for 4.0.6. 2015-09-06 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffgt.c: Silence glut API deprecation warnings on MacOS X. Patch by Roger Leigh. * Makefile.am: Added a 'coverity' rule to assist with Coverity submissions. * tools/tiff2pdf.c: Fix compiler warning about unused function when JPEG is not available. * tools/fax2ps.c (main): Detect failure to write to temporary file. 2015-09-05 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_dirread.c (TIFFReadDirEntryCheckRangeSlongSlong8): Change implementation so that it does not sometimes overflow the range of a 32-bit int and to avoid a signed vs unsigned compare compiler warning. (TIFF_INT64_MAX): Avoid use of platform-specific large constants. (TIFF_UINT32_MAX): Avoid use of platform-specific large constants. 2015-09-01 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * Makefile.am (distcheck-hook), configure.ac: Applied patches by Roger Leigh (via tiff mailing list on 2015-09-01) to fix issue with BSD make and to make use of cmake in 'distcheck' target conditional on if cmake is available. * CMakeLists.txt, Makefile.am, configure.ac: Applied patches by Roger Leigh (via tiff mailing list on 2015-09-01). CMake build is now included in 'distcheck' target. Builds with CMake 2.8.9 and newer. Tar is now resquested to use POSIX PAX format. 2015-08-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * CMakeLists.txt, libtiff/test/Makefile.am: Applied patches by Roger Leigh (via tiff mailing list on 2015-08-31. CMake reads all version information directly from configure.ac to avoid duplication of values. This basically greps over the file for the LIBTIFF_* variables, then translates them to the form needed for cmake. This includes the release version and libtool shared library version information. Make shared/static library building configurable. Currently it always builds shared libraries, with static libs having a _static suffix (copying zlib, but it means it's got a non-standard name). CMake has a -DBUILD_SHARED_LIBS=ON|OFF option to select one or the other, which is now used instead. There's now a single "tiff" target to build either shared or static as required, and all the tests and tools are linked with this. Note: the Windows tests fail when linked with a static libtiff (says: libtiff.dll not found). Not really a regression since this was not tested up to this point, and it's likely the unit tests haven't (ever?) been run on Windows with a static libtiff, so there's some additional portability issue here to address. Works fine on UNIX systems, and fine on Windows with the default to build a DLL. Add a missing file which wasn't being distributed, causing unit tests to fail. Note that "find . -name '*.cmake'" lists all the CMake files which need distributing in addition to all the CMakeLists.txt files (which now are distributed). 2015-08-31 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_predict.c: pedantic change to add explicit masking with 0xff before casting to uchar in floating-point horizontal differencing and accumulation routines. 2015-08-31 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_predict.c: fix generation of output with 16 bit or 32 bit integer, when byte swapping is needed, in horizontal predictor (#2521). Also fixes decoding when there is a single pixel to code (unlikely case...) and byte swapping is involved. 2015-08-30 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_lzw.c: make nextdata a unsigned type to avoid undefined behaviour with shifts (gcc -fsanitize=shift) 2015-08-30 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_fax3.c, libtiff/tif_lzw.c, libtiff/tif_predict.c: add explicit masking with 0xff before casting to unsigned char (make icc -check=conversions happy) * libtiff/tif_predict.c: operate on unsigned datatypes when computing/applying differences to avoid undefined behaviour of signed types (C standard compliance) 2015-08-30 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * configure.ac: libtiff 4.0.5 released. 2015-08-29 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * CMakeLists.txt: Applied patch by Roger Leigh (via tiff mailing list on 2015-08-29) to add ld-version-script option to cmake build to match autoconf. Note: defaults to 'on' to be ABI-compatible by default with common Linux distribution builds. Note that the autoconf configure script defaults to 'off'. * html/build.html: Applied patch by Roger Leigh (via tiff mailing list on 2015-08-29) to describe how to use CMake to build libtiff. 2015-08-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * html/v4.0.5.html: Added HTML file describing the changes which will appear in the 4.0.5 release. 2015-08-23 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tiffiop.h: For MinGW comiles, make sure that build supports necessary __MSVCRT_VERSION__ (at least at least 0x800). Otherwise large files can not be supported for POSIX-style I/O. * tools/fax2tiff.c (main): Eliminate a compiler warning in 64-bit builds about cast to thandle_t. * test/rewrite_tag.c (main): Does not require any arguments. 2015-08-20 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/CMakeLists.txt, port/snprintf.c: Patch by Roger Leigh to fix build issues when using Cmake due to Windows large file changes. 2015-08-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tiffiop.h: First cut at supporting large files under Microsoft Windows using tif_unix.c and the libtiff tools. This only works if the Windows CDK is new enough to support the APIs used (Visual C++ 2005 or later). Support for large files is not actually tested yet. 2015-08-15 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_jpeg.c: Applied patch by Räisä Olli to assure that client_data is initialized to a known value, and to report an error on two memory allocation failures. 2015-08-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * CMakeLists.txt: Applied patch by Roger Leigh to fix libtiffxx symbol versioning. Patch was mailed to libtiff list on Thu, 13 Aug 2015. 2015-07-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * cmake: Add d suffix to debug libraries with MSVC. Patch #3 of 3 by Roger Leigh posted to tiff list on Wed, 1 Jul 2015 15:58:20 +0100. * cmake: Add extra warning flags. Patch #2 of 3 by Roger Leigh posted to tiff list on Wed, 1 Jul 2015 15:58:20 +0100. * cmake: Correct snprintf fallback for VS2015. Patch #1 of 3 by Roger Leigh posted to tiff list on Wed, 1 Jul 2015 15:58:20 +0100. 2015-06-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * CMakeLists.txt: Add CMake patchset by Roger Leigh as posted to libtiff mailing list on Mon, 22 Jun 2015 21:21:01 +0100. Several corrections to ensure that the autotools build still works were added by me. I have not yet tested the build using 'cmake' or MSVC with 'nmake'. 2015-06-21 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * test/Makefile.am: tiff2rgba-quad-tile.jpg.sh depends on the JPEG library so only execute if JPEG is available. * libtiff 4.0.4 released. * configure.ac: Add a HAVE_FOO Automake conditional for each add-on library. * test/Makefile.am (JPEG_DEPENDENT_CHECK_PROG): raw_decode requires JPEG support to compile. Use Automake conditional to only include it when JPEG support is available. * html/build.html: Try to improve the nmake-based VC++ build description. * libtiff/tiffconf.vc.h: Build fixes based on testing. * libtiff/tif_config.vc.h: Build fixes based on testing. * libtiff/libtiff.def: TIFFRasterScanline does not exist so remove export for it. 2015-06-20 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_config.vc.h: Make adjustments to match the new definitions that configure produces, including for WIN64. Still needs to be tested. * configure.ac: For 64-bit MinGW, fix SSIZE_FORMAT formatting specifier. 64-bit MinGW supports 'long long' but support for 'lld' is not assured by the run-time DLLs and so GCC warns. Add TIFF_SIZE_T and TIFF_SIZE_FORMAT to provide a type definition and printf format specifier to deal with printing values of 'size_t' type. In particular, this was necessary for WIN64. Added a configure test for if the system headers provide 'optarg' (normal case) and block out the many explicit 'extern' statements in the utilities. This was found to be necessary under Windows when getopt is in a DLL and the symbols are already imported with dllimport via standard header files. * test/raw_decode.c (XMD_H): Avoid conflicting typedefs for INT32 and boolean in MinGW build due to including jpeglib.h. * test/rewrite_tag.c (main): Fix problem with location of variable declaration. * libtiff/libtiff.def: Added exports for TIFFGetConfiguredCODECs, TIFFReadRGBAImageOriented, TIFFSetCompressionScheme, TIFFSwabArrayOfTriples, TIFFVGetFieldDefaulted, _TIFFCheckRealloc, TIFFRasterScanline, TIFFSetErrorHandlerExt, TIFFSetWarningHandlerExt, TIFFNumberOfDirectories, TIFFCreateCustomDirectory, TIFFCreateEXIFDirectory, TIFFWriteCustomDirectory, _TIFFRewriteField as recommended by Roger Leigh and justified by use in libtiff tests, documentation, and changelog notes. Also sorted symbol list and removed duplicate entries. 2015-06-16 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_getimage.c: Fix four Coverity issues related to unintended sign extension. 2015-06-16 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_unix.c: fix compilation with MSVC (fix by Jeff McKenna) 2015-06-14 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_unix.c: contribution from Vadim Zeitlin on Bugzilla Bug #2510 fixes several harmless but still annoying warnings * configure: contribution from Ludolf Holzheid on Bugzilla Bug #2498. Adds an option to select the file I/O style on Windows hosts. * libtiff/tif_getimage.c: contribution from Gary Cramblitt on Bugzilla Bug #2409. Correct reading of certain tiled TIFFs. * configure, configure.ac: contribution from Marcos H. Woehrmann on Bugzilla Bug #2405. Correct shell equality operator. * tools/tiffgt.c (raster_draw): contribution from Jay Berkenbilt on Bugzilla Bug #2401. Appropriately call glFlush(). * tools/tiff2pdf.c: change ColorTransform from "0" to "1" following Bugzilla Bug #2150. 2015-06-13 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_lzw.c: contribution from Andy Cave - decode files that contain consecutive CODE_CLEAR codes. * tools/tiff2pdf.c: contribution from Antti S. Lankila on Bugzilla Bug #2078. Suppress initial output of the header. * tools/tiff2pdf.c: contribution from Yuriy M. Kaminskiy - Take care in using the return value from snprintf(). * tools/tiffcrop.c: contribution from Eduardo Robles Elvira - correctly copy the compression tag from the source TIFF. * tools/tiff2ps.c: contribution from Eduardo Robles Elvira - correct sizing and scaling problems with output document. 2015-06-10 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_jpeg.c (JPEGDecode): Split JPEGDecode() into two clean implementations in order to avoid pre-processor hell. Only one of the implementations is used in a given build. 2015-06-08 Even Rouault <even.rouault at spatialys.com> * libtiff/tif_jpeg.c: Fix compilation in BITS_IN_JSAMPLE == 12 case 2015-06-07 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_write.c (TIFFWriteEncodedStrip): Fix Coverity 715975 "Division or modulo by zero". (TIFFWriteEncodedTile): Fix Coverity 715976 and 715977 "Division or modulo by zero". (TIFFWriteRawStrip): Fix Coverity 715978 "Division or modulo by zero". (TIFFWriteScanline): Fix Coverity 715979 "Division or modulo by zero". * libtiff/tif_read.c (TIFFStartTile): Fix Coverity 715973 and 715974 "Division or modulo by zero". 2015-05-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_dir.c (TIFFNumberOfDirectories): Quiet Coverity 1134470 "Logically dead code" by making the roll-over check explicit. * libtiff/tif_luv.c (LogLuvDecodeTile): Fix Coverity 991227 "Division or modulo by zero". (LogLuvDecodeStrip): Fix Coverity 991239 "Division or modulo by zero". (LogLuvEncodeStrip): Fix Coverity 991240 "Division or modulo by zero". (LogLuvEncodeTile): Fix Coverity 991241 "Division or modulo by zero". * libtiff/tif_dirread.c (TIFFReadDirEntryDoubleArray): Fix Coverity 298626 "Logically dead code". (TIFFReadDirEntryFloatArray): Fix Coverity 298627 "Logically dead code". (TIFFReadDirEntryIfd8Array): Fix Coverity 298628 "Logically dead code". (TIFFReadDirEntrySlong8Array): Fix Coverity 298629 "Logically dead code" * libtiff/tif_dir.c (TIFFNumberOfDirectories): Don't depend on ++ operator precedenc in evaluation. Might quench Coverity 1134470 "Logically dead code". * libtiff/tif_jpeg.c (JPEGDecode): Fix Coverity 602597 "Operands don't affect result". This change uses ifdefs to include applicable code based on properties of libjpeg. Still needs to be re-tested with 12-bit "6b" and "MK1". 2015-05-30 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_dirwrite.c (_TIFFRewriteField): Fix Coverity 1024310 "Resource leak". * libtiff/tif_ojpeg.c (OJPEGReadHeaderInfoSecStreamDht): Fix Coverity 601720 "Resource leak". * libtiff/tif_jpeg.c (JPEGCleanup): Fix Coverity 298624 "Dereference before null check". * libtiff/tif_ojpeg.c (OJPEGReadBufferFill): Fix Coverity 603400 "Missing break in switch". * contrib/addtiffo/tif_overview.c (TIFF_DownSample): Check buffer size calculation for overflow. * contrib/addtiffo/addtiffo.c (main): Possibly address Coverity 1024226 "Untrusted value as argument". * tools/gif2tiff.c (readgifimage): Fix Coverity 1024222 "Untrusted value as argument". (checksignature): Fix Coverity 1024894 "Ignoring number of bytes read". (readextension): Fix Coverity 1024893 "Ignoring number of bytes read". (readgifimage): Fix Coverity 1024890 "Ignoring number of bytes read". (readraster): Fix Coverity 1024891 "Ignoring number of bytes read". (readgifimage): Fix Coverity 1024892 "Ignoring number of bytes read". * tools/tiff2pdf.c (t2p_readwrite_pdf_image): Fix Coverity 1024181 "Structurally dead code". * tools/raw2tiff.c (main): Fix Coverity 1024887 "Unchecked return value from library". (guessSize): Fix Coverity 1024888 "Unchecked return value from library". (guessSize): Fix Coverity 1214162 "Ignoring number of bytes read". (guessSize): Fix Coverity 1024889 "Unchecked return value from library". * tools/tiff2pdf.c (t2p_readwrite_pdf_image): Fix Coverity 298621 "Resource leak". (t2p_readwrite_pdf_image): Fix Coverity 1024181 "Structurally dead code". (t2p_write_pdf): Fix Coverity 1227690 "Unused value". 2015-05-29 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * contrib/iptcutil/iptcutil.c (formatIPTC): Fix Coverity 1024468 "Infinite loop". (formatIPTC): Fix Coverity 1024727 "Truncated stdio return value". (formatIPTC): Fix Coverity 1214240 "Untrusted loop bound". 2015-05-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * contrib/addtiffo/tif_ovrcache.c (TIFFCreateOvrCache): Fix Coverity 298615 "Resource leak". (TIFFGetOvrBlock): Fix Coverity 1024649 "Unintended sign extension". * tools/bmp2tiff.c (main): Fix Coverity 1024225 "Untrusted value as argument". (main): Fix Coverity 1024678 "Unchecked return value from library". (main): Fix Coverity 1024679 "Unchecked return value from library". (main): Fix Coverity 1214160 "Ignoring number of bytes read". * contrib/addtiffo/tif_ovrcache.c (TIFFCreateOvrCache): Fix Coverity 298615 "Resource leak". * tools/tiffcp.c: Fix Coverity 1024306, 1024307, 1024308, 1024309 "Resource leak". * tools/tiffsplit.c (cpTiles): Fix Coverity 1024304 "Resource leak". (cpStrips): Fix Coverity 1024305 "Resource leak". 2015-05-27 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/ras2tiff.c: Fix Sun Raster header definition to be safe for 64-bit systems. Add some header validations. Should fix many Coverity issues. (main): Fix Coverity 1301206: "Integer handling issues (BAD_SHIFT)". (main): Quiet Coverity 1024223 "Untrusted value as argument". * tools/tiffmedian.c (GetInputLine): Fix Coverity 1024795 "Nesting level does not match indentation". (get_histogram): Quiet Coverity 1024386 "Out-of-bounds read". This was a benign mis-diagnosis but added code to enforce against buffer overflow. * tools/tiffcrop.c (ROTATE_ANY): Fix Coverity 1294542 "Logical vs. bitwise operator". (readContigStripsIntoBuffer): Fix Coverity 1024545 "Division or modulo by zero". (readContigTilesIntoBuffer): Fix Coverity 1024586 "Logically dead code". (writeSingleSection): Fix Coverity 1024796 "Nesting level does not match indentation". (writeCroppedImage): Fix Coverity 1024797 "Nesting level does not match indentation". (loadImage): Fix Coverity 1299741 "Dereference before null check". (loadImage): Fix Coverity 1299740 "Out-of-bounds write". 2015-03-02 Even Rouault <even.rouault@spatialys.com> * tools/tiffdither.c: check memory allocations to avoid writing to NULL pointer. Also check multiplication overflow. Fixes #2501, CVE-2014-8128. Derived from patch by Petr Gajdos. 2015-01-26 Even Rouault <even.rouault@spatialys.com> * add html/v4.0.4beta.html under version control * HOWTO-RELEASE: write that cvs add html/vX.X.html must be used 2015-01-26 Even Rouault <even.rouault@spatialys.com> * libtiff 4.0.4beta released 2015-01-26 Even Rouault <even.rouault@spatialys.com> * automake: updated to 1.15 * libtool: updated to 2.4.5 2015-01-22 Even Rouault <even.rouault@spatialys.com> * tools/tiff2pdf.c: Fix two crashes (oCERT-2014-013) 2015-01-05 Frank Warmerdam <warmerdam@pobox.com> * html/bugs.html: remove note about needing to email the tiff mailing list administrator about being approved for membership, this appears not to be true. 2015-01-05 Olivier Paquet <olivier.paquet@gmail.com> * tools/tiff2pdf.c: Fixed unsigned integer addition overflow detection. 2015-01-03 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_dirread.c: in TIFFCheckDirOffset(), avoid uint16 overflow when reading more than 65535 directories, and effectively error out when reaching that limit. 2014-12-29 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_jpeg.c: in JPEGFixupTags(), recognize SOF2, SOF9 and SOF10 markers to avoid emitting a warning (even if, according to the TechNote, there are admitedly unusual/not recommended or even forbidden variants, but they do work well with libjpeg for SOF2, and with libjpeg-turbo for SOF2, SOF9 and SOF10). Define in_color_space and input_components to the right values in JPEGSetupEncode(), before calling jpeg_set_defaults(), as specified by libjpeg API documentation, so as to be compatible with mozjpeg library. Note: the default settings of mozjpeg will produce progressive scans, which is forbidden by the TechNote. 2014-12-29 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_getimage.c: move test on vertical value of YCbCr subsampling. to avoid buffer leak (fix previous fix, found by Coverity scan) 2014-12-29 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_next.c: add new tests to check that we don't read outside of the compressed input stream buffer. * libtiff/tif_getimage.c: in OJPEG case, fix checks on strile width/height in the putcontig8bitYCbCr42tile, putcontig8bitYCbCr41tile and putcontig8bitYCbCr21tile cases. 2014-12-27 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_dir.c: in TIFFDefaultDirectory(), reset any already existing extented tags installed by user code through the extender mechaninm before calling the extender callback (GDAL #5054) 2014-12-26 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffcrop.c: Fix warnings about variables set but not used. * contrib/iptcutil/iptcutil.c: Fix warnings about variables set but not used. * tools/tiffgt.c: Fix warnings about unused parameters. * libtiff/tif_stream.cxx: Fix warnings about unused parameters. 2014-12-25 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_getimage.c, libtiff/tif_ojpeg.c, libtiff/tif_zip.c: fix various typos found by Debian lintian tool (GDAL #5756) 2014-12-24 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_getimage.c: avoid divide by zero on invalid YCbCr subsampling. http://bugzilla.maptools.org/show_bug.cgi?id=2235 2014-12-24 Even Rouault <even.rouault@spatialys.com> * tools/tiff2pdf.c: fix buffer overflow on some YCbCr JPEG compressed images. http://bugzilla.maptools.org/show_bug.cgi?id=2445 2014-12-24 Even Rouault <even.rouault@spatialys.com> * tools/tiff2pdf.c: fix buffer overflow on YCbCr JPEG compressed image. Derived from patch by Petr Gajdos, http://bugzilla.maptools.org/show_bug.cgi?id=2443 2014-12-23 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_dirread.c: In EstimateStripByteCounts(), check return code of _TIFFFillStriles(). This solves crashing bug on corrupted images generated by afl. 2014-12-23 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_read.c: fix several invalid comparisons of a uint64 value with <= 0 by casting it to int64 first. This solves crashing bug on corrupted images generated by afl. 2014-12-21 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffdump.c: Guard against arithmetic overflow when calculating allocation buffer sizes. 2014-12-21 Even Rouault <even.rouault@spatialys.com> * tools/tiff2bw.c: when Photometric=RGB, the utility only works if SamplesPerPixel = 3. Enforce that http://bugzilla.maptools.org/show_bug.cgi?id=2485 (CVE-2014-8127) 2014-12-21 Even Rouault <even.rouault@spatialys.com> * tools/pal2rgb.c, tools/thumbnail.c: fix crash by disabling TIFFTAG_INKNAMES copying. The right fix would be to properly copy it, but not worth the burden for those esoteric utilities. http://bugzilla.maptools.org/show_bug.cgi?id=2484 (CVE-2014-8127) 2014-12-21 Even Rouault <even.rouault@spatialys.com> * tools/thumbnail.c: fix out-of-buffer write http://bugzilla.maptools.org/show_bug.cgi?id=2489 (CVE-2014-8128) 2014-12-21 Even Rouault <even.rouault@spatialys.com> * tools/thumbnail.c, tools/tiffcmp.c: only read/write TIFFTAG_GROUP3OPTIONS or TIFFTAG_GROUP4OPTIONS if compression is COMPRESSION_CCITTFAX3 or COMPRESSION_CCITTFAX4 http://bugzilla.maptools.org/show_bug.cgi?id=2493 (CVE-2014-8128) 2014-12-21 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_next.c: check that BitsPerSample = 2. Fixes http://bugzilla.maptools.org/show_bug.cgi?id=2487 (CVE-2014-8129) 2014-12-21 Even Rouault <even.rouault@spatialys.com> * tools/tiff2pdf.c: check return code of TIFFGetField() when reading TIFFTAG_SAMPLESPERPIXEL 2014-12-21 Even Rouault <even.rouault@spatialys.com> * tools/tiffcp.c: fix crash when converting YCbCr JPEG-compressed to none. Based on patch by Tomasz Buchert (http://bugzilla.maptools.org/show_bug.cgi?id=2480) Description: fix for Debian bug #741451 tiffcp crashes when converting JPEG-encoded TIFF to a different encoding (like none or lzw). For example this will probably fail: tiffcp -c none jpeg_encoded_file.tif output.tif The reason is that when the input file contains JPEG data, the tiffcp code forces conversion to RGB space. However, the output normally inherits YCbCr subsampling parameters from the input, which leads to a smaller working buffer than necessary. The buffer is subsequently overrun inside cpStripToTile() (called from writeBufferToContigTiles). Note that the resulting TIFF file would be scrambled even if tiffcp wouldn't crash, since the output file would contain RGB data intepreted as subsampled YCbCr values. This patch fixes the problem by forcing RGB space on the output TIF if the input is JPEG-encoded and output is *not* JPEG-encoded. Author: Tomasz Buchert <tomasz.buchert@inria.fr> 2014-12-21 Even Rouault <even.rouault@spatialys.com> Fix various crasher bugs on fuzzed images. * libtiff/tif_dir.c: TIFFSetField(): refuse to set negative values for TIFFTAG_XRESOLUTION and TIFFTAG_YRESOLUTION that cause asserts when writing the directory * libtiff/tif_dirread.c: TIFFReadDirectory(): refuse to read ColorMap or TransferFunction if BitsPerSample has not yet been read, otherwise reading it later will cause user code to crash if BitsPerSample > 1 * libtiff/tif_getimage.c: TIFFRGBAImageOK(): return FALSE if LOGLUV with SamplesPerPixel != 3, or if CIELAB with SamplesPerPixel != 3 or BitsPerSample != 8 * libtiff/tif_next.c: in the "run mode", use tilewidth for tiled images instead of imagewidth to avoid crash * tools/bmp2tiff.c: fix crash due to int overflow related to input BMP dimensions * tools/tiff2pdf.c: fix crash due to invalid tile count (should likely be checked by libtiff too). Detect invalid settings of BitsPerSample/SamplesPerPixel for CIELAB / ITULAB * tools/tiffcrop.c: fix crash due to invalid TileWidth/TileHeight * tools/tiffdump.c: fix crash due to overflow of entry count. 2014-12-15 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_jpeg.c: Fix regression introduced on 2010-05-07 that caused all tiles/strips to include quantization tables even when the jpegtablesmode had the JPEGTABLESMODE_QUANT bit set. Also add explicit removal of Huffman tables when jpegtablesmode has the JPEGTABLESMODE_HUFF bit set, which avoids Huffman tables to be emitted in the first tile/strip (only useful in update scenarios. create-only was fine) 2014-12-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiff2pdf.c: Assure that memory size calculations for _TIFFmalloc() do not overflow the range of tmsize_t. 2014-12-07 Even Rouault <even.rouault@spatialys.com> * tools/thumbnail.c, tools/tiffcrop.c: "fix" heap read over-run found with Valgrind and Address Sanitizer on test suite 2014-12-07 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiff2pdf.c (t2p_read_tiff_init): TIFFTAG_TRANSFERFUNCTION tag can return one channel, with the other two channels set to NULL. The tiff2pdf code was expecting that other two channels were duplicate pointers in the case where there is only one channel. Detect this condition in order to avoid a crash, and presumably perform correctly with just one channel. 2014-12-06 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffdump.c: Fix double-free bug. 2014-11-27 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_config.vc.h: no longer use "#define snprintf _snprintf" with Visual Studio 2015 aka VC 14 aka MSVC 1900 2014-11-20 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_lzw.c: prevent potential null dereference of sp->dec_codetab in LZWPreDecode (bug #2459) * libtiff/tif_read.c: in TIFFReadBufferSetup(), avoid passing -1 size to TIFFmalloc() if passed user buffer size is 0 (bug #2459) * libtiff/tif_ojpeg.c: make Coverity happier (not a bug, #2459) * libtiff/tif_dir.c: in _TIFFVGetField() and _TIFFVSetField(), make Coverity happier (not a bug, #2459) * libtiff/tif_dirread.c: in TIFFFetchNormalTag(), make Coverity happier (not a bug, #2459) * tools/tiff2pdf.c: close PDF file (bug #2479) * tools/fax2ps.c: check malloc()/realloc() result (bug #2470) * tools/tiffdump.c: detect cycle in TIFF directory chaining (bug #2463) and avoid passing a NULL pointer to read() if seek() failed before (bug #2459) * tools/tiffcrop.c: fix segfault if bad value passed to -Z option (bug #2459) and add missing va_end in dump_info (#2459) * tools/gif2tif.c: apply patch for CVE-2013-4243 (#2451) 2014-11-20 Even Rouault <even.rouault@spatialys.com> * libtiff/tif_jpeg.c: fix segfault in JPEGFixupTagsSubsampling() on corrupted image where tif->tif_dir.td_stripoffset == NULL (bug #2471) 2014-11-20 Even Rouault <even.rouault@spatialys.com> * automake: updated to 1.14.1 * libtool: updated to 2.4.3 * HOWTO-RELEASE: small update about autotools building order 2014-10-20 Olivier Paquet <olivier.paquet@gmail.com> * tools/tiff2pdf.c: Preserve input file directory order when pages are tagged with the same page number. 2014-08-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_dirread.c (TIFFReadDirEntryOutputErr): Incorrect count for tag should be a warning rather than an error since errors terminate processing. 2014-06-07 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiff2rgba.c (]): Fixed tiff2rgba usage message in that zip was wrongly described. Fix suggested by Miguel Medalha. 2014-05-06 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_dirinfo.c (TIFFField) : Fix data type for TIFFTAG_GLOBALPARAMETERSIFD tag. Patch by Steve Underwood. Reviewed and forwarded by Lee Howard. 2013-11-30 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dir.c: fix last fix for TIFFNumberOfDirectories() 2013-10-21 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dir.c: generate error in case of directory count overflow. 2013-10-01 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tiff.h, libtiff/tif_dirinfo.c: add definitions for TIFF/EP CFARepeatPatternDim and CFAPattern tags (bug #2457) 2013-09-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_dir.c (TIFFAdvanceDirectory): If nextdir is found to be defective, then set it to zero before returning error in order to terminate processing of truncated TIFF. Issue found and fix suggested by Richard Nolde. 2013-08-14 Frank Warmerdam <warmerdam@pobox.com> * tools/gif2tiff.c: fix possible OOB write (#2452, CVE-2013-4244) 2013-08-13 Frank Warmerdam <warmerdam@pobox.com> * tools/gif2tiff.c: Be more careful about corrupt or hostile input files (#2450, CVE-2013-4231) * tools/tiff2pdf.c: terminate after failure of allocating ycbcr buffer (bug #2449, CVE-2013-4232) 2013-07-09 Frank Warmerdam <warmerdam@google.com> * tools/tiffinfo.c: Default various values fetched with TIFFGetField() to avoid being uninitialized. 2013-05-02 Tom Lane <tgl@sss.pgh.pa.us> * tools/tiff2pdf.c: Rewrite JPEG marker parsing in t2p_process_jpeg_strip to be at least marginally competent. The approach is still fundamentally flawed, but at least now it won't stomp all over memory when given bogus input. Fixes CVE-2013-1960. 2013-05-02 Tom Lane <tgl@sss.pgh.pa.us> * contrib/dbs/xtiff/xtiff.c, libtiff/tif_codec.c, libtiff/tif_dirinfo.c, tools/rgb2ycbcr.c, tools/tiff2bw.c, tools/tiff2pdf.c, tools/tiff2ps.c, tools/tiffcrop.c, tools/tiffdither.c: Enlarge some fixed-size buffers that weren't large enough, and eliminate substantially all uses of sprintf(buf, ...) in favor of using snprintf(buf, sizeof(buf), ...), so as to protect against overflow of fixed-size buffers. This responds in particular to CVE-2013-1961 concerning overflow in tiff2pdf.c's t2p_write_pdf_page(), but in general it seems like a good idea to deprecate use of sprintf(). 2013-03-29 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * configure.ac: Applied patch by Brad Smith to improve pkg-config static linking by adding -lm to Libs.private when needed. 2013-03-05 Tom Lane <tgl@sss.pgh.pa.us> * html/man/tiff2ps.1.html, html/man/tiffcp.1.html, html/man/tiffdither.1.html, man/tiff2ps.1, man/tiffcp.1, man/tiffdither.1, tools/tiff2ps.c, tools/tiffcp.c, tools/tiffdither.c: Sync tool usage printouts and man pages with reality (quite a few options had escaped being documented in one or both places). Per an old report from Miroslav Vadkerti. 2013-01-25 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiff2ps.c:Fix bug in auto rotate option code. Once a rotation angle was set by the auto rotate check, it was retained for all pages that followed instead ofa being retested for each page. Patch by Richard Nolde. 2013-01-18 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_write.c: tmsize_t related casting warning fixed for 64bit linux. * libtiff/tif_read.c: uint64/tmsize_t change for MSVC warnings. http://bugzilla.maptools.org/show_bug.cgi?id=2427 2012-12-20 Tom Lane <tgl@sss.pgh.pa.us> * test/raw_decode.c: Relax raw_decode's pixel-value checks so that it will pass with more versions of libjpeg. (There are at least three in active use now, and JPEG_LIB_VERSION doesn't tell us enough to uniquely identify expected results.) 2012-12-12 Tom Lane <tgl@sss.pgh.pa.us> * libtiff/tif_print.c: Fix TIFFPrintDirectory's handling of field_passcount fields: it had the TIFF_VARIABLE and TIFF_VARIABLE2 cases backwards. 2012-12-10 Tom Lane <tgl@sss.pgh.pa.us> * tools/ppm2tiff.c: Improve previous patch for CVE-2012-4564: check the linebytes calculation too, get the max() calculation straight, avoid redundant error messages, check for malloc failure. 2012-12-10 Tom Lane <tgl@sss.pgh.pa.us> * libtiff/tif_pixarlog.c: Improve previous patch for CVE-2012-4447 (to enlarge tbuf for possible partial stride at end) so that overflow in the integer addition is detected. Per gripe from Huzaifa Sidhpurwala. 2012-12-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffset.c: tiffset now supports a -u option to unset a tag. Patch by Zach Baker. See http://bugzilla.maptools.org/show_bug.cgi?id=2419 2012-11-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * automake: Update Automake to 1.12.5 release. * libtiff/tif_{unix,vms,win32}.c (_TIFFmalloc): ANSI C does not require malloc() to return NULL pointer if requested allocation size is zero. Assure that _TIFFmalloc does. 2012-11-01 Frank Warmerdam <warmerdam@pobox.com> * tools/ppm2tiff.c: avoid zero size buffer vulnerability. CVE-2012-4564 - Thanks to Huzaifa Sidhpurwala of the Red Hat Security Response team for the fix. 2012-10-18 Frank Warmerdam <warmerdam@google.com> * tif_zip.c: Avoid crash on NULL error messages. 2012-09-22 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff 4.0.3 released. 2012-09-20 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * Makefile.am: Update to Automake 1.12.4 2012-08-19 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * Makefile.in: Update to Automake 1.12.3 * libtiff{tiff.h, tif_print.c, tif_dirinfo.c, tif_dirread.c}: Add some TIFF/FX support in libtiff. Add the tag definitions to tiff.h. Add the related TIFF field definitions to tif_dirinfo.c, and also fixes an error in a comment. Adds the photometric values to tif_print.c, and fixes a bug. These changes are by Steve Underwood. 2012-08-13 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_write.c: Fix bug rewriting image tiles in a compressed file: http://trac.osgeo.org/gdal/ticket/4771 2012-08-02 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_dirread.c: report error in case of mismatch value counts for tags (ie. DotRange). 2012-07-26 Tom Lane <tgl@sss.pgh.pa.us> * libtiff/{tiffio.h, tif_dirinfo.c, libtiff.def}: Add six new functions TIFFFieldTag(), TIFFFieldName(), TIFFFieldDataType(), TIFFFieldPassCount(), TIFFFieldReadCount(), TIFFFieldWriteCount() as external accessors for the opaque type TIFFField. * tools/tiffset.c: Make tiffset use the above functions instead of relying on library private headers. 2012-07-19 Tom Lane <tgl@sss.pgh.pa.us> * tools/tiff2pdf.c: Fix two places where t2p_error didn't get set after a malloc failure. No crash risk AFAICS, but the program might not report exit code 1 as desired. h/t mancha@mac.hush.com 2012-07-18 Tom Lane <tgl@sss.pgh.pa.us> * tools/tiff2pdf.c: Fail when TIFFSetDirectory() fails. This prevents core dumps or perhaps even arbitrary code execution when processing a corrupt input file (CVE-2012-3401). 2012-07-06 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * test/raw_decode.c (main): Test fixes to work with IJG JPEG 7+. IJG JPEG 7+ uses a different upsampling algorithm which produces different numeric results. * libtiff/tif_jpeg.c (JPEGPreDecode): Patch from Even Rouault to work with IJG JPEG 7+. 2012-07-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * test/raw_decode.c: Add changes so that test can run with build directory outside of source directory. 2012-07-02 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_jpeg.c: Fix handling when writing RGBA jpeg compressed imagery (http://trac.osgeo.org/gdal/ticket/4732) 2012-06-20 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_fax3.c: fix memory initialization of runs, only partly done. * libtiff/tif_pixarlog.c: Make sure tbuf is large enough for one full "stride" past the end. 2012-06-19 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_packbits.c: fix read past end of data buffer. 2012-06-15 Frank Warmerdam <warmerdam@google.com> * libtiff 4.0.2 released. * tools/tif2pdf.c, tools/tifdump.c: avoid unitialized variable warnings with clang. 2012-06-15 Tom Lane <tgl@sss.pgh.pa.us> * tools/tiff2pdf.c: Defend against integer overflows while calculating required buffer sizes (CVE-2012-2113). 2012-06-12 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_print.c: Be careful about printing corrupt inknames. * libtiff/tif_fax3.c: Ensure runs array is initialized to zeros. 2012-06-07 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_print.c: avoid pretty printing other fields when we don't have the proper amount and type of data or if the field is actually autodefined. 2012-06-05 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_tile.c, libtiff/tif_strip.c: Ensure that illegal ycbcrsubsampling values result in a runtime error, not just an assertion. * tests/custom_dir.c: Add testing of EXIF and custom directory reading and writing. * libtiff/tif_dir.c, libtiff/tiffio.h: Add TIFFCreateCustomDirectory() and TIFFCreateEXIFDirectory() functions. * libtiff/tif_dir.c, tif_print.c : Remove FIELD_CUSTOM handling for PAGENUMBER, HALFTONEHINTS, and YCBCRSUBSAMPLING. Implement DOTRANGE differently. This is to avoid using special TIFFGetField/TIFFSetField rules for these fields in non-image directories (like EXIF). 2012-06-04 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_jpeg.c: Remove code for fixing up h_sampling and v_sampling in JPEGPreDecode(). If a fixup will be done it needs to be done sooner in JPEGFixupTagsSubsampling() or else buffer sized may be wrong. 2012-06-01 Frank Warmerdam <warmerdam@google.com> * tools/tiffinfo.c: Do not try to read image data in EXIF directories. * libtiff/tif_getimage.c: added support for _SEPARATED CMYK images. http://bugzilla.maptools.org/show_bug.cgi?id=2379 * libtiff/tif_unix.c: use strerror() to return a more specific error message on failed open. http://bugzilla.maptools.org/show_bug.cgi?id=2341 * libtiff/tif_jpeg.c: Fix JPEGDecodeRaw() bugs. http://bugzilla.maptools.org/show_bug.cgi?id=2386 * tests/decode_raw.c, tests/images/quad-tile.jpg.tiff: add limited support for testing jpeg in tiff image decoding including the "raw" decode interface. 2012-05-31 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_jpeg.c: avoid overrunning the end of the output buffer in JPEGDecodeRaw() - mostly likely to occur when there is confusion about sampling values. * libtiff/tif_read.c: Make sure tif_rawdatasize is cleared when tif_rawdata is freed. * libtiff/tif_getimage.c: Add support for greyscale+alpha c/o Jérémie Laval. http://bugzilla.maptools.org/show_bug.cgi?id=2398 2012-05-29 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_dir.c: avoid using specific set/get logic to process fields in custom directories, like EXIF directories. This fixes problems like a tag "320" existing in a custom directory getting processed as if it were a colormap when it isn't really. Damn the wide variety of argument formulations to get/set functions for different tags! * libtiff/tif_dir.c: Ensure that we keep track of when tif_rawdata is a pointer into an mmap()ed file via TIFF_BUFFERMMAP flag. 2012-05-24 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_pixarlog.c: Allocate working buffer one word larger since we "forward accumulate" and overwrite the end by one word in at least some cases. 2012-05-23 Frank Warmerdam <warmerdam@google.com> * libtiff/tif_pixarlog.c: avoid accessing out of the lookup arrays for out of range inputs. * tools/tiffinfo.c: initialize h=0 to avoid undefined variable for degenerate files. * libtiff/tif_ojpeg.c: if OJPEGWriteHeader() fails once do not bother trying again on the same image. * libtiff/tif_ojpeg.c: make things more resilient in the face of files without stripbytecounts or stripoffsets or where loading these fails. * libtiff/tif_print.c: be careful about whether min/max values are singular or one per sample. * libtiff/tif_print.c: Avoid confusion about count size when printing custom fields. May affect things like ISOSpeedRatings. * libtiff/tif_dir.c: avoid one byte past end of ink names reading in some cases. 2012-05-19 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * man/TIFFGetField.3tiff: Correct the 'count' field type in the example for how to retreive the value of unsupported tags. 2012-03-30 Frank Warmerdam <warmerdam@google.com> * tif_getimage.c: Fix size overflow (zdi-can-1221,CVE-2012-1173) care of Tom Lane @ Red Hat. 2012-02-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff 4.0.1 released. * Update automake used to 1.11.3. * libtiff/tiffio.h: Use double-underbar syntax in GCC printf attribute specification to lessen the risk of accidental macro substitution. Patch from Vincent Torri. 2012-01-31 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dir.c, libtiff/tif_dirread.c: Extra caution around assumption tag fetching is always successful. * libtiff/tif_jpeg.c: Extra caution for case where sp is NULL. 2012-01-22 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * configure.ac: Add support for using library symbol versioning on ELF systems with the GNU linker. Support is enabled via --enable-ld-version-script. Disabled by default for now until there is a decision for how to deploy a libtiff with versioned symbols after libtiff 4.0.0 was already released. 2011-12-22 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_win32.c: Eliminate some minor 64-bit warnings in tif_win32.c. Patch by Edward Lam. * configure.ac: Add libtiff private dependency on -llzma for pkg-config. Patch by Mark Brand. Updated Automake to 1.11.2. 2011-12-21 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff 4.0.0 released. 2011-12-08 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirread.c, libtiff/tif_read.c: more cautious checking of _TIFFFillStriles() results (#gdal 4372) 2011-12-07 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirread.c: fixes to deal with invalid files where _TIFFFillStriles() fails, and we try to chop up strips (gdal #4372) * libtiff/tif_dirread.c: fix error reporting when there is no tag information struct and name (gdal #4373) 2011-10-22 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * Update GNU libtool to 2.4.2. * tools/tiffsplit.c (tiffcp): TIFFGetField count field should be uint32 type for TIFFTAG_JPEGTABLES. Patch by Christophe Deroulers. 2011-06-21 Frank Warmerdam <warmerdam@pobox.com> * libtiff/libtiff.def: Restore TIFFMergeFieldInfo. 2011-05-31 Jim Meyering <meyering@redhat.com> * libtiff/tif_dirread.c (TIFFFetchStripThing): Free "data" also upon failure to allocate "resizeddata". * tools/tiff2ps.c (PSDataBW): Zero buffer *after* checking for allocation failure, not before. * libtiff/tif_ojpeg.c: plug leaks on OJPEG read failure path * tools/rgb2ycbcr.c (cvtRaster): unchecked malloc * libtiff/tif_jpeg.c, tools/tiff2pdf.c, tools/tiff2ps.c: mark NULL-deref and possible overflow * tools/tiff2pdf.c: remove decl+set of set-but-not-used local, "written" * libtiff/tif_jpeg.c (JPEGInitializeLibJPEG): Remove declaration and set of otherwise unused local, data_is_empty. * libtiff/tif_jpeg.c (JPEGDecodeRaw) [JPEG_LIB_MK1_OR_12BIT]: Diagnose out-of-memory failure and return 0 rather than dereferencing NULL. 2011-05-24 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirread.c: produce special error message for zero tag directories instead of error out on the malloc(0) failure. 2011-05-16 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirinfo.c: Restore TIFFMergeFieldInfo() and related declarations as they are in active use by libraries such as libgeotiff, and work just fine. (#2315) 2011-04-20 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirinfo.c,tiffio.h: Remove the obsolete TIFFMergeFieldInfo/TIFFFindFieldInfo/TIFFFindFieldInfoByName API. http://bugzilla.maptools.org/show_bug.cgi?id=2315 * libtiff/libtiff.def: add some missing (64bit) APIs. http://bugzilla.maptools.org/show_bug.cgi?id=2316 2011-04-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff 4.0.0beta7 released. 2011-04-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * configure.ac: Should use AC_CANONICAL_HOST since host specifies the run-time target whereas target is used to specify the final output target if the package is a build tool (like a compiler), which libtiff is not. Resolves libtiff bug 2307 "Use AC_CANONICAL_HOST macro". 2011-04-02 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * configure.ac: Support configuring TIFF_INT64_FORMAT and TIFF_UINT64_FORMAT appropriately for MinGW32. * tools/tiffdump.c (ReadDirectory): MinGW32 needs to use WIN32 printf conventions for 64-bit types because it uses the WIN32 CRT. * libtiff/{tif_dumpmode.c,tif_luv.c,tif_lzw.c,tif_print.c, tif_read.c,tif_strip.c,tif_thunder.c}: MinGW32 needs to use WIN32 printf conventions for 64-bit types because it uses the WIN32 CRT. * tools/tiff2pdf.c (t2p_write_pdf_string): Fix printf syntax not understood by WIN32 CRT. * libtiff/tif_ojpeg.c: Fixes to compile with MinGW32 GCC. * tools/fax2ps.c (main): Use tmpfile() rather than mkstemp() since it is much more portable. Tmpfile is included in ISO/IEC 9899:1990 and the WIN32 CRT. 2011-03-26 Frank Warmerdam <warmerdam@pobox.com> * tools/tiffset.c: add -d and -sd switches to allow operation on a particular directory, not just the first (jef). 2011-03-21 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_thunder.c: Correct potential buffer overflow with thunder encoded files with wrong bitspersample set. The libtiff development team would like to thank Marin Barbella and TippingPoint's Zero Day Initiative for reporting this vulnerability (ZDI-CAN-1004, CVE-2011-1167). http://bugzilla.maptools.org/show_bug.cgi?id=2300 2011-03-10 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_fax3.h: Fix to last change allowing zero length runs at the start of a scanline - needed for legal cases. 2011-03-02 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_fax3.h: Protect against a fax VL(n) codeword commanding a move left. Without this, a malicious input file can generate an indefinitely large series of runs without a0 ever reaching the right margin, thus overrunning our buffer of run lengths. Per CVE-2011-0192. This is a modified version of a patch proposed by Drew Yao of Apple Product Security. It adds an unexpected() report, and disallows the equality case, since emitting a run without increasing a0 still allows buffer overrun. 2011-02-23 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: avoid divide by zero in degenerate case (#2296) * tools/tiff2rgba.c: close source file on error to make leak detection easier. * libtiff/tif_getimage.c: avoid leaks if TIFFRGBAImageBegin() fails. http://bugzilla.maptools.org/show_bug.cgi?id=2295 2011-02-22 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_lzma.c: Maintain tif_rawcc/tif_rawcp (CHUNKY_STRING_READ _SUPPORT) 2011-02-18 Frank Warmerdam <warmerdam@pobox.com> * configure.ac, configure: Added support for --enable-chunky-strip-read configure option to enable the experimental feature from a couple months ago for reading big strips in chunks. * configure.ac, tif_read.c, tif_readdir.c, tif_dir.h, tiffiop.h, tif_write.c, tif_print.c, tif_jpeg.c, tif_dirwrite.c, tif_write.c: Implement optional support for deferring the load of strip/tile offset and size tags for optimized scanning of directories. Enabled with the --enable-defer-strile-load configure option (DEFER_STRILE_LOAD #define in tif_config.h). 2011-02-11 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_print.c: remove unused variable. 2011-02-09 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_win32.c: avoid error/warning buffer overrun problem with non-console (popup message) builds on win32. http://bugzilla.maptools.org/show_bug.cgi?id=2293 2011-01-24 Olivier Paquet <olivier.paquet@gmail.com> * libtiff/{tif_dir.{h,c}, tif_dirinfo.c, tif_dirread.c, tif_dirwrite.c, tif_print.c, tiff.h, tiffiop.h} : Added support for TIFFTAG_SMINSAMPLEVALUE and TIFFTAG_SMAXSAMPLEVALUE to have different values for each sample. Presents the min/max of all samples by default for compatibility. TIFFSetField/TIFFGetField can be made to handle those tags as arrays by changing the new TIFFTAG_PERSAMPLE pseudo tag. http://www.asmail.be/msg0055458208.html 2011-01-06 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_pixarlog.c: Note that tif_rawcc/tif_rawcp are not maintained. * libtiff/tif_zip.c: Maintain tif_rawcc/tif_rawcp when decoding for CHUNKY_STRIP_READ_SUPPORT. * libtiff/tif_jpeg.c: ensure that rawcc and rawcp are maintained during JPEGPreDecode and JPEGDecode calls. * libtiff/tif_read.c: larger read ahead for CHUNKY_STRIP_READ_SUPPORT, as compression formats like JPEG keep 16 lines interleaved in a sense and might need to touch quite a bit of data. http://trac.osgeo.org/gdal/ticket/3894 2011-01-03 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_jpeg.c: Fix regressions with 2 and 3 band images caused by commit on 2010-12-14. Submitted by e-mail from Even Rouault <even.rouault@mines-paris.org> 2010-12-31 Olivier Paquet <olivier.paquet@gmail.com> * libtiff/tif_dirwrite.c: Fixed writing of TIFFTAG_REFERENCEBLACKWHITE. http://bugzilla.maptools.org/show_bug.cgi?id=2266 2010-12-23 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffcp.c, man/tiffcp.1: Added support for specifying the compression level parameter (preset) for Deflate and LZMA encoders, e.g "-c lzma:p1" or "-c zip:p9". * libtiff/tif_lzma.c: Properly set the LZMA2 compression level (preset) in LZMAVSetField(). 2010-12-18 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/Makefile.am (libtiff_la_SOURCES): Added tif_lzma.c to Makefile. 2010-12-14 Andrey Kiselev <dron@ak4719.spb.edu> * configure.ac, libtiff/{tif_codec.c, tif_config.h.in, tiff.h, tiffiop.h, tif_lzma.c}, tools/tiffcp.c, man/tiffcp.1: Implement a new TIFF compression scheme LZMA reserving a new value 34925 for Compression tag. As per bug http://bugzilla.maptools.org/show_bug.cgi?id=2221 2010-12-14 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_dirread.c: tolerate some cases where FIELD_COLORMAP is missing http://bugzilla.maptools.org/show_bug.cgi?id=2189 2010-12-14 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_read.c: change read_ahead to tmsize_t http://bugzilla.maptools.org/show_bug.cgi?id=2222 2010-12-14 Lee Howard <faxguy@howardsilvan.com> * configure.ac, libtiff/Makefile.am: Build tif_win32.c on Windows except on Cygwin http://bugzilla.maptools.org/show_bug.cgi?id=2224 2010-12-14 Lee Howard <faxguy@howardsilvan.com> * tools/gif2tiff.c: fix buffer overrun http://bugzilla.maptools.org/show_bug.cgi?id=2270 2010-12-14 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_jpeg.c: reduce usage of JCS_UNKNOWN in order to improve compatibility with various viewers submitted by e-mail from Dwight Kelly <dkelly@apago.com> 2010-12-13 Lee Howard <faxguy@howardsilvan.com> * tools/fax2ps.c: be consistent with page-numbering http://bugzilla.maptools.org/show_bug.cgi?id=2225 2010-12-13 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_color.c: prevent crash in handling bad TIFFs resolves CVE-2010-2595 http://bugzilla.maptools.org/show_bug.cgi?id=2208 2010-12-13 Lee Howard <faxguy@howardsilvan.com> * tools/tiffcrop.c: new release by Richard Nolde http://bugzilla.maptools.org/show_bug.cgi?id=2004 2010-12-12 Lee Howard <faxguy@howardsilvan.com> * tools/tiff2pdf.c: fix colors for images with RGBA interleaved data http://bugzilla.maptools.org/show_bug.cgi?id=2250 2010-12-12 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_dirread.c: fix for Zeiss LSM and Canon CR2 files http://bugzilla.maptools.org/show_bug.cgi?id=2164 2010-12-11 Lee Howard <faxguy@howardsilvan.com> * tools/tiff2pdf.c: remove invalid duplication for Lab http://bugzilla.maptools.org/show_bug.cgi?id=2162 2010-12-11 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_jpeg.c: fix use of clumplines calculation http://bugzilla.maptools.org/show_bug.cgi?id=2149 2010-12-11 Lee Howard <faxguy@howardsilvan.com> * tools/fax2ps.c: replace unsafe tmpfile() with mkstemp() http://bugzilla.maptools.org/show_bug.cgi?id=2118 2010-12-11 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_ojpeg.c, libtiff/tif_pixarlog.c, libtiff/tif_zip.c: fix build errors for VC6 http://bugzilla.maptools.org/show_bug.cgi?id=2105 2010-12-11 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_stream.cxx: warnings cleanup http://bugzilla.maptools.org/show_bug.cgi?id=2091 * libtiff/tif_dirread.c: warnings cleanup http://bugzilla.maptools.org/show_bug.cgi?id=2092 2010-12-11 Lee Howard <faxguy@howardsilvan.com> * tools/tiff2pdf.c: add fill-page option http://bugzilla.maptools.org/show_bug.cgi?id=2051 2010-12-11 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_dirread.c: modify warnings http://bugzilla.maptools.org/show_bug.cgi?id=2016 2010-12-11 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_ojpeg.c: fix buffer overflow on problem data http://bugzilla.maptools.org/show_bug.cgi?id=1999 2010-12-11 Lee Howard <faxguy@howardsilvan.com> * tools/tiffinfoce.c: strip byte counts are uint64* now 2010-12-11 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_ojpeg.c: fix crash when reading a TIFF with a zero or missing byte-count tag * tools/tiffsplit.c: abort when reading a TIFF without a byte-count per http://bugzilla.maptools.org/show_bug.cgi?id=1996 2010-12-08 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_dirread.c: fix crash when reading a badly-constructed TIFF per http://bugzilla.maptools.org/show_bug.cgi?id=1994 2010-12-06 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_open.c: Fix mode check before opening a file. http://bugzilla.maptools.org/show_bug.cgi?id=1906 2010-11-27 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff-4.pc.in: Added libtiff pkg-config .pc file support. Patch by Vincent Torri. 2010-10-21 Frank Warmerdam <warmerdam@pobox.com> * tools/tiffinfo.c: avoid direct reference to _TIFFerrorHandler. * libtiff/tif_config.vc.h: define snprintf to _snprintf for tiff2pdf. * libtiff/libtiff.def: export _TIFFCheckMalloc for tools. 2010-09-25 Lee Howard <faxguy@howardsilvan.com> * tools/tiff2ps.c: improvements and enhancements from Richard Nolde with additional command line options for Document Title, Document Creator, and Page Orientation 2010-07-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffcrop.c: Patch from Richard Nolde to avoid a potentially unterminated buffer due to using an exceptionally long file name. 2010-07-08 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdf.c: Fixed ID buffer filling in t2p_write_pdf_trailer(), thanks to Dmitry V. Levin. 2010-07-07 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: Really reset the tag count in CheckDirCount() to expected value as the warning message suggests. As per bug http://bugzilla.maptools.org/show_bug.cgi?id=1963 2010-07-06 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffset.c: Properly handle TIFFTAG_PAGENUMBER, TIFFTAG_HALFTONEHINTS, TIFFTAG_YCBCRSUBSAMPLING, TIFFTAG_DOTRANGE which should be set by value. * libtiff/tif_dirinfo.c: Don't use assertions in _TIFFFieldWithTag() and _TIFFFieldWithName() if the tag is not found in the tag table. This should be normal situation and returned NULL value should be properly handled by the caller. 2010-07-02 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_getimage.c: Avoid wrong math du to the signed/unsigned integer type conversions. As per bug http://bugzilla.maptools.org/show_bug.cgi?id=2207 * tools/{tiff2bw.c, thumbnail.c, pal2rgb.c}: Fix the count for WhitePoint tag as per bug http://bugzilla.maptools.org/show_bug.cgi?id=2042 * libtiff/tif_getimage.c: Check the number of samples per pixel when working with YCbCr image in PickContigCase(). As per bug http://bugzilla.maptools.org/show_bug.cgi?id=2216 * libtiff/tif_dir.c: Set the bogus post-decoding hook when processing TIFFTAG_BITSPERSAMPLE in _TIFFVSetField() for the case of 8 bit when we don't need any post-processing. That helps to reset the hook if we previously set this field to some other value and the hook was initialized accordingly. As per bug http://bugzilla.maptools.org/show_bug.cgi?id=2035 2010-07-01 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffgt.c: Properly check the raster buffer allocations for integer overflows. As per bug http://bugzilla.maptools.org/show_bug.cgi?id=2108 * m4/acinclude.m4: Update GL/GLU/GLUt/Pthread macros from the upstream. * libtiff/{tif_aux.c, tif_strip.c, tif_tile.c, tiffiop.h}: Move multiply_32() and multiply_64() functions into tif_aux.c file and rename them into _TIFFMultiply32() and _TIFFMultiply64() respectively. 2010-06-30 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdf.c: Better generation of ID field in t2p_write_pdf_trailer(). Get rid of GCC aliasing warnings. * tools/tiff2pdf.c: Fixed computation of the tile buffer size when converting JPEG encoded tiles. * tools/tiff2pdf.c: Better handling of string fields, use static string buffers instead of dynamically allocated, use strncpy() instead of strcpy(), control the string lengths. 2010-06-25 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffcp.c: Initialize buffer arrays with zero to avoid referencing to uninitialized memory in some cases (e.g. when tile size set bigger than the image size). 2010-06-15 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffcrop.c: Patch from Richard Nolde. Reject YCbCr subsampled data since tiffcrop currently doesn't support it. Fix JPEG support. 2010-06-13 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirinfo.c: Fix invocation of tag compare function (#2201) * tools/tiff2pdf.c: Fix assorted bugs in tiff2pdf: missing "return" in t2p_read_tiff_size() causes t2p->tiff_datasize to be set entirely wrong for COMPRESSION_JPEG case, resulting in memory stomp if actual size is larger. Also, there are a bunch of places that try to memset() a malloc'd buffer before checking for malloc failure, which would result in core dump if there actually were a failure. (#2211) 2010-06-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tiffiop.h (TIFFSafeMultiply): Need more castings to avoid compiler warnings if parameter types are not sign consistent. * libtiff 4.0.0alpha6 released. * tools/tiffcrop.c: Applied patch from Richard Nolde: Corrected European page size dimensions. Added an option to allow the user to specify a custom page size on the command line. Fix the case where a page size specified with a fractional part was being coerced to an integer by retyping the variables that define the paper size. * html/index.html: Update for the 3.9.3 release. * tools/tiffcp.c (tiffcp): Applied Tom Lane's patch to reject YCbCr subsampled data since tiffcp currently doesn't support it. http://bugzilla.maptools.org/show_bug.cgi?id=2097 * Update libtool to version 2.2.10. 2010-06-10 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tiffiop.h (TIFFSafeMultiply): Work properly if multiplier is zero. 2010-06-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_fax3.c (Fax3SetupState): Yesterday's fix for CVE-2010-1411 was not complete. * libtiff/tiffiop.h (TIFFSafeMultiply): New macro to safely multiply two integers. Returns zero if there is an integer overflow. * tools/tiffcp.c (main): tiffcp should not leak memory if an error is reported when reading the input file. 2010-06-08 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * Update libtool to version 2.2.8. * libtiff/tif_fax3.c (Fax3SetupState): Avoid under-allocation of buffer due to integer overflow in TIFFroundup() and several other potential overflows. In conjunction with the fix to TIFFhowmany(), fixes CVE-2010-1411. * libtiff/tiffiop.h (TIFFhowmany): Return zero if parameters would result in an integer overflow. This causes TIFFroundup() to also return zero if there would be an integer overflow. * contrib: Add an emacs formatting mode footer to all source files so that emacs can be effectively used. 2010-06-03 Oliver Chen Feng <scip8183@gmail.com> * libtiff/tools/tiffcp.c: add a new option -x to force merged tiff file PAGENUMBER value in sequence for users who care the page sequence, this will also prevent tiff2pdf from creating pdf file from the merged tiff file with wrong page sequence. 2010-05-08 Olivier Paquet <olivier.paquet@gmail.com> * libtiff/tif_dirread.c: Restored TIFFReadDirEntryFloat function in order to add missing TIFF_SETGET_FLOAT case to TIFFFetchNormalTag. * libtiff/tif_dirinfo.c: Use correct set_field_type for TIFFTAG_PIXAR_FOVCOT so it is readable again (regression from 3.9.2). http://bugzilla.maptools.org/show_bug.cgi?id=2192 2010-05-07 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: Ensure that quality is always set in JPEGPreEncode(), not just when we want to output local tables. Otherwise the quality used during compression may not be right and might not match the tables in the tables tag. This bug only occurs when seeking between directories in the midst of writing blocks. http://trac.osgeo.org/gdal/ticket/3539 2010-05-06 Andrey Kiselev <dron@ak4719.spb.edu> * html/man/TIFFGetField.3tiff.html, html/man/TIFFSetField.3tiff.html: Regenerated from the source. 2010-05-05 Olivier Paquet <olivier.paquet@gmail.com> * libtiff/tif_print.c: Fixed printing of TIFFTAG_REFERENCEBLACKWHITE which had stopped working. Also made it always print 6 floats instead of 2*SamplesPerPixel. http://bugzilla.maptools.org/show_bug.cgi?id=2191 http://bugzilla.maptools.org/show_bug.cgi?id=2186 * man/TIFFGetField.3tiff, man/TIFFSetField.3tiff: Fixed doc to reflect the fact that libtiff considers TIFFTAG_REFERENCEBLACKWHITE to be 6 floats. 2010-05-05 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: Fix to use memcmp(), not memcpy() when checking if the jpeg table was written. This is a fix for the last fix on 04-21. 2010-04-21 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: avoid preparing jpeg tables everytime JPEGSetupEncode() is called if the tables already seem to be established. This prevents spurious updates and rewriting of directories with jpegtables when doing updates to existing images. http://trac.osgeo.org/gdal/ticket/3539 2010-04-20 Olivier Paquet <olivier.paquet@gmail.com> * libtiff/tif_dirinfo.c: Use correct set_field_type for TIFFTAG_PIXAR_IMAGEFULLWIDTH, TIFFTAG_PIXAR_IMAGEFULLLENGTH, TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN and TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA. They were unreadable with TIFF_SETGET_UNDEFINED, a regression from 3.9.2. http://bugzilla.maptools.org/show_bug.cgi?id=2139 2010-04-10 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_dir.c (_TIFFVSetField): Add a special error case for when the tag count value is zero. Error handling is still a regression since in 3.9.2, empty tags are skipped (with a warning) rather than returning a hard error and refusing to read the file. * tools/ppm2tiff.c (main): While case for parsing comment line requires extra parenthesis to work as expected. Reported by Thomas Sinclair. 2010-04-02 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_read.c (primarily): Add support for CHUNKY_STRIP_READ_SUPPORT where large strips are read in chunks for applications using TIFFReadScanline(). This is intended to make it more practical work with very large compressed one-strip files. Feature is off by default. Enable by defining CHUNK_STRIP_READ_SUPPORT as a macro. http://trac.osgeo.org/gdal/ticket/3514 2010-03-31 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_flush.c: Use TIFFRewriteDirectory() when flushing directories so previously placed directories will be migrated to the end of file if needed. 2010-03-30 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_lzw.c: change type of dec_bitsleft field to uint64 to support operating on strips/tiles of more than 256MB. http://trac.osgeo.org/gdal/ticket/3512 2010-03-10 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_aux.c (_TIFFCheckRealloc): Improve error message so that it is clearly a memory allocation error message, and also includes the size of the allocation request. 2010-02-22 Lee Howard <faxguy@howardsilvan.com> * libtiff/tif_jpeg.c: Do not generate a JPEGTables tag when creating the JPEG TIFF as is is not required in order to prevent it from being unused and filled with invalid data. (Leave it to be generated by later activity.) http://bugzilla.maptools.org/show_bug.cgi?id=2135 * tools/tiff2pdf.c: Write the JPEG SOI headers into the TIFF strip data rather than skipping them. This fixes the ability to view in Acrobat Reader, Evince, and Ghostscript. http://bugzilla.maptools.org/show_bug.cgi?id=2135 * libtiff/tif_fax3.c: Don't return error on badly-terminated MMR strips. http://bugzilla.maptools.org/show_bug.cgi?id=2029 2009-12-03 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: Made JPEGDecodeRaw() check for buffer overruns. Made so that when working with downsampled images a stub function reporting an error is used for tif_decoderow. We cannot meaningfully support reading scanlines in this situation. (#1936) * libtiff/tif_jpeg.c: Ensure that tif_scanlinesize is computed after resetting of the upsampling values (gdal:#3259). http://bugzilla.maptools.org/show_bug.cgi?id=1936 2009-11-30 Frank Warmerdam <warmerdam@pobox.com> * contrib/dbs/tiff-grayscale.c, contrib/tif-palette.c, tools/ras2tiff.c: Fix resource leaks on error. http://bugzilla.maptools.org/show_bug.cgi?id=2121 * libtiff/tif_{aux.c,dir.c,dir.h,dirinfo.c}: Return to handling TIFFTAG_REFERENCEBLACKWHITE as a field in the TIFF directory instead of as a custom(generic) field to avoid a potential reentrancy problem. http://bugzilla.maptools.org/show_bug.cgi?id=2125 * libtiff/tif_color.c, libtiff/tif_getimage.c, libtiff/tiffio.h, man/TIFFcolor.3tiff: Make TIFFDisplay argument in TIFFCIELabToRGBInit const, and display_sRGB static and const. http://bugzilla.maptools.org/show_bug.cgi?id=2124 2009-11-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff 4.0.0alpha5 released. 2009-11-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffcrop.c: Updated tiffcrop from Richard Nolde. This version has undergone substantial testing with arbitrary sample bit depths. Also eliminates GCC compilation warnings. 2009-11-02 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * port/libport.h: Add extern declarations for getopt standard globals. 2009-10-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_lzw.c (LZWDecode, LZWDecodeCompat): Fix warnings noticed in 64-bit build of libtiff with Visual Studio 2005. Resolves "Bug 2067 - Visual Studio 2005 64-bit warnings in tif_lzw.c", http://bugzilla.maptools.org/show_bug.cgi?id=2067 * libtiff/tif_pixarlog.c (PixarLogEncode): Fix non-important warning noticed in Visual Studio 2005 build. Resolves "Bug 2068 - Visual Studio 2005 64-bit warning in tif_pixarlog.c", http://bugzilla.maptools.org/show_bug.cgi?id=2068 2009-10-29 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_dirread.c: Eliminate GCC "dereferencing type-punned pointer" warnings. 2009-10-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * html/tools.html: Add manual page links, and a summary description of tiffcrop. 2009-10-07 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * configure.ac: x86_64 should use the same fill order as i386. 2009-09-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffcrop.c, man/tiffcrop.1: New tiffcrop from Richard Nolde. Major updates to add significant functionality for reading and writing tile based images with bit depths not a multiple of 8 which cannot be handled by tiffcp. 2009-09-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_ojpeg.c (OJPEGWriteHeaderInfo): IJG JPEG 7 needs do_fancy_upsampling=FALSE in order to read raw data. Resolves "Bug 2090 - OJPEG crash with libjpeg v7". http://bugzilla.maptools.org/show_bug.cgi?id=2090 2009-09-03 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_getimage.c: Fixed error recognition handling in RGBA interface when stoponerror is set. http://bugzilla.maptools.org/show_bug.cgi?id=2071 2009-08-30 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/{tiffcrop.c,tiffgt.c}: Applied patch from Oden Eriksson to fix build with gcc when using the "-Wformat -Werror=format-security" flags. 2009-08-29 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * test/{bmp2tiff_palette.sh, bmp2tiff_rgb.sh, gif2tiff.sh, ppm2tiff_pbm.sh, ppm2tiff_pgm.sh, ppm2tiff_ppm.sh}: Additional utilities tests. 2009-08-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffinfo.c: tiffinfo should return error status to the caller. Register a private error callback to accomplish that. * test/Makefile.am (TIFFIMAGES): Add test images in BMP, GIF, and PNM formats so that we will be able to test more of the tools. While adding these test images I notice that bmp2tiff and gif2tiff only support ancient versions of their respective formats. 2009-08-27 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff 4.0.0alpha4 released. * HOWTO-RELEASE: Improved release instructions. 2009-08-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * man/{TIFFClose.3tiff,raw2tiff.1,tiffcmp.1,tiffsplit.1}: Applied fixes for "Bug 2023 - nroff errors in manual pages". http://bugzilla.maptools.org/show_bug.cgi?id=2023 * tools/{rgb2ycbcr.c, tiff2rgba.c}: Applied fixes for "Bug 2079 - CVE-2009-2347 libtiff: integer overflows in various inter-color space conversion tools". http://bugzilla.maptools.org/show_bug.cgi?id=2079 * libtiff/tif_print.c (TIFFPrintDirectory): Apply fix from Jay Berkenbilt for "Bug 2024 - possible null pointer dereference with one-line fix". http://bugzilla.maptools.org/show_bug.cgi?id=2024 * libtiff/tif_dirread.c (TIFFReadCustomDirectory): Apply patch from Jay Berkenbilt for "Bug 1895 - logic error in tif_dirread.c: segfault after setting tdir_tag = IGNORE". http://bugzilla.maptools.org/show_bug.cgi?id=1895 2009-08-23 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * test/Makefile.am, test/tiffcrop*.sh: Split previously existing tiffcrop.sh into a collection of many specific tests. Re-wrote all of the existing tests to be based on some simple shell functions. Make distcheck works again. Export certain variables (MAKE, MAKEFLAGS, MEMCHECK) to tests and added 'memcheck' and 'ptrcheck' targets to make it easy to run the tests under valgrind. 2009-08-21 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * test/tiffcp-logluv.sh: Fix test so that it works with a VPATH build. * test/Makefile.am (AUTOMAKE_OPTIONS): Colorized tests was not actually activated since it needed to be enabled in this Makefile.am. Also activated parallel-tests mode since it offers useful features such as per-test .log files and a summary test report .log file. 2009-08-20 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * configure.ac: Updated autotools. Autoconf 2.64, Automake 1.11, libtool 2.2.6. Enabled support for silent build rules (--enable-silent-rules or 'make V=0') and colorized tests. * html/{index.html, v3.9.0.html}: Update for 3.9.0 release. 2009-06-30 Frank Warmerdam <warmerdam@pobox.com> * tests/tiffcp-logluv.sh: minimal testing of sgilog compression. * tools/tiffcp.c: add -c sgilog support. * libtiff/tif_luv.c: correct return codes from encoderow to be 1 on success instead of zero. http://bugzilla.maptools.org/show_bug.cgi?id=2069 * libtiff/tif_lzw.c: back out patch from #2065 and apply patch from #1085 for a better underflow fix that errors properly. http://bugzilla.maptools.org/show_bug.cgi?id=2065 http://bugzilla.maptools.org/show_bug.cgi?id=1985 2009-06-26 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_strip.c: Remove an inappropriate assertion that often fails on oddly sized 12bit jpeg compressed ycbcr images. 2009-06-22 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_lzw.c: Fix buffer underflow bug. http://bugzilla.maptools.org/show_bug.cgi?id=2065 2009-06-21 Frank Warmerdam <warmerdam@pobox.com> * configure.ac, libtiff/tif_jpeg.c, libtiff/tif_jpeg_12.c: add support for dual mode 8/12 bit jpeg support. 2009-06-03 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_write.c: do not override the planar configuration to be contig for one sample files if planar configuration is already set. http://bugzilla.maptools.org/show_bug.cgi?id=2057 2009-06-02 Frank Warmerdam <warmerdam@pobox.com> * libtiff/libtiff.def: Add TIFFUnsetField. 2009-05-03 Frank Warmerdam <warmerdam@pobox.com> * libtiff/{tif_jpeg.c,tif_ojpeg.c,tif_getimage.c}: Fixed various error reports to use "%s" as format string. http://trac.osgeo.org/gdal/ticket/2976 2009-03-12 Frank Warmerdam <warmerdam@pobox.com> * libtiff/{tif_fax3.c,tif_jpeg.c,tif_ojpeg.c}: Fix printdir chaining for some codecs (#2020). 2009-02-12 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_luv.c: Fix handling of tiled logluv images. http://bugzilla.maptools.org/show_bug.cgi?id=2005 2009-02-09 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirread.c: Improve allocation safety when allocated buffer for large tags. (#1998) Related to (#1993) 2009-02-06 Frank Warmerdam <warmerdam@pobox.com> * tools/tiffcrop.c: Don't default image->res_unit to INCH. Now the test suite should pass. 2009-02-05 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirread.c: Re-incorporated a sanity check on tag size, but at the 2GB boundary to avoid overflow on 32bit systems. http://bugzilla.maptools.org/show_bug.cgi?id=1993 * libtiff/tif_dirread.c: Remove some assertions that blow due to corrupt files rather than in response to library internal inconsistencies. http://bugzilla.maptools.org/show_bug.cgi?id=1995 http://bugzilla.maptools.org/show_bug.cgi?id=1991 * libtiff/tif_dirread.c: Fixed testing for failed result from TIFFReadDirectoryFindFieldInfo(). http://bugzilla.maptools.org/show_bug.cgi?id=1992 2009-01-23 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_predict.c: Add support for 32bit integer horz. predictors. http://bugzilla.maptools.org/show_bug.cgi?id=1911 * libtiff/tif_dirwrite.c: Fix byte swapping of next directory offset. http://bugzilla.maptools.org/show_bug.cgi?id=1924 * tools/tiffcrop.c: initialize xres/yres values. * test/*.sh - default ${srcdir} to local directory. * test/common.sh - start verbose mode after common settings. * libtiff/tif_dirinfo.c: Replace lfind() with local equivelent to avoid type mismatches on different platforms. http://bugzilla.maptools.org/show_bug.cgi?id=1889 2009-01-22 Frank Warmerdam <warmerdam@pobox.com> * tools/{fax2tiff.c,thumbnail.c,tiff2pdf.c,tiff2ps.c,tiffdump.c, tiffsplit.c}: avoid warnings, mostly 32bit/64bit casting issues. * port,tools: Introduce libport.h, and include in tools if NEED_LIBPORT defined, primarily to reduce prototype warnings on windows. * libtiff/tif_dirinfo.c,tif_dirread.c: Avoid warnings about unused parameters, and uninitialized variables. 2009-01-21 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * test/common.sh: Execute tests like 'make VERBOSE=TRUE check' in order to trace full execution detail while executing the test suite. 2009-01-20 Frank Warmerdam <warmerdam@pobox.com> * tools/tiffsplit.c: fix sampleformat to be shortv instead of longv. 2009-01-20 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * test/Makefile.am (CLEANFILES): Make sure that test output files are removed by 'make clean' * Update autotools for 4.0.0 beta3 * 4.0.0 beta3 produced. 2009-01-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * test/tiffcrop.sh: New test script for tiffcrop from Richard Nolde. * tools/tiff2ps.c: Remove spurious message to stderr. 2009-01-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiff2ps.c: Incorporated significant functionality update from Richard Nolde. In particular, support for rotating the image by 90, 180, 270, and 'auto' has been added. * man/tiffcrop.1: Incorporated documentation updates from Richard Nolde. * tools/tiffcrop.c: Incorporated significant functionality update from Richard Nolde. 2008-12-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tiffio.h: GCC will now validate format specifications for TIFFError(), TIFFErrorExt(), TIFFWarning(), and TIFFWarningExt() in order to reveal bugs. * Many fixes throughout to work better as a 64-bit build. 2008-12-30 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/{tiff2pdf.c, tiff2ps.c, tiffinfo.c}: Offset and length tags now require 64-bit parameter rather than 32-bit. * libtiff/tif_dirread.c: Fixed issues with unaligned access to 64-bit values. * tools/thumbnail.c: Eliminate crash noticed while running test suite. 2008-12-29 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_ojpeg.c (OJPEGLibjpegJpegSourceMgrFillInputBuffer): Initialize stack variables to avoid compiler warning. * tools/tiffinfoce.c (main): Use toff_t for offset type when retrieving offset of EXIF IFD. * libtiff/tiffio.h: Undeprecate toff_t and restore its use in the TIFFClientOpen() callback and other external function definitions. * tools/tiffinfo.c (main): Offset to EXIF IFD requires a 64-bit type now. Fixes crash when dumping files containing an EXIF IFD. * m4/libtool.m4: Update to libtool 2.2.6. 2008-12-21 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dir.c, tiffio.h: Introduce TIFFUnsetField() function. * libtiff/tif_jpeg.c: Avoid errors if the application writes a full strip for the last partial strip in a jpeg compressed file. http://bugzilla.maptools.org/show_bug.cgi?id=1981 2008-10-29 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_flush.c: Make sure that BEENWRITING is cleared when we take the shortcut to only update the strip/tile offsets in place. http://trac.osgeo.org/gdal/ticket/2621 2008-10-21 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_jbig.c: Support the JBIG-KIT 2.0 (compatibility with the older versions retained). 2008-10-09 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: Add #ifdefs for changes needed if using IPP enabled version of libjpeg from Intel. http://bugzilla.maptools.org/show_bug.cgi?id=1951 2008-09-05 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffsplit.c: Use byte counts of proper size (uint64). Required for libtiff 4.0. * tools/tiffsplit.c: Use dynamically allocated array instead of static when constructing output file names. 2008-09-03 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffsplit.c: Get rid of unsafe strcpy()/strcat() calls when doing the filename/path construction. * tools/tiff2pdf.c: More appropriate format string in t2p_write_pdf_string(); avoid signed/unsigned mismatch. * libtiff/tif_lzw.c: Properly zero out the codetable. As per bug http://bugzilla.maptools.org/show_bug.cgi?id=1929 * libtiff/tif_lzw.c: Properly zero out the string table. Fixes CVE-2008-2327 security issue. 2008-09-01 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirread.c: Avoid unused TIFFReadDirEntryFloat() function. * libtiff/tif_dirwrite.c: modified to write IFDs as either IFD8 or IFD depending on whether the file is bigtiff or classic tiff. http://bugzilla.maptools.org/show_bug.cgi?id=1917 2008-08-12 Edward Lam <edward@sidefx.com> * tools/tiffdump.c: When compiling for Microsoft Windows, apply consistent (__int64) casting when testing if _lseeki64 has successfully seeked as requested. This is necessary for large file support to work since off_t is only 32-bit. 2008-07-29 Frank Warmerdam <warmerdam@pobox.com> * tif_strip.c: Replace assertions related to samplesperpixel != 3 or the subsampling values not being 1, 2 or 4 (for jpeg compressed images) with control logic to return runtime errors (c/o Even Rouault) (#1927). 2008-06-17 Frank Warmerdam <warmerdam@pobox.com> * tools/tiffcrop.c: Fix some portability problems. * libtiff/tif_ojpeg.c: Use same jpeg/win32 boolean/FAR hacks as are used in tif_jpeg.c. * libtiff/tif_win32.c: Ensure TIFFOpenW() uses same FILE_SHARE flags as TIFFOpen(). 2008-06-01 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirwrite.c: Fix alignment problems affecting architectures like Sparc/Solaris. http://bugzilla.maptools.org/show_bug.cgi?id=1892 2008-05-27 Frank Warmerdam <warmerdam@pobox.com> * libtiff.def: Add TIFFFindField http://bugzilla.maptools.org/show_bug.cgi?id=1891 2008-05-26 Frank Warmerdam <warmerdam@pobox.com> * tif_config.*.h, tiffconf.*.h: Remove SIZEOF_LONG definition, unused. * li2008-04-15 Andrey Kiselev <dron@ak4719.spb.edu> btiff/tif_win32.c: Replace custom Win32 memory api with generic POSIX one. No apparent value to use of GlobalAlloc() in the modern age. http://bugzilla.maptools.org/show_bug.cgi?id=1885 * libtiff/tiffconf.vc.h: Added JBIG_SUPPORT and MDI_SUPPORT items in windows version (care of Edward Lam). 2008-05-24 Frank Warmerdam <warmerdam@pobox.com> * tif_codec.c: Avoid NULL pointer dereferencing for exotic compression codec codes. * tif_dirwrite.c: fix potential memory leak. * tif_dirread.c: Fix unchecked malloc result. 2008-05-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * test {tiff2pdf.sh tiff2ps-EPS1.sh tiff2ps-PS1.sh tiff2ps-PS2.sh tiff2ps-PS3.sh tiffcp-g3-1d-fill.sh tiffcp-g3-1d.sh tiffcp-g3-2d-fill.sh tiffcp-g3-2d.sh tiffcp-g3.sh tiffcp-g4.sh tiffcp-split-join.sh tiffcp-split.sh tiffcp-thumbnail.sh tiffdump.sh tiffinfo.sh}: Added more test scripts based on suggestions from Lee Howard posted to the tiff list on 13 Sep 2007. 2008-05-23 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_fax3.c: Add an assert in an effort to detect a possible runtime problem reported by coverity. * contrib/iptcutil/iptcutil.c: Fixed memory leak of str. * tools/tiffcrop.c, man/tiffcrop.1: Major update from Richard Nolde. http://bugzilla.maptools.org/show_bug.cgi?id=1888 * tools/tiffdither.c: remove dead onestrip code. avoid memory leak. * tools/rgb2ycbcr.c: fix memory leak of raster buffer. * tools/tiffcp.c: Simplify inknames code to avoid pointless test. Cleanup scanline allocation to avoid coverity warning. * tools/thumbnail.c: Check for TIFFOpen() failure. 2008-05-18 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirinfo.c: Use TIFF_SETGET_ASCII for PIXAR_TEXTUREFORMAT and PIXAR_WRAPMODES instead of TIFF_SETGET_UNDEFINED. Not exactly clear why this is needed. 2008-05-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * Makefile.am (ACLOCAL_AMFLAGS): Libtool 2.2.4 does not like "ACLOCAL_AMFLAGS=-I ./m4". It wants "ACLOCAL_AMFLAGS=-I m4". 2008-04-15 Andrey Kiselev <dron@ak4719.spb.edu> * test/: Test suite updated. Everything is passed now. * libtiff/tif_dirinfo.c: Fixed description of the TIFFTAG_NUMBEROFINKS tag. 2008-04-14 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_dirread.c, tif_dirwrite.c, tiffiop.h}: Get rid of some of "dereferencing type-punned" warnings by converting tdir_offset field of TIFFDirEntry structure into union. 2008-04-10 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_flush.c, tif_dirwrite.c, tiffio.h, tiffiop.h}: TIFFRewriteField() renamed into _TIFFRewriteField() and moved out from the public interface. Type of its 'count' parameter changed from uint32 to tmsize_t. * /libtiff/tiffiop.h: Make tif_nfields and tif_nfieldscompat fields of the tiff structure have the size_t type instead of uint32. 2008-04-09 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffdump.c: Added support for MSVS 6.0. * libtiff/tif_dirread.c: Use custom functions _TIFFUInt64ToFloat() and _TIFFUInt64ToDouble() to convert 64-bit integers into floating point values on MSVS 6.0 platform. 2008-03-14 Frank Warmerdam <warmerdam@pobox.com> * tif_dirread.c: Removed sanity checks on tags larger than 4MB in TIFFReadDirEntryArray() since they are interfering with seemingly legitimate files. http://trac.osgeo.org/gdal/ticket/2005 2008-02-09 Joris Van Damme <joris.at.lebbeke@skynet.be> * tif_dirread.c: Added handling for the case of number of values for PageNumber tag different from 2 (previously resulted in an assert indicating lack of handling and was forgotten about) 2008-02-01 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: Do not try to fixup subsampling tags based on the actual jpeg data stream if the first strip/tile has zero size. This is the case when GDAL creates a new file with zero sizes, closes and reopens it. 2008-01-07 Frank Warmerdam <warmerdam@pobox.com> * tools/tiff2ps.c: fix up 64bit issues (from Edward Lam). 2008-01-01 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirwrite.c: #ifdef out lots of unused functions. * Makefile.vc, libtiff/Makefile.vc, tools/Makefile.vc: Improve clean targets. * tools/tiffinfo.c, tools/tiffcmp.c, tools/gif2tiff.c, tools/bmp2tiff.c tools/tiff2pdf.c: Fix 64-bit warnings when compiling under MSVC 2005 (x64). * tools/tiffset.c: Changes to reflect the fact that TIFFFieldWithTag() and TIFFFieldWithName() now return TIFFField pointers instead of TIFFFieldInfo pointers. * tools/tiffdump.c: Added ssize_t typedef on Windows since it doesn't exist. This makes it compile again on Windows * tif_aux.c, tif_getimage.c, tif_next.c, tif_predict.c, tif_win32.c, tiffconf.vc.h: Various 64bit fixes from Edward Lam identified on win64. * test/rewrite_tag.c: New test for TIFFRewriteField(). 2007-12-31 Frank Warmerdam <warmerdam@pobox.com> * tif_dirwrite.c: Added TIFFRewriteField(). This new function rewrites one field "on disk" updating an existing directory entry. Lots of limitations still... * tiffiop.h, tif_write.c, tif_dirread.c, tif_flush.c: Keep track of TIFF_DIRTYSTRIP separately from TIFF_DIRTYDIRECT to indicate that the strip offset/size values are dirty but nothing else about the directory is dirty. In flush handle "just stripmaps dirty" as a special case that just rewrites these values without otherwise modifying the directory on disk using TIFFRewriteField(). We also modify logic so that in update mode the directory is not marked dirty on read, but only when something is changed. This means we need to keep track of updates to the stripmap stuff in TIFFAppendToStrip(). 2007-12-10 Frank Warmerdam <warmerdam@pobox.com> * tif_jpeg.c: Improve ability to switch between encoding and decoding in the jpeg code (gdal bug #2033). 2007-11-23 Frank Warmerdam <warmerdam@pobox.com> * tif_dir.c, tif_dirread.c, tif_dirwrite.c, tif_read.c, tif_write.c, tiffiop.h: Added TIFF_BUF4WRITE flag to indicate if contents of the rawcp/rawcc buffer are for writing and thus may require flushing. Necessary to distinguish whether they need to be written to disk when in mixed read/write mode and doing a mixture of writing followed by reading. http://trac.osgeo.org/gdal/ticket/1758 2007-11-23 Andrey Kiselev <dron@ak4719.spb.edu> * configure.com, libtiff/tif_vms.c: Better OpenVMS support. Patches from Alexey Chupahin. 2007-11-02 Frank Warmerdam <warmerdam@pobox.com> * tif_write.c: Rip out the fancy logic in TIFFAppendToStrip() for establishing if an existing tile can be rewritten to the same location by comparing the current size to all the other blocks in the same directory. This is dangerous in many situations and can easily corrupt a file. (observed in esoteric GDAL situation that's hard to document). This change involves leaving the stripbytecount[] values unaltered till TIFFAppendToStrip(). Now we only write a block back to the same location it used to be at if the new data is the same size or smaller - otherwise we move it to the end of file. * tif_dirwrite.c: Try to avoid writing out a full readbuffer of tile data when writing the directory just because we have BEENWRITING at some point in the past. This was causing odd junk to be written out in a tile of data when a single tile had an interleaving of reading and writing with reading last. (highlighted by gdal autotest/gcore/tif_write.py test 7. * tif_predict.c: use working buffer in PredictorEncodeTile to avoid modifying callers buffer. http://trac.osgeo.org/gdal/ticket/1965 * tif_predict.c/h: more fixes related to last item, keeping a distinct pfunc for encode and decode cases as these were getting mixed up sometimes. http://trac.osgeo.org/gdal/ticket/1948 2007-11-01 Frank Warmerdam <warmerdam@pobox.com> * tif_predict.c/h, tif_lzw.c, tif_zip.c: Improvements so that predictor based encoding and decoding works in read-write update mode properly. http://trac.osgeo.org/gdal/ticket/1948 2007-10-24 Joris Van Damme <joris.at.lebbeke@skynet.be> * tif_dirread.c: Fixed problem with bogus file triggering assert(td->td_planarconfig == PLANARCONFIG_CONTIG) in ChopUpSingleUncompressedStrip 2007-10-22 Joris Van Damme <joris.at.lebbeke@skynet.be> * tif_jpeg.c: Resolved buffer incrementation bug that lead to faulty images at best, access violation at worst, when subsampled JPEG compressed imagery is decoded without the JPEG_COLORMODE feature 2007-10-11 Frank Warmerdam <warmerdam@pobox.com> * html/index.html: Update "people responsible" section. 2007-10-05 Frank Warmerdam <warmerdam@pobox.com> * tools/tiff2pdf.c: Fix problem with alpha setting in some cases as reported on the mailing list. 2007-10-01 Joris Van Damme <joris.at.lebbeke@skynet.be> * changed some more incorrect %lud printf flags to %lu 2007-09-29 Joris Van Damme <joris.at.lebbeke@skynet.be> * tif_dirread.c: Strip chopping interfered badly with uncompressed subsampled images because it tried to divide subsampled rowblocks, leading to all sorts of errors throughout the library for these images. Fixed by making strip chopping divide in row counts that are a multiple of vertical subsampling value. 2007-09-28 Joris Van Damme <joris.at.lebbeke@skynet.be> * tif_dirread.c: Logical cast working around compiler warning * tif_read.c: Correction of some error flags and parameter lists 2007-09-27 Joris Van Damme <joris.at.lebbeke@skynet.be> * tif_dirread.c: Made calculation of td_maxsamplevalue more robust when dealing with large bitspersample values, shutting up purification tools that warn about truncation, though it remains incorrect and indicates a conceptual problem there. * tif_open.c: Moved early exit in case of 'h' flag (to disable reading of first IFD) to proper place because it badly interfered with memory mapping, resulting in mapping flag even with dummy mapping functions that returned 0 whilst at the same time the mapping tif_size wasn't set, thus resulting in continuous incorrect beyond-eof errors. 2007-09-24 Joris Van Damme <joris.at.lebbeke@skynet.be> * tif_dirinfo.c: Fixed (MSVC) compiler reports about inconsistent use of const in tiffFields and exifFields definition 2007-09-20 Frank Warmerdam <warmerdam@pobox.com> * tif_dirwrite.c: Always write tile/strip offsets and sizes using LONG8 type when output format is BigTIFF. The TIFFWriteDirectoryTagLongLong8Array() function was restructured accordingly. * tif_dirread.c: Improvements to error reporting text in TIFFFetchDirectory(). 2007-09-19 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * test/images: Added a small collection of test images for use by test programs and scripts. * test/tiffinfo.sh: A trivial example test script. * test/common.sh: Added small script for setting the environment used by script-based tests. 2007-08-24 Frank Warmerdam <warmerdam@pobox.com> * tif_dirwrite.c: Write the tif_nextdiroff value instead of a fixed zero when writing directory contents to preserve the ability to rewrite directories in place, even in the middle of a directory chain. * tif_dirinfo.c: _TIFFMergeFields() now only merges in field definitions that are missing. Existing definitions are silently ignored. * tif_dirread.c: Add runtime error for fields for which no definition is found (in addition to an assert for developers) in TIFFFetchNormalTag(). Not sure if this is needed, but it seems prudent. 2007-08-10 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tif_getimage.c: removed SubsamplingHor and SubsamplingVer from _TIFFRGBAImage structure to revert unwanted ABI change. 2007-08-10 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tif_win32.c: use SetFilePointer instead of SetFilePointerEx, as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1580 2007-07-19 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_stream.cxx: Put all callback functions declarations inside extern "C" block. * libtiff/{tif_lzw.c, tif_luv.c, tif_dumpmode.c, tif_print.c, tif_read.c, tif_strip.c, tif_thunder.c}: Use "%I64d" printf() formatter instead of "%lld" with MSVC compiler. * libtiff/{tiffiop.h, tif_aux.c}: Added _TIFFUInt64ToFloat() and _TIFFUInt64ToDouble() functions. 2007-07-18 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: Handle the case of MSVC 6 when using 64-bit integer constants. * libtiff/{Makefile.am, Makefile.v}: Do not distribute tiffconf.h, remove tif_config.h/tiffconf.h during cleaning. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1573 * libtiff/tif_unix.c: Do not use O_LARGEFILE. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1577 2007-07-13 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff 4.0.0alpha released. 2007-07-12 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdf.c: Added missed extern optind as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1567 * libtiff/{tif_close.c, tif_dirinfo.c, tiffiop.c, tif_dirread.c, tif_dir.h, tif_dir.c, tiffio.h}: Transition to the new-style tag extending scheme completed. 2007-07-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_stream.cxx: Adapt to use toff_t again. Update to use standard C++ library size types and attempt to detect overflow cases. 2007-07-08 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_jpeg.c, tif_dir.h, tif_dir.c, tif_dirinfo.c, tiffio.h, tif_ojpeg.c, tif_print.c, tif_fax3.c, tif_dirread.c}: More work on new tag extending scheme. Use the new scheme everywhere. * libtiff/{tif_zip.c, tif_predict.c, tif_pixarlog.c, tif_luv.c, tif_fax3.c, tif_dirread.c, tif_dirwrite.c, tif_close.c, tif_ojpeg.c, tif_jpeg.c, tif_dirinfo.c, tif_dir.h, tiffio.h, tiffiop.h}: TIFFFIeldInfo structure replaced with TIFFField structure. TIFFFieldInfo retained for the backward compatibility. 2007-07-05 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiff2pdf.c: Fix a compile problem when JPEG_SUPPORT is not defined. 2007-07-04 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_dir.c, tiff.h, tiffio.h, libtiff.def}: Unused TIFFReassignTagToIgnore() function and TIFFIgnoreSense enumeration removed. * libtiff/{tif_dirinfo.c, tif_fax3.c, tif_jbig.c, tif_jpeg.c}: Move tags TIFFTAG_FAXRECVPARAMS, TIFFTAG_FAXSUBADDRESS, TIFFTAG_FAXRECVTIME and TIFFTAG_FAXDCS to the common tag directory. These tags are not codec-specific and relate to image content, so process them as other normal tags. * libtiff/{tiffio.h, tif_dir.h}: TIFFTagValue structure moved from the public tiffio.h to private tif_dir.h. * contrib/{acorn, mac-cw, mac-mpw}: Removed as unmaintained and outdated. 2007-07-03 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff{tif_acorn.c, tif_apple.c, tif_atari.c, tif_msdos.c, tif_win3.c}: Obsoleted portability stuff removed. * tools/tiff2ps.c: Added support 16-bit images as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1566 Patch from William Bader. * tools/tiff2pdf.c: Fix for TIFFTAG_JPEGTABLES tag fetching and significant upgrade of the whole utility as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1560 Now we don't need tiffiop.h in tiff2pdf anymore and will open output PDF file using TIFFClientOpen() machinery as it is implemented by Leon Bottou. 2007-06-26 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * configure.ac: Fix typo when substituting value for unsigned 8 bit type. Added support for a TIFF_PTRDIFF_T type to use when doing pointer arithmetic. Added support for a TIFF_SSIZE_T in order to return memory sizes but still allow returning -1 for errors. * libtiff/tiffconf.vc.h: Add porting type defintions for WIN32. 2007-06-25 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * port/strtoull.c: New porting function in case strtoull() is not available on the target system. * configure.ac: Add configure support for determining sized types in a portable way and performing necessary substitutions in tif_config.h and tiffconf.h. Updated tiff.h to use the new definitions. 2007-04-27 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdf.c: Check the tmpfile() return status as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=154 2007-04-07 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_dir.h, tif_dirread.c, tif_dirinfo.c, tif_jpeg.c, tif_fax3.c, tif_jbig.c, tif_luv.c, tif_ojpeg.c, tif_pixarlog.c, tif_predict.c, tif_zip.c}: Finally fix bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1274 by introducing _TIFFMergeFieldInfo() returning integer error status instead of void in case of problems with field merging (e.g., if the field with such a tag already registered). TIFFMergeFieldInfo() in public API remains void. Use _TIFFMergeFieldInfo() everywhere and check returned value. 2007-04-07 Frank Warmerdam <warmerdam@pobox.com> * contrib/addtiffo/tif_overview.c: Fix problems with odd sized output blocks in TIFF_DownSample_Subsampled() (bug 1542). 2007-04-06 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: Changed JPEGInitializeLibJPEG() so that it will convert from decompressor to compressor or compress to decompress if required by the force arguments. This works around a problem in where the JPEGFixupTestSubsampling() may cause a decompressor to be setup on a directory when later a compressor is required with the force flag set. Occurs with the addtiffo program for instance. 2007-04-06 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffcrop.c, man/tiffcrop.1: Significant update in functionality from Richard Nolde. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1525 2007-03-28 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_fax3.c: "inline static" -> "static inline" for IRIC CC. 2007-03-17 Joris Van Damme <joris.at.lebbeke@skynet.be> * start of BigTIFF upgrade - CVS HEAD unstable until further notice 2007-03-07 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tif_getimage.c: workaround for 'Fractional scanline' error reading OJPEG images with rowsperstrip that is not a multiple of vertical subsampling factor. This bug is mentioned in: http://bugzilla.remotesensing.org/show_bug.cgi?id=1390 http://www.asmail.be/msg0054766825.html 2007-03-07 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tif_win32.c: made inclusion of windows.h unconditional * libtiff/tif_win32.c: replaced preprocessor indication for consiously unused arguments by standard C indication for the same 2007-02-27 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: Use uint32 type instead of tsize_t in byte counters in TIFFFetchData(). Should finally fix the issue http://bugzilla.remotesensing.org/show_bug.cgi?id=890 2007-02-24 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffset.c: Properly handle tags with TIFF_VARIABLE writecount. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1350 * libtiff/tif_dirread.c: Added special function to handle SubjectDistance EXIF tag as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1362 * tools/tiff2pdf.c: Do not assume inches when the resolution units do not specified. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1366 * tools/{tiffcp.c, tiffcrop.c}: Do not change RowsPerStrip value if it was set as infinite. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1368 * tools/tiffcrop.c, man/tiffcrop.1: New tiffcrop utility contributed by Richard Nolde. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1383 2007-02-22 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dir.c: Workaround for incorrect TIFFs with ExtraSamples == 999 produced by Corel Draw. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1490 * libtiff/{tif_dirread.c, tif_read.c}: Type of the byte counters changed from tsize_t to uint32 to be able to work with data arrays larger than 2GB. Fixes bug http://bugzilla.remotesensing.org/show_bug.cgi?id=890 Idea submitted by Matt Hancher. 2007-01-31 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tif2rgba.c: This utility does not work properly on big-endian architectures. It was fixed including the bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1149 2007-01-15 Mateusz Loskot <mateusz@loskot.net> * Submitted libtiff port for Windows CE platform * libtiff/tif_config.wince.h: Added configuration header for WinCE. * libtiff/tiffconf.wince.h: Ported old configuration header for WinCE. * libtiff/tif_wince.c: Added WinCE-specific implementation of some functons from tif_win32.c. * libtiff/tif_win32.c: Disabled some functions already reimplemented in tif_wince.c. * libtiff/tiffiop.h, port/lfind.c: Added conditional include of some standard header files for Windows CE build. * tools/tiffinfoce.c: Ported tiffinfo utility for Windows CE. 2006-11-19 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_write.c: TIFFAppendToStrip() - clear sorted flag if we move a strip. http://bugzilla.remotesensing.org/show_bug.cgi?id=1359 2006-10-13 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dir.c: More fixes for vulnerabilities, reported in Gentoo bug (): http://bugs.gentoo.org/show_bug.cgi?id=142383 * libtiff/contrib/dbs/xtiff/xtiff.c: Make xtiff utility compilable. Though it is still far from the state of being working and useful. 2006-10-12 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_fax3.c: Save the state of printdir codec dependent method. * libtiff/tif_jpeg.c: Save the state of printdir codec dependent method as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1273 * libtiff/tif_win32.c: Fixed problem with offset value manipulation as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1322 * libtiff/{tif_read.c, tif_jpeg.c, tif_dir.c}: More fixes for vulnerabilities, reported in Gentoo bug (): http://bugs.gentoo.org/show_bug.cgi?id=142383 2006-09-28 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_fax3.c, tif_next.c, tif_pixarlog.c}: Fixed multiple vulnerabilities, as per Gentoo bug (): http://bugs.gentoo.org/show_bug.cgi?id=142383 2006-09-27 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_lzw.c, libtiff/tif_zip.c: Fixed problems with mixing encoding and decoding on the same read-write TIFF handle. The LZW code can now maintain encode and decode state at the same time. The ZIP code will switch back and forth as needed. http://bugzilla.remotesensing.org/show_bug.cgi?id=757 2006-09-20 Frank Warmerdam <warmerdam@pobox.com> * libtiff: Rename config.h.vc and tif_config.h.vc to config.vc.h and tif_config.vc.h for easier identification by folks using an IDE. 2006-07-25 Frank Warmerdam <warmerdam@pobox.com> * tif_msdos.c: Avoid handle leak for failed opens. c/o Thierry Pierron 2006-07-19 Frank Warmerdam <warmerdam@pobox.com> * tif_dirwrite.c: take care not to flush out buffer of strip/tile data in _TIFFWriteDirectory if TIFF_BEENWRITING not set. Relates to bug report by Peng Gao with black strip at bottom of images. 2006-07-12 Frank Warmerdam <warmerdam@pobox.com> * tif_dirwrite.c: make sure to use uint32 for wordcount in TIFFWriteNormanTag if writecount is VARIABLE2 for ASCII fields. It already seems to have been done for other field types. Needed for "tiffset" on files with geotiff ascii text. 2006-07-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * {configure.ac, libtiff/tif_config.h.vc, libtiff/tif_jbig.c} (JBIGDecode): jbg_newlen is not available in older JBIG-KIT and its use does not appear to be required, so use it only when it is available. 2006-06-24 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirinfo.c: Added missed EXIF tag ColorSpace (40961). * libtiff/tif_dirread.c: Move IFD fetching code in the separate function TIFFFetchDirectory() avoiding code duplication in TIFFReadDirectory() and TIFFReadCustomDirectory(). 2006-06-19 Frank Warmerdam <warmerdam@pobox.com> * tools/tiff2pdf.c: Fix handling of -q values. http://bugzilla.remotesensing.org/show_bug.cgi?id=587 2006-06-17 Frank Warmerdam <warmerdam@pobox.com> * tif_readdir.c: Added case in EstimateStripByteCounts() for tiled files. Modified TIFFReadDirectory() to not invoke EstimateStripByteCounts() for case where entry 0 and 1 are unequal but one of them is zero. http://bugzilla.remotesensing.org/show_bug.cgi?id=1204 2006-06-08 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_open.c, tif_dirread.c, tiffiop.h}: Move IFD looping checking code in the separate function TIFFCheckDirOffset(). * libtiff/tif_aux.c: Added _TIFFCheckRealloc() function. * tools/tiffcmp.c: Fixed floating point comparison logic as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1191 * libtiff/tif_fax3.c: Fixed problems in fax decoder as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1194 * tools/tiff2pdf.c: Fixed buffer overflow condition in t2p_write_pdf_string() as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1196 2006-06-07 Andrey Kiselev <dron@ak4719.spb.edu> * {configure, configure.ac, libtiff/tif_jbig.c, tools/tiffcp.c}: Added support for JBIG compression scheme (34661 code) contributed by Lee Howard. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=896 * configure, configure.ac: OJPEG support enabled by default. * contrib/ojpeg/: Removed. New OJPEG support does not need this patch. 2006-06-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/{tif_dirinfo.c, tif_print.c} : Fix crash in TIFFPrintDirectory(). Joris Van Damme authored the fix. 2006-04-21 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdf.c: Unified line ending characters (always use '\n') as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1163 * README.vms, Makefile.am, configure.com, libtiff/{Makefile.am, tif_config.h-vms, tif_stream.cxx, tif_vms.c, tiffconf.h-vms}: Added support for OpenVMS by Alexey Chupahin, elvis_75@mail.ru. 2006-04-20 Andrey Kiselev <dron@ak4719.spb.edu> * tools/{fax2ps.c, fax2tiff.c, ppm2tiff.c, ras2tiff.c, tiff2pdf.c}: Properly set the binary mode for stdin stream as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1141 * man/{bmp2tiff.1, fax2ps.1, fax2tiff.1, gif2tiff.1, ras2tiff.1, raw2tiff.1, rgb2ycbcr.1, sgi2tiff.1, tiff2bw.1, tiff2pdf.1, tiff2ps.1, tiff2rgba.1, tiffcmp.1, tiffcp.1, tiffdither.1, tiffdump.1, tiffgt.1, tiffset.1}: Improvements in page formatting as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1140 * html/tools.html, html/man/Makefile.am, tools/tiff2pdf.c: Fixed typos as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1139 2006-04-18 Frank Warmerdam <warmerdam@pobox.com> * nmake.opt: use /EHsc for VS2005 compatibility. Also define _CRT_SECURE_NO_DEPRECATE to avoid noise on VS2005. 2006-04-12 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tif_getimage.c: Added support for planarconfig separate non-subsampled YCbCr (i.e. separate YCbCr with subsampling [1,1]) 2006-04-11 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tif_getimage.c: Revision of all RGB(A) put routines - Conversion of unassociated alpha to associated alpha now done with more performant LUT, and calculation more correct - Conversion of 16bit data to 8bit data now done with more performant LUT, and calculation more correct - Bugfix of handling of 16bit RGB with unassociated alpha 2006-04-11 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tif_getimage.c: - When there is no alpha, gtTileSeparate and gtStripSeparate allocated buffer for alpha strile and filled it, only to never read it back. Removed allocation and fill. - Minor rename of vars in gtTileSeparate and gtStripSeparate anticipating planned functionality extension 2006-04-08 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tif_getimage.c: renamed pickTileContigCase to PickContigCase and pickTileSeparateCase to PickSeparateCase as both work on strips as well * libtiff/tif_getimage.c: moved img->get selection from TIFFRGBAImageBegin into PickContigCase and PickSeparateCase to create logical hook for planned functionality extension 2006-04-08 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tif_ojpeg.c: resolved memory leak that was a consequence of inappropriate use of jpeg_abort instead of jpeg_destroy 2006-04-07 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tif_getimage.c: replaced usage of TIFFScanlineSize in gtStripContig with TIFFNewScanlineSize so as to fix buggy behaviour on subsampled images - this ought to get sorted when we feel brave enough to replace TIFFScanlineSize alltogether * libtiff/tif_ojpeg.c: fixed bug in OJPEGReadSkip 2006-04-04 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tiffio.h: added new type tstrile_t * libtiff/tif_dir.h: changed types of td_stripsperimage and td_nstrips to new tstrile_t, types of td_stripoffset and td_stripbytecount to toff_t* * libtiff/tif_ojpeg.c: totally new implementation * libtiff/tif_dirread.c: added several hacks to suit new support of OJPEG * libtiff/tif_getimage.c: removed TIFFTAG_JPEGCOLORMODE handling of OJPEG images in favor of tif_getimage.c native handling of YCbCr and desubsampling 2006-03-29 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: JPEGVSetField() so that altering the photometric interpretation causes the "upsampled" flag to be recomputed. Fixes peculiar bug where photometric flag had to be set before jpegcolormode flag. 2006-03-25 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tif_jpeg.c: strip size related bugfix in encode raw * libtiff/tif_strip.c: temporarilly added two new versions of TIFFScanlineSize - TIFFNewScanlineSize: proposed new version, after all related issues and side-effects are sorted out - TIFFOldScanlineSize: old version, from prior to 2006-03-21 change This needs further sorting out. 2006-03-25 Joris Van Damme <joris.at.lebbeke@skynet.be> * contrib/addtiffo/tif_ovrcache.c: bugfix to correctly pass size of last truncated strip data to TIFFWriteEncodedStrip 2006-03-25 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/{tif_jpeg.c, tif_strip.c}: bugfix of tif_jpeg decode raw 2006-03-25 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tif_getimage.c: bugfix/rewrite of putcontig8bitYCbCr22tile * libtiff/tif_getimage.c: added putcontig8bitYCbCr12tile * libtiff/tif_read.c: added support for new TIFF_NOREADRAW flag to prepare the path for new tif_ojpeg.c 2006-03-23 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff 3.8.2 released. * tools/Makefile.am: Use runtime paths linker flags when rpath option enabled. 2006-03-21 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/libtiff.def: Added missed exports as per bug http://bugzilla.remotesensing.org/attachment.cgi?id=337 * contrib/addtiffo/Makefile.vc, libtiff/Makefile.vc, port/Makefile.vc, tools/Makefile.vc: Makefiles improvements as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1128 * nmake.opt libtiff/{tif_config.h.vc, tif_unix.c, tiffio.h}, tools/{fax2ps.c, fax2tiff.c, tiff2pdf.c}: Fixed win32 I/O functions usage as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1127 * libtiff/tif_strip.c: Take subsampling in account when calculating TIFFScanlineSize(). * tools/tiffcp.c: Do not set RowsPerStrip bigger than image length. 2006-03-17 Andrey Kiselev <dron@ak4719.spb.edu> * tools/fax2tiff.c: Fixed wrong TIFFerror() invocations as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1125 * tools/fax2ps.c: Fixed reading the input stream from stdin as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1124 2006-03-16 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tiffiop.h: Added decalration for _TIFFSetDefaultCompressionState(). * libtiff/{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 2006-03-15 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_jpeg.c: Do not cleanup codec state in TIFFInitJPEG(). As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1119 * tools/raw2tiff.c: Do not set RowsPerStrip larger than ImageLength. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1110 * libtiff/tiffiop.h: dblparam_t typedef removed; GLOBALDATA macro removed; move here the STRIP_SIZE_DEFAULT macro definition. * libtiff/{tif_dirread.c, tif_strip.c}: Removed STRIP_SIZE_DEFAULT macro definition. * libtiff/tif_dir.c: Use double type instead of dblparam_t. 2006-03-14 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/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. 2005-03-13 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff 3.8.1 released. 2006-03-07 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: Fixed error reporting in TIFFFetchAnyArray() function as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1102 * libtiff/tif_dirread.c: More wise check for integer overflow condition as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1102 * libtiff/{tif_jpeg.c, tif_pixarlog.c, tif_fax3.c, tif_zip.c}: Properly restore setfield/getfield methods in cleanup functions. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1102 2006-03-03 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_predict.c, tif_predict.h}: Added new function TIFFPredictorCleanup() to restore parent decode/encode/field methods. * libtiff/{tif_lzw.c, tif_pixarlog.c, tif_zip.c}: Use TIFFPredictorCleanup() in codec cleanup methods. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1102 * libtiff/tif_dirread.c: Fixed integer overflow condition in TIFFFetchData() function. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1102 2006-03-01 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_ojpeg.c: Set the ReferenceBlackWhite with the TIFFSetField() method, not directly. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1043 * tools/ppm2tiff.c: Added support for PBM files as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1044 2006-02-27 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_write.c: Small code rearrangement in TIFFWriteScanline() to avoid crash as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1081. 2006-02-26 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdf.c: Functions t2p_sample_rgbaa_to_rgb() and t2p_sample_rgba_to_rgb() was used in place of each other, that was resulted in problems with RGBA images with associated alpha. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1097 2006-02-23 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirwrite.c: Properly write TIFFTAG_DOTRANGE tag as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1088. * libtiff/tif_print.c: Properly read TIFFTAG_PAGENUMBER, TIFFTAG_HALFTONEHINTS, TIFFTAG_YCBCRSUBSAMPLING and TIFFTAG_DOTRANGE tags as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1088. * tools/tiff2ps.c: Properly scale all the pages when converting multipage TIFF with /width/height/center options set. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1080 2006-02-15 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdf.c: Do not create output file until all option checks will be done. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1072 * tools/bmp2tiff.c: Added ability to create multipage TIFFs from the list of input files as per bug: http://bugzilla.remotesensing.org/show_bug.cgi?id=1077 2006-02-09 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_tile.c: Fix error reporting in TIFFCheckTile() as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1063. * tools/tiffgt.c: Avoid crashing in case of image unsupported by TIFFRGBAImage interface. * libtiff/tif_color.c: Avoid overflow in case of wrong input as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1065. 2006-02-07 Frank Warmerdam <warmerdam@pobox.com> * tools/tiff2pdf.c: Fixed support for non-YCbCr encoded JPEG compressed TIFF files, per submission from Dan Cobra. 2006-02-07 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_dirread.c, tif_packbits.c, tif_win32.c}: Properly cast values to avoid warnings. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1033. * libtiff/tif_dirinfo.c: Use TIFF_NOTYPE instead of 0 when appropriate. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1033. * libtiff/tif_aux.c: Fixed type of temporary variable in _TIFFCheckMalloc() as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1033. 2006-02-06 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_aux.c: Return static array when fetching default YCbCrCoefficients (another problem, reported a the http://bugzilla.remotesensing.org/show_bug.cgi?id=1029 entry). 2006-02-03 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dir.c: Special handling for PageNumber, HalftoneHints, YCbCrSubsampling and DotRange tags as per bugs http://bugzilla.remotesensing.org/show_bug.cgi?id=1029 http://bugzilla.remotesensing.org/show_bug.cgi?id=1034 * libtiff/tif_dirread.c: Use _TIFFGetExifFieldInfo() instead of _TIFFGetFieldInfo() in TIFFReadEXIFDirectory() call as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1026. 2006-01-23 Andrey Kiselev <dron@ak4719.spb.edu> * libtool related stuff updated from the 2.1a branch. 2006-01-11 Frank Warmerdam <warmerdam@pobox.com> * tools/bmp2tiff,pal2rgb,ppm2tiff,ras2tiff,raw2tiff,sgi2tiff, tiff2bw,tiffcp: Fixed jpeg option processing so -c jpeg:r:50 works properly as per bug: http://bugzilla.remotesensing.org/show_bug.cgi?id=1025 2006-01-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * configure.ac: Fix with_default_strip_size comparison as reported by Norihiko Murase. 2006-01-08 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * test/Makefile.am (LIBTIFF): Due to linking against libtiff incorrectly, tests were not actually testing the uninstalled libtiff. Now they are. 2006-01-04 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirinfo.c: Change definitions for TIFFTAG_ICCPROFILE, TIFFTAG_PHOTOSHOP, TIFFTAG_RICHTIFFIPTC, TIFFTAG_XMLPACKET: readcount should be uint32 value. 2006-01-02 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * html/man/Makefile.am (htmldoc): Fix htmldoc rule so that it can be used if build directory is not the same as source directory. * man/{TIFFGetField.3tiff, TIFFSetField.3tiff}: Documented TIFFTAG_PHOTOSHOP, TIFFTAG_RICHTIFFIPTC, and TIFFTAG_XMLPACKET, and re-sorted tag names in alphabetical order. 2005-12-29 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff 3.8.0 released. 2005-12-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/bmp2tiff.c (main): Fixed warning regarding returning inconsistent types from a condition. * tools/tiffcmp.c (CheckLongTag): Eliminate warning due to printf format. * tools/bmp2tiff.c: Reduce compilation warnings on big-endian CPUs. 2005-12-28 Joris Van Damme <joris.at.lebbeke@skynet.be> * html/{index.html, support.hml, libtiff.html}: Cleaned up HTML 2005-12-27 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tiffio.h: Added VC_EXTRALEAN definition before including windows.h, to reduce the compile time. 2005-12-26 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_jpeg.c: Improve compilation under MinGW. 2005-12-26 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_dir.c, tif_dir.h, tif_dirread.c, tif_dirinfo.c}: tiffFieldInfo and exifFieldInfo arrays definitions moved back to tif_dirinfo.c; added _TIFFGetFieldInfo() and _TIFFGetExifFieldInfo() private functions to retrieve FieldInfo arrays. 2005-12-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * html/build.html: Added some additional instructions for when building using MSVC under Windows. Also fixed two HTML syntax errors and used HTML Tidy to tidy up the HTML syntax and formatting. 2005-12-24 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_aux.c, tif_dir.c, tif_dir.h, tif_dirwrite.c, tif_print.c, tif_getimage.c}: Make InkSet, NumberOfInks, DotRange and StoNits tags custom. 2005-12-23 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_aux.c, tif_dir.c, tif_dir.h, tif_print.c}: Make WhitePoint tag custom. * libtiff/{tif_dir.h, tiff.h}: More EXIF tags added. 2005-12-23 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/tiffio.h: fixed typo that potentially resulted in redefininition of USE_WIN32_FILEIO * libtiff/*: Added more 'dual-mode' error handling: Done TIFFWarning calls in core LibTiff. 2005-12-21 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_dir.c, tif_dir.h, tif_print.c}: Make RichTIFFIPTC, Photoshop and ICCProfile tags custom. 2005-12-21 Joris Van Damme <joris.at.lebbeke@skynet.be> * libtiff/*, contrib/*: Added 'dual-mode' error handling, enabling newer code to get context indicator in error handler and still remain compatible with older code: Done TIFFError calls everywhere except in tools 2005-12-20 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffcp.c: Added many error reporting messages; fixed integer overflow as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=789 2005-12-16 Frank Warmerdam <warmerdam@pobox.com> * contrib/addtiffo/*: Major upgrade by Joris to support subsampled YCbCr images in jpeg compressed TIFF files. 2005-12-14 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffcp.c: Return non-zero status when reading fails (again). 2005-12-13 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffcp.c: Return non-zero status when reading fails. 2005-12-12 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_dir.h, tiff.h}: Added more EXIF tags. 2005-12-09 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_dir.c, tif_dir.h, tif_print.c}: Make XMLPacket tag custom. * tools/tiffinfo.c: Print EXIF directory contents if exist. * libtiff/tiff.h: Few EXIF tag numbers added. * libtiff/{tif_dirinfo.c, tif_dirread.c, tif_dir.h, tif_dir.c, tiffio.h}: Preliminary support to read custom directories. New functions: TIFFReadCustomDirectory() and TIFFReadEXIFDirectory(). 2005-12-07 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_dirinfo.c, tif_dirread.c, tif_dir.h, tif_dir.c}: More work to implement custom directory read support. * libtiff/{tif_aux.c, tif_dirinfo.c, tif_dirread.c, tif_dir.h, tif_dir.c, tif_print.c}: Make YCbCrCoefficients and ReferenceBlackWhite tags custom. 2005-12-05 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: One more workaround for broken StripByteCounts tag. Handle the case when StripByteCounts array filled with completely wrong values. 2005-11-30 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirinfo.c: Release file descriptor in case of failure in the TIFFOpenW() function as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1003 * libtiff/tif_dirinfo.c: Correctly yse bsearch() and lfind() functions as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1008 2005-11-20 Frank Warmerdam <warmerdam@pobox.com> * tif_open.c, tiff.h, tiffdump.c: Incorporate preliminary support for MS MDI format. http://bugzilla.remotesensing.org/show_bug.cgi?id=1002 * .cvsignore: many files added, and a few update according to suggestion of Brad HArds on tiff mailing list. 2005-11-03 Frank Warmerdam <warmerdam@pobox.com> * libtiff/libtiff.def, tiffiop.h, tiffio.h: Made TIFFFreeDirectory public. 2005-10-31 Andrey Kiselev <dron@ak4719.spb.edu> * tools/fax2tiff.c: Properly calculate sizes of temporary arrays as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=943 * tools/fax2tiff.c: Added option '-r' to set RowsPerStrip parameter as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=944 * tools/tiffdump.c: Fixed typeshift and typemask arrays initialization problem as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=946 * tools/bmp2tiff.c: Fixed possible integer overflow error as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=965 * libtiff/tif_dirinfo.c: Make XResolution, YResolution and ResolutionUnit tags modifiable during write process. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=977 * tools/tiffsplit.c: Copy fax related fields over splitted parts as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=983 2005-10-21 Frank Warmerdam <warmerdam@pobox.com> * tif_dirread.c: Don't try and split single strips into "0" strips in ChopUpSingleUncompressedStrip. This happens in some degenerate cases (like 1x1 files with stripbytecounts==0 (gtsmall.jp2 embed tiff) 2005-10-20 Joris Van Damme <joris.at.lebbeke@skynet.be> * tif_fax3.c: changed 'at scanline ...' style warning/errors with incorrect use of tif_row, to 'at line ... of strip/tile ...' style 2005-10-15 Frank Warmerdam <warmerdam@pobox.com> * tif_write.c: fixed setting of planarconfig as per bug report on the mailing list from Joris. 2005-10-07 Andrey Kiselev <dron@ak4719.spb.edu> * configure.ac, configure, nmake.opt, libtiff/{tif_config.h, tif_dirread.c}: Make the default strip size configurable via the --with-default-strip-size and STRIP_SIZE_DEFAULT options. 2005-09-30 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * html/support.html: Fixed link to documentation on Greg Ward's LogLuv TIFF format. 2005-09-28 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffdump.c: Fixed crash when reading malformed tags. 2005-09-20 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdf.c: Added missed 'break' statement as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=932 2005-09-12 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff 3.7.4 released. * {configure, configure.ac, Makefile.am, autogen.sh}: Applied patch from Patrick Welche (all scripts moved in the 'config' and 'm4' directories). 2005-09-12 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_open.c: reintroduce seek to avoid problem on solaris. 2005-09-05 Frank Warmerdam <warmerdam@pobox.com> * 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 2005-08-12 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_print.c: avoid signed/unsigned warning. * libtiff/tif_dirread.c: removed unused variable. 2005-07-30 Frank Warmerdam <warmerdam@pobox.com> * libtiff/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. 2005-07-28 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_aux.c, tif_dirread.c, tif_fax3.c, tiffiop.h}: Rename CheckMalloc() function to _TIFFCheckMalloc() and make it available globally as an internal helper routine. 2005-07-27 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dir.c: More improvements in the "pass by value" part of the custom tags handling code. 2005-07-26 Andrey Kiselev <dron@ak4719.spb.edu> * 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. * libtiff/tiffconf.h.in: One more attempt to fix the AIX bug http://bugzilla.remotesensing.org/show_bug.cgi?id=39 2005-07-25 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_print.c: Fixed printing of the BYTE and SBYTE arrays. * tools/tiffdump.c: Added support for TIFF_IFD datatype. 2005-07-21 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_write.c: Do not check the PlanarConfiguration field in the TIFFWriteCheck() function in case of single band images (as per TIFF spec). 2005-07-12 Andrey Kiselev <dron@ak4719.spb.edu> * 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 mechanics. 2005-07-07 Andrey Kiselev <dron@ak4719.spb.edu> * port/{getopt.c, strcasecmp.c, strtoul.c}: Update modules from the NetBSD source tree (the old 4-clause BSD license changed to the new 3-clause one). * configure.ac, port/lfind.c, libtiff/tiffiop.h: Added lfind() replacement module. * port/dummy.c: Make the dummy function static. 2005-07-06 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffcp.c: Fixed WhitePoint tag copying. * libtiff/{tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_print.c}: Make FieldOfViewCotangent, MatrixWorldToScreen, MatrixWorldToCamera, ImageFullWidth, ImageFullLength and PrimaryChromaticities tags custom. 2005-07-04 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff 3.7.3 released. * configure, configure.ac: Do not use empty -R option when linking with --enable-rpath. 2005-07-01 Andrey Kiselev <dron@ak4719.spb.edu> * 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 * libtiff/tif_color.c: Better use of TIFFmin() macro to avoid side effects. 2005-06-23 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdf.c: Print two characters per loop in the t2p_write_pdf_trailer(). As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=594 * tools/tiffgt.c: Use MacOS X OpenGL framework when appropriate. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=844 * acinclude.m4: Updated to latest OpenGL test macros versions. * libtiff/tiff.h: Use correct int size on Sparc 64bit/Sun compiler platform. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=855 2005-06-14 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirinfo.c: Added support for ClipPath, XClipPathUnits and YClipPathUnits tags. 2005-06-07 Andrey Kiselev <dron@ak4719.spb.edu> * contrib/addtiffo/tif_ovrcache.c: Properly extract tile/strip size; use pixel sized shift in contigous case. 2005-06-06 Andrey Kiselev <dron@ak4719.spb.edu> * contrib/addtiffo/{tif_overview.c, tif_ovrcache.c, tif_ovrcache.h}: Make overviews working for contiguos images. 2005-06-03 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_open.c: Replace runtime endianess check with the compile time one. * libtiff/tif_predict.c: Floating point predictor now works on big-endian hosts. 2005-06-01 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dir.c: Use _TIFFsetString() function when read custom ASCII values. * libtiff/{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. * libtiff/tif_jpeg.c: Cleanup the codec state depending on TIFF_CODERSETUP flag (to fix memry leaks). * libtiff/tif_jpeg.c: Initialize JPEGTables array with zero after allocating. 2005-05-26 Andrey Kiselev <dron@ak4719.spb.edu> * configure.ac, libtiff/Makefile.am: Added workaround for OpenBSD/MirOS soname problem as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=838 * libtiff/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 2005-05-25 Andrey Kiselev <dron@ak4719.spb.edu> * tools/ppm2tiff.c: Fixed format string when read PPM file header with the fscanf() function. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=861 * libtiff/{tif_dirinfo.c, tif_print.c}: TIFFFetchByteArray() returns uint16 array when fetching the BYTE and SBYTE filds, 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 * libtiff/tif_dir.c: More efficient custom tags retrieval as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=830 * libtiff/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 * libtiff/Makefile.am: Fixed parallel compilation of the libtiff and libtiffxx libraries as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=826 * contrib/addtiffo/{tif_overview.c, tif_ovrcache.h}: Sinchronized with GDAL. 2005-05-23 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: Substantial fix for addtiffo problems with JPEG encoded TIFF files. Pre-allocate lots of space for jpegtables in directory. 2005-05-22 Frank Warmerdam <warmerdam@pobox.com> * libtiff/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. 2005-05-17 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffsplit.c: Check for JPEGTables tag presence before copying. 2005-05-06 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirread.c: Applied similar change to TIFFFetchPerSampleLongs and TIFFFetchPerSampleAnys. http://bugzilla.remotesensing.org/show_bug.cgi?id=843 * libtiff/tif_jpeg.c: added LIB_JPEG_MK1 support in JPEGDecodeRaw(). 2005-05-06 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdfr.c, man/tiff2pdf.1: Calculate the tile width properly; added new option '-b' to use interpolation in output PDF files (Bruno Ledoux). 2005-05-05 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirread.c: Ensure that broken files with too many values in PerSampleShorts work ok instead of crashing. http://bugzilla.remotesensing.org/show_bug.cgi?id=843 2005-04-27 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffdither.c: Copy the PhotometricInterpretation tag from the input file. 2005-04-15 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_predict.c: Added ability to encode floating point predictor, as per TIFF Technical Note 3. 2005-04-14 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_predict.h, tif_predict.c}: Added ability to decode floating point predictor, as per TIFF Technical Note 3. 2005-04-13 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{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. * libtiff/tiff.h: Added predictor constants. 2005-04-08 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{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 * man/TIFFSetField.3tiff: Fixed definition of the TIFFTAG_INKNAMES tag as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=816 2005-03-30 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_open.c: Do not read header in case the output file should be truncated (Ron). * libtiff/{tif_dirinfo.c, tif_config.h.vc}: Use lfind() instead of bsearch() in _TIFFFindFieldInfoByName() function (Ron). * libtiff/{tiff.h, tif_dirinfo.c}: Fixes in EXIF tag ordering (Ron). 2005-03-22 Andrey Kiselev <dron@ak4719.spb.edu> * configure.ac, libtiff/Makefile.am: Use libtool machinery to pass rpath option. 2005-03-21 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_dir.c, tif_print.c}: Handle all data types in custom tags. 2005-03-18 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/dirinfo.c: Added DNG tags. * libtiff/{tif_dir.c, tif_print.c}: More improvements in custom tag handling code. * libtiff/tiff.h: More comments; added missed DNG tag (LensInfo); added DNG 1.1.0.0 tags. * tools/tif2pdf.c: Fixed problem with alpha channel handling as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=794 * man/TIFFGetField.3tiff: Add a note about autoregistered tags. 2005-03-17 Andrey Kiselev <dron@ak4719.spb.edu> * nmake.opt: Build with Win32 CRT library by default. * tools/tiff2ps.c: Fixed typo in page size handling code. * libtiff/{tif_dir.c, tif_print.c}: Support for custom tags, passed by value. * libtiff/{tiff.h, tif_dirinfo.c, tiffiop.h}: Added EXIF related tags. 2005-03-15 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff 3.7.2 released. 2005-03-09 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffcmp.c: Added ability to compare the 32-bit integer and floating point data; complain on unsupported bit depths. 2005-03-05 Andrey Kiselev <dron@ak4719.spb.edu> * tif_stream.cxx: Use ios namespace instead of ios_base to support GCC 2.95. * libtiff/{tiff.h, tif_fax3.tif, tif_jpeg.c}: Applied correct patch from Lee Howard for HylaFax DCS tag (see http://bugzilla.remotesensing.org/show_bug.cgi?id=771) 2005-03-04 Andrey Kiselev <dron@ak4719.spb.edu> * configure, configure.ac: Use -rpath option instead of -R as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=732 * libtiff/{tiff.h, tif_fax3.tif, tif_jpeg.c}: Applied patch from Lee Howard to support a new tag TIFFTAG_FAXDCS (34911) used in HylaFax software. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=771 * nmake.opt, html/build.html: Add more comments, change the config file organization a bit as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=764 * tools/tiffcmp.c: Use properly sized buffer in short arrays comparison as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=785 2005-03-03 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: More logic to guess missed strip size as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=705 * tools/fax2ps.c: Replace insecure mktemp() function with the tmpfile() as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=786 2005-02-04 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tiff.h: Changed the int8 definition to be always signed char as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=727 * libtiff/tiffio.h: Move TIFFOpenW() function into the extern "C"{} block as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=763 2005-02-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffgt.c: Fix problem on big-endian CPUs so that images display more correctly. Images display brighter than they should on a Sun workstation. 2005-02-03 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: Estimate strip size in case of wrong or suspicious values in the tags. As per bugs http://bugzilla.remotesensing.org/show_bug.cgi?id=705 and http://bugzilla.remotesensing.org/show_bug.cgi?id=320 * tools/tiff2ps.c: Fixed problem with page sizes as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=742 2005-01-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tiff.h (TIFFTAG_TILEWIDTH): Corrected description. (TIFFTAG_TILELENGTH): Corrected description. 2005-01-30 Andrey Kiselev <dron@ak4719.spb.edu> * configure.ac: Fixes for --with-docdir option as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=759 * libtiff/tif_open.c: Remove unnesessary TIFFSeekFile() call as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=756 * libtiff/tif_stream.cxx: Fixes for C++ stream interface from Michael Rinne and Edward Lam. 2005-01-15 Andrey Kiselev <dron@ak4719.spb.edu> * configure.ac: Make the documentation directory location configurable via the --with-docdir option (as suggested by Jeremy C. Reed). * libtiff/tif_color.c: Use double as the second argument of pow() function in TIFFCIELabToRGBInit(). As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=741 * libtiff/tif_pixarlog.c: Avoid warnings when converting float to integer as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=740 * libtiff/tif_getimage.c: Always fill the error message buffer in TIFFRGBAImageBegin() as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=739 2005-01-12 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_jpeg.c: Added ability to read/write the fax specific TIFFTAG_FAXRECVPARAMS, TIFFTAG_FAXSUBADDRESS and TIFFTAG_FAXRECVTIME tags as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=736 * libtiff/tif_win32.c: Fixed message formatting in functions Win32WarningHandler() and Win32ErrorHandler() as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=735 * tools/tiff2ps.c: Interpret the -w and -h options independently. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=689 2005-01-11 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tiffio.h: Move the color conversion routines in the 'extern "C"' section as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=727 * libtiff/tiff.h: Restore back the workaround for AIX Visual Age C compiler to avoid double definition of BSD types as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=39 * libtiff/Makefile.am: Place the C++ stream API in the separate library called libtiffxx to avoid unneeded dependencies. Probably there will be more C++ API in the future. As per bugs http://bugzilla.remotesensing.org/show_bug.cgi?id=733 and http://bugzilla.remotesensing.org/show_bug.cgi?id=730 2005-01-05 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffdump.c: Fixed problem when read broken TIFFs with the wrong tag counts (Dmitry V. Levin, Martin Pitt). * configure.ac: Replace --disable-c++ with the --disable-cxx option as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=730 2004-12-25 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_getimage.c: More fixes for multiple-alpha-channelled RGB-images as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=713 * tools/tiffset.c: Convert character option to integer value as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=725 2004-12-20 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff 3.7.1 released. * html/tiffset.1.html: Add missed manual page as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=678 * libtiff/tiff.h: Revert back libtiff data type definitions as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=687 2004-12-19 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: Do not forget about TIFF_VARIABLE2 when checking for tag count in TIFFReadDirectory() function. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=713 * libtiff/{tif_dirread.c, tif_fax3.c}: More argument checking in CheckMallock() function. * libtiff/tif_getimage.c: Support for multiple-alpha-channelled RGB-images as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=718 2004-12-15 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_getimage.c: #define A1 bracketing for clean build on SunPro compiler. 2004-12-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * autogen.sh: aclocal and autoheader should be executed after libtoolize. Also add '-I .' to aclocal invocation to check current directory for macros. 2004-12-10 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirwrite.c: Always write TIFFTAG_SUBIFD using LONG type as per bugs http://bugzilla.remotesensing.org/show_bug.cgi?id=703 and http://bugzilla.remotesensing.org/show_bug.cgi?id=704 2004-12-04 Andrey Kiselev <dron@ak4719.spb.edu> * nmake.opt: Link with the user32.lib in windowed mode. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=697 * libtiff/tif_win32.c: Use char* strings instead of TCHAR in windowed mode as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=697 * libtiff/tif_config.in.vc: Removed unneded definitions for read/open/close/lseek functions to fix the http://bugzilla.remotesensing.org/show_bug.cgi?id=680 2004-12-03 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_dir.c, tif_dirread.c}: Remove TIFFReassignTagToIgnore() call from the TIFFReadDirectory() function. TIFFReassignTagToIgnore must be removed in the future, as it was never used properly. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=692 2004-11-30 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_jpeg.c: Added a work-around in order to allow compilation with the heavily modified version of libjpeg delivered with Cygwin. 2004-11-29 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dir.c: Properly handle tags, which have the uint32 counts. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=693 * tools/fax2ps.c: Be able to extract the first page (#0). As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=690 2004-11-28 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_unix.c: Make UNIX module compilable (and usable) on Windows. * nmake.opt: Add missed DLLNAME variable. 2004-11-26 Frank Warmerdam <warmerdam@pobox.com> * libtiff/makefile.vc: make it easier to rename the libtiff DLL. 2004-11-24 Andrey Kiselev <dron@ak4719.spb.edu> * man/libtiff.3tiff: Improvements in the "LIST OF ROUTINES" table as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=545 * man/tiffset.1: Added manual page for tiffset tool written by Jay Berkenbilt. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=678 2004-11-23 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_error.c: fixed TIFFerror call to be TIFFError. 2004-11-21 Frank Warmerdam <warmerdam@pobox.com> * html/document.html: Updated Adobe web links as per email from Joris. 2004-11-21 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tiffio.hxx, tiffio.h}: C++ stream interface moved to new file tiffio.hxx. We don't have any C++ in tiffio.h, those who want to use C++ streams should #include <tiffio.hxx>. 2004-11-13 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tiff.h: Added Adobe DNG tags. * libtiff/tif_win32.c: Typo fixed. * libtiff/{tif_stream.cxx, tiffio.h}: C++ stream interface updated to be compliant with the latest standard. Appropriate additions in makefiles now completed. 2004-11-11 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffset.c, libtiff/tif_dirinfo.c: Properly handle the different tag types. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=600 2004-11-10 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_aux.c: Set the appropriate ReferenceBlackWhite array for YCbCr image which lacks that tag (noted by Hans Petter Selasky). 2004-11-09 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_color.c: Division by zero fixed (Hans Petter Selasky). 2004-11-07 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_stream.cxx, tiffio.h}: Added C++ stream interface contributed by Edward Lam (see http://bugzilla.remotesensing.org/show_bug.cgi?id=654 for details). Though no changes in any makefiles yet. 2004-11-05 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_open.c: Removed close() in TIFFClientOpen() if file is bad. This is the callers responsibility. http://bugzilla.remotesensing.org/show_bug.cgi?id=651 2004-11-05 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tiffio.h, tif_win32.c, libtiff.def}: Added TIFFOpenW() function to work with the double byte strings (used to represent filenames in some locales). As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=625 * libtiff/tif_dirread.c: Fixed problem when fetching BitsPerSample and Compression tags of type LONG from broken TIFFS as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=662 * libtiff/tif_dirinfo.c: Fixed definition for TIFFTAG_RICHTIFFIPTC, the writecount should have uint32 type. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=662 * libtiff/tif_write.c: Fixed wrong if() statement in TIFFAppendToStrip() function as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=660 2004-11-04 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirinfo.c: Change definition for TIFFTAG_EXTRASAMPLES field. The caller should supply a count when setting this field. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=648 * libtiff/{tif_jpeg.c, tif_ojpeg.c}: TIFFTAG_JPEGTABLES should have uint32 count. Use this type everywhere. 2004-11-03 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_next.c: avoid use of u_long and u_char types. Bug 653. 2004-11-02 Frank Warmerdam <warmerdam@pobox.com> * tools/tiff2rgba.c: removed extra newlines in usage message. 2004-10-30 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirwrite.c: Improvements in tag writing code. * tools/tiff2ps.c: Fixed wrong variable data type when read Position tags (Tristan Hill). 2004-10-30 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tiffiop.h: added fallback definition of assert() if we don't have assert.h. 2004-10-29 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_fax3.c: Fixed case with the wrong decode routines choosing when the incorrect Group4Options tag set. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=323 * libtiff/tif_dirwrite.c: Fixed problem with passing count variable of wrong type when writing the TIFF_BYTE/TIFF_SBYTE tags in TIFFWriteNormalTag(). 2004-10-28 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2ps.c: Fixed wrong variable data type when read Resolution tags (Peter Fales). * tools/{bmp2tiff.c, raw2tiff.c}: Get rid of stream I/O functions. 2004-10-28 Frank Warmerdam <warmerdam@pobox.com> * tools/tiff2pdf.c: added casts to avoid warnings. * libtiff/libtiff.def: Added several more entry points required to link fax2tiff.c against the DLL on windows. 2004-10-27 Andrey Kiselev <dron@ak4719.spb.edu> * configure, configure.ac: Added --enable-rpath option to embed linker paths into library binary. 2004-10-26 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffset.c: Check the malloc return value (Dmitry V. Levin). * libtiff/{tif_strip.c, tif_tile.c}: Zero division problem fixed (Vladimir Nadvornik, Dmitry V. Levin). 2004-10-16 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff 3.7.0 released. 2004-10-15 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tif_jpeg.c: There seems to be no need to include stdio.h in this file so its inclusion is removed. Including stdio.h sometimes incurs an INT32 typedef conflict between MinGW's basetsd.h and libjpeg's jmorecfg.h. 2004-10-15 Andrey Kiselev <dron@ak4719.spb.edu> * man/bmp2tiff.1: Added manual page for bmp2tiff utility. 2004-10-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffcmp.c (leof): Renamed from 'eof' in order to avoid conflict noticed under MinGW. * ltmain.sh: Fix for MinGW compilation. 2004-10-13 Frank Warmerdam <warmerdam@pobox.com> * man/tiffsplit.1: Fixed to indicate using aaa-zzz, not aa-zz. http://bugzilla.remotesensing.org/show_bug.cgi?id=635 2004-10-12 Andrey Kiselev <dron@ak4719.spb.edu> * 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). 2004-10-11 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirinfo.c: Type of the TIFFTAG_SUBIFD field changed to TIFF_IFD. 2004-10-10 Andrey Kiselev <dron@ak4719.spb.edu> * tools/bmp2tif.c: Check the space allocation results. 2004-10-09 Andrey Kiselev <dron@ak4719.spb.edu> * 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. * tools/tiff2pdf.c: Fixed TransferFunction tag handling reported by Ross A. Finlayson. * libtiff/tif_dir.c: Fixed custom tags handling as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=629 2004-10-08 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirinfo.c: Fix bug with tif_foundfield and reallocation of tif_fieldinfo. http://bugzilla.remotesensing.org/show_bug.cgi?id=630 2004-10-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * contrib/iptcutil/README: Added the missing README which goes along with iptcutil. 2004-10-03 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_compress.c: Improved error reporting in TIFFGetConfiguredCODECs() (Dmitry V. Levin). 2004-10-02 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff 3.7.0beta2 released. * libtiff/{tif_aux.c, tif_compress.c, tif_dirinfo.c, tif_dirwrite.c, tif_extension.c, tif_fax3.c, tif_luv.c, tif_packbits.c, tif_pixarlog.c, tif_write.c}: Added checks for failed memory allocations and integer overflows (Dmitry V. Levin). * libtiff/tiff.h: Missed TIFF_BIGTIFF_VERSION constant added. 2004-10-01 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_open.c: added a more informative message if a BigTIFF file is opened. 2004-09-30 Frank Warmerdam <warmerdam@pobox.com> * 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. 2004-09-29 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_jpeg.c, tif_pixarlog.c}: Use _TIFFmemset() instead of memset(). * libtiff/{tif_dirread.c, tif_strip.c, tif_tile.c}: Applied patches from Dmitry V. Levin to fix possible integer overflow problems. 2004-09-28 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_getimage.c: Check for allocated buffers before clearing (Dmitry V. Levin). 2004-09-26 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_dir.h, tif_dir.c, tif_dirread.c, tif_write.c}: Optimize checking for the strip bounds. * libtiff/{tif_dirread.c, tif_strip.c}: TIFFScanlineSize() and TIFFRasterScanlineSize() functions report zero in the case of integer overflow now. Properly handle this case in TIFFReadDirectory() (patches from Dmitry V. Levin). 2004-09-25 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_dirinfo.c, tif_strip.c, tif_tile.c}: Use TIFFhowmany8() macro where appropriate. * tools/tiff2bw.c: Write ImageWidth/Height tags to output file, as noted by Gennady Khokhorin. * libtiff/tif_dirread.c: Always check the return values, returned by the _TIFFmalloc() (Dmitry V. Levin). * libtiff/tif_dir.c: Fixed possible integer overflow _TIFFset*Array() functions (Dmitry V. Levin). * libtiff/{tif_dirread.c, tif_dir.c, tif_write.c}: Potential memory leak fixed in TIFFReadDirectory(), _TIFFVSetField(), TIFFGrowStrips() (found by Dmitry V. Levin). 2004-09-24 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tiffio.h, tif_compress.c}: Added TIFFGetConfiguredCODECs() to get the list of configured codecs. * libtiff/{tiffiop.h, tif_dirread.c}: More overflow fixes from Dmitry V. Levin. 2004-09-23 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: Applied patch from Dmitry V. Levin to fix possible integer overflow in CheckMalloc() function. 2004-09-22 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tiffiop.h, tif_strip.c}: Use TIFFhowmany8() macro instead of plain TIFFhowmany() where appropriate. 2004-09-21 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_getimage.c: Initialize arrays after space allocation. 2004-09-19 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff 3.7.0beta released. * libtiff/{tif_luv.c, tif_next.c, tif_thunder.c}: Several buffer overruns fixed, as noted by Chris Evans. 2004-09-14 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * commit: Added a script to make it more convenient to commit updates. The CVS commit message is extracted from this ChangeLog file. 2004-09-14 Andrey Kiselev <dron@ak4719.spb.edu> * configure.ac, configure, aclocal.m4, libtiff/{mkspans.c, tif_fax3.c, tif_getimage.c, tif_luv.c, tif_lzw.c, tif_ojpeg.c, tif_packbits.c, tif_predict.c, tif_read.c, tif_swab.c, tif_thunder.c, tif_write.c, tif_dir.c, tif_dirread.c, tif_dirwrite.c, tif_jpeg.c, tif_dirinfo.c, tif_vms.c, tif_print.c, tif_strip.c, tif_tile.c, tif_dir.h, tif_config.h.in, tiffiop.h}: Get rid of BSD data types (u_char, u_short, u_int, u_long). 2004-09-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * libtiff/tiff.h: Fix column tagging. Reference current Adobe XMP specification. Reference libtiff bug tracking system to submit private tag additions. 2004-09-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * tools/tiffgt.c: Include "tif_config.h". * configure.ac: Use AM_PROG_CC_C_O since it is now needed to build tiffgt. This results in the 'compile' script being added to the project. * tools/Makefile.am (tiffgt_CFLAGS): Add extra build options required to find OpenGL headers necessary to build tiffgt. Also ensure that the libtiff that we built is used rather than some other libtiff installed on the system. 2004-09-12 Andrey Kiselev <dron@ak4719.spb.edu> * configure.ac, acinclude.m4, aclocal.m4: New macros to detect GLUT libraries. 2004-09-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us> * configure.ac: Pass library configuration defines via tif_config.h rather than extending CPPFLAGS. Configure a libtiff/tiffconf.h in order to satisfy application requirements (not used by library build). Do not define _POSIX_C_SOURCE=2 since this causes failure to build on systems which properly respect this request. * libtiff/tiffconf.h.in: New file to act as the template for the configured tiffconf.h * libtiff/files.lst (HDRS): Install the configured tiffconf.h. 2004-09-10 Frank Warmerdam <warmerdam@pobox.com> * html/internals.html: Split off a discussion of adding new tags into addingtags.html. 2004-09-10 Andrey Kiselev <dron@ak4719.spb.edu> * test/{ascii_tag.c, long_tag.c}: Preliminary test suite added. * tools/tiff2pdf.c: Fixed reading TransferFunction tag as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=590 * libtiff/tif_print.c: Fixes in InkNames and NumberOfInks reporting. * 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/tiff.h: Use _TIFF_DATA_TYPEDEFS_ guardian to switch off defining int8/uint8/... etc. types. As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=607 2004-09-09 Frank Warmerdam <warmerdam@pobox.com> * tools/tiff2ps.c, tools/tiffmedian.c: fiddle with include files to avoid compile warnings about getopt() and a few other things. 2004-09-02 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: Use memcpy() function instead of pointer assigning magic in TIFFFetchFloat(). 2004-09-01 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tiffio.h, tif_open.c}: Applied patches from Joris Van Damme to avoid requirement for tiffiop.h inclusion in some applications. See here http://www.asmail.be/msg0054799560.html for details. * tools/fax2tiff.c: Use the new functions in the code. 2004-08-25 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdf.c: Initialize arrays properly. * tools/tiff2ps.c: Avoid zero division in setupPageState() function; properly initialize array in PSDataBW(). 2004-08-24 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdf.c: More fixes for bug http://bugzilla.remotesensing.org/show_bug.cgi?id=590 from Ross Finlayson. 2004-08-23 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2ps.c: Fixed problem with uninitialized values. * libtiff/tif_dir.c: Initialize tif_foundfield data member in the TIFFDefaultDirectory() (in addition to 2004-08-19 fix). * tools/tiff2pdf.c: Fixed a bunch of problems as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=590 2004-08-20 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdf.c: Applied patch from Ross Finlayson that checks that the input file has compression, photometric interpretation, etcetra, tags or if not than a more descriptive error is returned. * libtiff/tif_dirread.c: Fixed problem in TIFFReadDirectory() in the code, responsible for tag data type checking. 2004-08-19 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tiffiop.h, tif_dirinfo.c}: Fixed problem with the static variable as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=593 2004-08-16 Andrey Kiselev <dron@ak4719.spb.edu> * tools/ras2tiff.c: Fixed issue with missed big-endian checks as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=586 2004-08-01 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_config.h.in, tif_config.h.vc}: config.h.in and config.h.vc files renamed in the tif_config.h.in and tif_config.h.vc. 2004-07-24 Andrey Kiselev <dron@ak4719.spb.edu> * 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. 2004-07-12 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tiffio.h: Revert thandle_t back to void* type. 2004-07-11 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_read.c, tif_tile.c, tif_strip.c}: Fixes in error messages, as suggested by Bernd Herd. 2004-07-03 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dir.c: Call TIFFError() instead of producing warnings when setting custom tags by value. Reported by Eric Fieleke. 2004-06-14 Andrey Kiselev <dron@ak4719.spb.edu> * tools/bmp2tiff.c: Add missed RawsPerStrip setting. 2004-06-08 Andrey Kiselev <dron@ak4719.spb.edu> * tools/bmp2tiff.c: Added new utility to convert Windows BMP files into TIFFs. 2004-06-07 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff 3.7.0alpha released. 2004-06-06 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tiff.h, tif_dirwrite.c, tif_fax3.c, tif_packbits.c,}: Get rid of ugly 64-bit hacks, replace them with the clever (autoconf based ) ones :-). * libtiff/tiffio.h: Define thandle_t as int, not void* (may cause problems in 64-bit environment). 2004-06-05 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffset.c: tiffset now can set any libtiff supported tags. Tags can be supplied by the mnemonic name or number. * libtiff/{tiffio.h, tif_dir.h, tif_dirinfo.c,}: Added two new functions TIFFFindFieldInfoByName() and TIFFFieldWithName(). 2004-05-27 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_ojpeg.c: Fixed problem with duplicated SOI and SOF markers as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=581 2004-05-24 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffsplit.c: Don't forget to copy Photometric Interpretation tag. 2004-05-20 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_open.c, tiffio.h}: New function added: TIFFIsBigEndian(). Function returns nonzero if given was file written in big-endian order. * tools/tiffsplit.c: 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 http://bugzilla.remotesensing.org/show_bug.cgi?id=574 for details. 2004-05-19 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_print.c: added (untested) support for printing SSHORT, SLONG and SRATIONAL fields. * tools/tiffcp.c: close output file on normal exit. 2004-05-17 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_fax3.c: Avoid reading CCITT compression options if compression type mismatches. See http://bugzilla.remotesensing.org/show_bug.cgi?id=565 2004-04-30 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_strip.c: Never return 0 from the TIFFNumberOfStrips(). 2004-04-29 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: Workaround for broken TIFF writers which store single SampleFormat value for multisampled images. See http://bugzilla.remotesensing.org/show_bug.cgi?id=562 2004-04-25 Andrey Kiselev <dron@ak4719.spb.edu> * configure.ac, libtiff/{tiff.h, config.h.in}: Added tests for int8, int16 and int32 types to avoid complains on some compilers. Details at http://bugzilla.remotesensing.org/show_bug.cgi?id=39 2004-04-20 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2pdf.c: Fixed problem with unaligned access as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=555 2004-04-14 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_write.c: Allow in-place updating of the compressed images (don't work properly with all codecs). For details see GDAL bug http://bugzilla.remotesensing.org/show_bug.cgi?id=534 2004-04-06 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_jpeg.c: Workaround for wrong sampling factors used in the Intergarph JPEG compressed TIFF images as per bug: http://bugzilla.remotesensing.org/show_bug.cgi?id=532 2004-04-04 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_open.c: close clientdata if TIFFClientOpen() fails via bad2. 2004-03-26 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffcp.c: Properly set Photometric Interpretation in case of JPEG compression of grayscale images. * tools/tiffcp.c: Don't emit warnings when Orientation tag does not present in the input image. 2004-03-19 Andrey Kiselev <dron@ak4719.spb.edu> * {many}: The first attempt to switch to autotools. 2004-03-03 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_open.c: Use dummy mmap/munmap functions in TIFFClientOpen() when the appropriate client functions was not supplied by user. 2004-03-02 Frank Warmerdam <warmerdam@pobox.com> * tools/ycbcr.c: fixed main() declaration as per: http://bugzilla.remotesensing.org/show_bug.cgi?id=513 2004-02-26 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffsplit.c: Copy JPEGTables tag contents for JPEG compressed images. Reported by Artem Mirolubov. * libtiff/tif_dirread.c: Fixed problem with handling TIFF_UNDEFINED tag type in TIFFFetchNormalTag() as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=508 2004-02-17 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_codec.c: Fixed typo in TIFFInitPackBits name as per: http://bugzilla.remotesensing.org/show_bug.cgi?id=494 2004-02-05 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_fax3.c: Fixed problem with CCITT encoding modes as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=483 But we need more work on fax codec to support update mode. 2004-01-30 Frank Warmerdam <warmerdam@pobox.com> * libtiff/libtiff.def: Added TIFFCurrentDirOffset, TIFFWriteCheck, TIFFRGBAImageOK, and TIFFNumberOfDirectories as suggested by Scott Reynolds. 2004-01-29 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tiff.h: Fixed tag definitions for TIFFTAG_YCLIPPATHUNITS and TIFFTAG_INDEXED as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=475 * libtiff/{tif_win32.c, tif_unix.c}: Check whether the pointer is NULL before proceeding further as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=474 Check results, returned by the TIFFFdOpen() before returning and close file if TIFFFdOpen() failed as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=468 * libtiff/tif_open.c: More fixes for http://bugzilla.remotesensing.org/show_bug.cgi?id=468 2004-01-28 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{libtiff.def, tif_close.c, tiffio.h, tif_open.c}: Separate TIFFCleanup() from the TIFFClose() in order to fix the bug http://bugzilla.remotesensing.org/show_bug.cgi?id=468 * tools/tiffcp.c: Fixed problem with wrong interpretation of the InkNames tag as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=466 Memory leak fixed. 2004-01-21 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirwrite.c: Fixed handling of writable ASCII tags that are field_passcount=TRUE properly. Arguably anonymous custom tags should be declared as passcount=FALSE, but I don't want to change that without a careful review. 2004-01-20 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_write.c: Fixed reporting size of the buffer in case of stripped image in TIFFWriteBufferSetup(). As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=460 2004-01-11 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dir.c: Incomplete cleanup in TIFFFreeDirectory(), patch from Gerben Koopmans. * libtiff/tif_dirread.c: Check field_passcount value before setting the value of undefined type, patch from Gerben Koopmans. 2004-01-02 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffcp.c: Fixed problem with wrong Photometric setting for non-RGB images. 2003-12-31 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_win32.c: Fixed problem with _TIFFrealloc() when the NULL pointer passed. Patch supplied by Larry Grill. * libtiff/{tiff.h, tif_fax3.c}:Fixes for AMD 64 platform as suggested by Jeremy C. Reed. 2003-12-26 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff 3.6.1 released. 2003-12-24 Andrey Kiselev <dron@ak4719.spb.edu> * config.guess, config.sub: Updated from the recent upstream. 2003-12-22 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_color, tif_getimage.c, tiffio.h}, man/TIFFcolor.3t: More cleanups in color conversion interface, added appropriate manual page. 2003-12-19 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_extension.c, tif_dirinfo.c, tiff.h}: Warnings fixed as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=357 * tools/tiff2ps.c: Added support for alpha channel. Fixes http://bugzilla.remotesensing.org/show_bug.cgi?id=428 * libtiff/{libtiff.def, tif_color.c, tif_getimage.c, tiffio.h}: Interface for Lab->RGB color conversion is finally cleaned up. Added support for ReferenceBlackWhite tag handling when converted from YCbCr color space. The latter closes http://bugzilla.remotesensing.org/show_bug.cgi?id=120 2003-12-07 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_getimage.c, tiffio.h}: Avoid warnings. * libtiff/makefile.vc, tools/makefile.vc: Support for IJG JPEG library. 2003-12-06 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_getimage.c, tif_aux.c}: Read WhitePoint tag from the file and properly use it for CIE Lab->RGB transform. 2003-12-04 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_getimage.c, tif_color.c, tiffio.h}: YCbCr->RGB conversion routines now in the tif_color.c module. New function TIFFYCbCrtoRGB() available in TIFF API. * libtiff/tif_dirwrite.c: Handle TIFF_IFD tag type correctly. 2003-12-03 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_getimage.c, tif_color.c, tiffio.h}: Improvements in CIE Lab conversion code. Start moving YCbCr stuff to the tif_color.c module. * libtiff/{tif_getimage.c, tiffio.h}, man{TIFFReadRGBAImage.3t, TIFFReadRGBAStrip.3t, TIFFReadRGBATile.3t, TIFFRGBAImage.3t}: 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. Closed bug entry: http://bugzilla.remotesensing.org/show_bug.cgi?id=322 2003-12-02 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dir.c: Fixed order of the parameters in TIFFError() function calls as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=440 2003-11-28 Ross Finlayson <libtiff@apexinternetsoftware.com> * tools/tiff2pdf.c: Some bugs fixed. 2003-11-27 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_luv.c: Fixed bug in 48-bit to 24-bit conversion routine, reported by Antonio Scuri. * man/tiff2pdf.1: Few improvements in page layout. * Makefile.in, /man/Makefile.in, /html/man/tiff2pdf.1.html: Added support fpr tiff2pdf manual page. 2003-11-26 Ross Finlayson <libtiff@apexinternetsoftware.com> * /man/tiff2pdf.1: File added to repository. 2003-11-26 Andrey Kiselev <dron@ak4719.spb.edu> * Makefile.in, /tools/{Makefile.in, makefile.vc}: Added support fpr tiff2pdf utility. 2003-11-25 Ross Finlayson <libtiff@apexinternetsoftware.com> * /tools/tiff2pdf.c: File added to repository. 2003-11-22 Andrey Kiselev <dron@ak4719.spb.edu> * /tools/raw2tiff.c: sqrtf() replaced with sqrt(). 2003-11-21 Andrey Kiselev <dron@ak4719.spb.edu> * /tools/raw2tiff.c: #include <getopt.h> removed. * tools/{Makefile.in, tiffgt.c}: Unmaintained and platform dependent sgigt utility removed and replaced with the completely rewritten portable tiffgt tool (depend on OpenGL and GLUT). Initial revision, there is a lot of things to improve. * libtiff/tif_ojpeg.c: TIFFVGetField() function now can properly extract the fields from the OJPEG files. Patch supplied by Ross Finlayson. * libtiff/{tiffio.h, tif_codec.c}, man/{libtiff.3t, TIFFcodec.3t}: Added new function TIFFIsCODECConfigured(), suggested by Ross Finlayson. 2003-11-18 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirinfo.c: Implemented binary search in _TIFFMergeFieldInfo(). Patch supplied by Ross Finlayson. * libtiff/tif_dir.h: _TIFFFindOrRegisterdInfo declaration replaced with _TIFFFindOrRegisterFieldInfo as reported by Ross Finlayson. 2003-11-17 Frank Warmerdam <warmerdam@pobox.com> * tif_dirread.c: do not mark all anonymously defined tags to be IGNOREd. 2003-11-17 Andrey Kiselev <dron@ak4719.spb.edu> * contrib/pds/{tif_pdsdirread.c, tif_pdsdirwrite.c}: Use TIFFDataWidth() function insted of tiffDataWidth array. 2003-11-16 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tiff.h, tif_dirinfo.c}: Added support for IFD (13) datatype, intruduced in "Adobe PageMaker TIFF Tech. Notes". 2003-11-15 Frank Warmerdam <warmerdam@pobox.com> * Makefile.in: fixed missing backslash for tif_color.c in list. 2003-11-13 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_color.c, tif_getimage.c, tiffio.h, Makefile.in}: New color space conversion code: CIE L*a*b* 1976 images now supported by the TIFFRGBAImage interface. All introduced routines go to new module tif_color.c. Eventually all color conversion functions should be moved there. 2003-11-12 Andrey Kiselev <dron@ak4719.spb.edu> * tools/{ras2tiff.c, rasterfile.h}: Properly determine SUN Rasterfiles with the reverse byte order (it is reported by the magic header field). Problem reported by Andreas Wiesmann. * tools/raw2tiff.c, man/raw2tiff.1: Few improvements in correlation calculation function. Guessing mechanics now documented in manual page. 2003-11-11 Andrey Kiselev <dron@ak4719.spb.edu> * tools/raw2tiff.c: Implemented image size guessing using correlation coefficient calculation between two neighbour lines. 2003-11-09 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_tile.c: remove spurious use of "s" (sample) in the planarconfig_contig case in TIFFComputeTile(). http://bugzilla.remotesensing.org/show_bug.cgi?id=387 2003-11-09 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tiffiop.h: New macros: TIFFmax, TIFFmin and TIFFrint. 2003-11-07 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tiffio.h, tif_strip.c}, man/{TIFFstrip.3t, libtiff.3t}: Added TIFFRawStripSize() function as suggested by Chris Hanson. 2003-11-03 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_lzw.c, tif_fax3.c}: Proper support for update mode as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=424 2003-10-29 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/libtiff.def: Added TIFFReadRGBAImageOriented. * html/build.html: Added note about GNU make requirement. 2003-10-25 Andrey Kiselev <dron@ak4719.spb.edu> * Makefile.in: Fixes in using MAKEFLAGS as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=418 * port/install.sh.in: Option -p added to the mkdir command to create all directory tree structure before installing. 2003-10-18 Andrey Kiselev <dron@ak4719.spb.edu> * /tools/tiff2ps.c: #include <strings.h> replaced with the #include <string.h>. 2003-10-16 Andrey Kiselev <dron@ak4719.spb.edu> * Makefile.in: Add an absolute path to the test_pics.sh call. 2003-10-12 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tiffcomp.h: #define _BSDTYPES_DEFINED when defining BSD typedefs. 2003-10-09 Andrey Kiselev <dron@ak4719.spb.edu> * configure, libtiff/{Makefile.in, mkversion.c}: Relative buildings fixed. * tools/Makefile.in: Added "-I../libtiff" to the tiffset building rule. 2003-10-07 Andrey Kiselev <dron@ak4719.spb.edu> * Makefile.in: Added missed v3.6.0.html. * libtiff/tiffio.h: Typo fixed: ORIENTATION_BOTTOMLEFT replaced with ORIENTATION_BOTLEFT. 2003-10-04 Andrey Kiselev <dron@ak4719.spb.edu> * 3.6.0 final release. 2003-10-03 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tif_getimage.c, tiffio.h}, man/TIFFReadRGBAImage.3t: New function TIFFReadRGBAImageOriented() implemented to retrieve raster array with user-specified origin position as suggested by Jason Frank. See http://bugzilla.remotesensing.org/show_bug.cgi?id=322 for details. * tools/tiff2rgba.c: Switched to use TIFFReadRGBAImageOriented() instead of TIFFReadRGBAImage(). * tools/tiff2ps.c: Fixed possible endless loop as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=404 2003-09-30 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: Check field counter against number of fields in order to fix http://bugzilla.remotesensing.org/show_bug.cgi?id=366 * libtiff/tif_fax3.c: Fix wrong line numbering as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=342 2003-09-25 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/{tiffiop.h, tif_dirread.c, tif_dir.c, tif_open.c, tif_close.c}: Store a list of opened IFD to prevent looping as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=383 2003-09-23 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: More fixes for EstimateStripByteCounts(). See http://bugzilla.remotesensing.org/show_bug.cgi?id=358 2003-08-21 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffmedian.c: int declaration replaced with the uint32 to support large images as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=382 2003-08-12 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/Makefile.in: Fixed problem with building in different directory. * tools/tiff2ps.c: Added missing #include <strings.h>. * libtiff/tif_dirwrite.c: More fixes for custom tags code from Ashley Dreier. 2003-08-07 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2ps.c: Added page size setting when creating PS Level 2. Patch submitted by Balatoni Denes (with corrections from Tom Kacvinsky). * tools/tiff2ps.c: Fixed PS comment emitted when FlateDecode is being used. Reported by Tom Kacvinsky. * libtiff/tif_dirwrite.c: Fixed problem with custom tags writing, reported by Ashley Dreier. * libtiff/tif_print.c: Fixed problem with float tags reading, support for printing RATIONAL and BYTE tags added. 2003-08-05 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_lzw.c: Move LZW codec state block allocation back to TIFFInitLZW(), because its initialization in LZWSetupDecode() cause problems with predictor initialization. Remove O_RDONLY check during state block allocation to be able open LZW compressed files in update mode. Problem exist for libtiff version of the tif_lzw.c module. One from lzw-compression-kit hasn't such troubles. 2003-08-04 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_write.c: modified tif_write.c so that the various encoded write functions use tif_postdecode() to apply byte order swapping (swab) to the application passed data buffer if the same would be done when reading. This allows us to write pixel data with more than 8 bits per sample to existing files of a non-native byte order. One side effect of this change is the applications buffer itself is altered in this case by the act of writing. http://bugzilla.remotesensing.org/show_bug.cgi?id=171 2003-07-25 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_open.c: avoid signed/unsigned casting warning initializing typemask as per patch from J.A. Strother. * tools/tiffcp.c: fixed signed/unsigned casting warning. * libtiff/tif_print.c: dos2unix conversion. * tools/tiffsplit.c: increased the maximum number of pages that can be split. Patch provided by Andrew J. Montalenti. 2003-07-11 Andrey Kiselev <dron@ak4719.spb.edu> * tools/raw2tiff.c: Added option `-p' to explicitly select color space of input image data. Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=364 2003-07-08 Frank Warmerdam <warmerdam@pobox.com> * tif_aux.c, tif_codec.c, tif_dir.c, tif_dirread.c, tif_extension.c, tif_fax3.c, tif_getimage.c, tif_luv.c, tif_lzw.c, tif_next.c, tif_packbits.c, tif_predict.c, tif_print.c, tif_swab.c, tif_thunder.c: avoid casting warning at /W4. 2003-07-03 Andrey Kiselev <dron@ak4719.spb.edu> * tools/thumbnail.c: Memory leak fixed as reported by Robert S. Kissel. 2003-06-30 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_pixarlog.c: Unused variables removed. * libtiff/{tif_dirread.c, tif_dir.c}: Fixed problem with EstimateStripByteCounts() as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=358 * libtiff/{tif_dirwrite.c, tif_packbits.c}: Fixed compilation on 64-bit architectures as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=357 * libtiff/tif_dirinfo.c: TIFFDataWidth() returns 0 in case of unknown data type. 2003-06-19 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_print.c: fixed some serious bugs when printing custom tags ... almost certain to crash. * libtiff/tif_dirread.c: Don't ignore custom fields that are autodefined. Not sure how this got to be like this. 2003-06-18 Andrey Kiselev <dron@ak4719.spb.edu> * 3.6.0 Beta2 released. * tools/tiffcmp.c, man/tiffcmp.1: Fixed problem with unused data comparing as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=349 `-z' option now can be used to set the number of reported different bytes. 2003-06-09 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffcp.c, man/tiffcp.1: Added possibility to specify value -1 to -r option to get the entire image as one strip. See http://bugzilla.remotesensing.org/show_bug.cgi?id=343 for details. 2003-06-04 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffcp.c: Set the correct RowsPerStrip and PageNumber values as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=343 2003-05-27 Frank Warmerdam <warmerdam@pobox.com> * 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. 2003-05-25 Andrey Kiselev <dron@ak4719.spb.edu> * tools/fax2tiff.c: Page numbering fixed, as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=341 2003-05-20 Andrey Kiselev <dron@ak4719.spb.edu> * contrib/ojpeg/{Makefile.in, jdhuff.h, jinclude.h, ojpeg.c, README}, configure, Makefile.in: Switched back to the old behaviour. Likely better solution should be found for OJPEG support. 2003-05-11 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/mkversion.c: Fixed problem with wrong string size when reading RELEASE-DATE file. 2003-05-07 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2ps.c: Fixed bug in Ascii85EncodeBlock() function: array index was out of range. 2003-05-06 Andrey Kiselev <dron@ak4719.spb.edu> * contrib/ojpeg/{Makefile.in, jdhuff.h, jinclude.h, ojpeg.c, README}, configure, Makefile.in: Improved libtiff compilation with OJPEG support. Now no need for patching IJG JPEG library, hack requred by libtiff will be compiled and used in-place. Implemented with suggestion and help from Bill Allombert, Debian's libjpeg maintainer. * libtiff/tif_aux.c: Properly handle TIFFTAG_PREDICTOR in TIFFVGetFieldDefaulted() function. 2003-05-05 Andrey Kiselev <dron@ak4719.spb.edu> * tools/ppm2tiff.c: PPM header parser improved: now able to skip comments. * tools/tiffdither.c: Fixed problem with bit fill order tag setting: was not copied from source image. * libtiff/getimage.c: Workaround for some images without correct info about alpha channel as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=331 2003-04-29 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2ps.c, man/tiff2ps.1: 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. Fixes http://bugzilla.remotesensing.org/show_bug.cgi?id=328 * tools/tiff2ps.c: Force deadzone printing when EPS output specified as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=325 2003-04-17 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: Removed additional check for StripByteCounts due to problems with multidirectory images. Quality of error messages improved. 2003-04-16 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiffcp.c: Fixed problem with colorspace conversion for JPEG encoded images. See bug entries http://bugzilla.remotesensing.org/show_bug.cgi?id=275 and http://bugzilla.remotesensing.org/show_bug.cgi?id=23 * libtiff/tif_dirread.c: Additional check for StripByteCounts correctness. Fixes http://bugzilla.remotesensing.org/show_bug.cgi?id=320 2003-03-12 Andrey Kiselev <dron@ak4719.spb.edu> * tools/{fax2ps.c, fax2tiff.c, gif2tiff.c, pal2rgb.c, ppm2tiff.c, ras2tiff.c, raw2tiff.c, rgb2ycbcr.c, thumbnail.c, tiff2bw.c, tiff2ps.c, tiff2rgba.c, tiffcp.c, tiffdither.c, tiffinfo.c, tiffmedian.c}: Added library version reporting facility to all tools. 2003-03-06 Frank Warmerdam <warmerdam@pobox.com> * port/install.sh.in: Fixed problems with install producing paths like ///usr/local/lib on cygwin. 2003-02-27 Andrey Kiselev <dron@ak4719.spb.edu> * tools/fax2tiff.c, man/fax2tiff.1: New switch (-X) to set width of raw input page. Patch supplied by Julien Gaulmin. See http://bugzilla.remotesensing.org/show_bug.cgi?id=293 for details. 2003-02-26 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dir.c: fixed up the tif_postdecode settings responsible for byte swapping complex image data. * libtiff/tif_lzw.c: fixed so that decoder state isn't allocated till LZWSetupDecode(). Needed to read LZW files in "r+" mode. 2003-02-07 Andrey Kiselev <dron@ak4719.spb.edu> * tools/ppm2tiff.c: Fixed problem with too many arguments. 2003-02-04 Andrey Kiselev <dron@ak4719.spb.edu> * tools/raw2tiff.c: Memory leak fixed. 2003-02-03 Andrey Kiselev <dron@ak4719.spb.edu> * tools/fax2tiff.c, man/fax2tiff.1: Applied patch from Julien Gaulmin (thanks, Julien!). More switches for fax2tiff tool for better control of input and output. Details at http://bugzilla.remotesensing.org/show_bug.cgi?id=272 2003-02-03 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: Modified to defer initialization of jpeg library so that we can check if there is already any tile/strip data before deciding between creating a compressor or a decompressor. 2003-01-31 Frank Warmerdam <warmerdam@pobox.com> * 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. * libtiff/tif_open.c: Removed error if opening a compressed file in update mode. http://bugzilla.remotesensing.org/show_bug.cgi?id=198 2003-01-31 Andrey Kiselev <dron@ak4719.spb.edu> * config.guess, config.sub: Updated to recent upstream versions. 2003-01-15 Frank Warmerdam <warmerdam@pobox.com> * cut 3.6.0 Beta release. 2002-12-20 Andrey Kiselev <dron@ak4719.spb.edu> * tools/fax2ps.c, man/fax2ps.1: Page size was determined in wrong way as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=239 2002-12-17 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirread.c: Allow wrong sized arrays in TIFFFetchStripThing(). http://bugzilla.remotesensing.org/show_bug.cgi?id=49 2002-12-02 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dir.c: fix problem with test on td_customValueCount. Was using realloc even first time. Fix by Igor Venevtsev. 2002-11-30 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dir.c: fixed bug with resetting an existing custom field value. * libtiff/tif_dir.c: Fixed potential problem with ascii "custom" tags in TIFFVGetField() ... added missing break. 2002-10-14 Frank Warmerdam <warmerdam@pobox.com> * tools/tiff2ps.c: fixes a problem where "tiff2ps -1e" did not make the scanline buffer long enough when writing rgb triplets. The scanline needs to be 3 X the number of dots or else it will contain an incomplete triplet and programs that try to separate the eps by redefining the colorimage operator will get messed up. Patch supplied by William Bader. * Makefile.in: added tif_extension.c to file list as per http://bugzilla.remotesensing.org/show_bug.cgi?id=218. 2002-10-11 Andrey Kiselev <dron@ak4719.spb.edu> * configure, config.site, libtiff/{tif_unix.c, Makefile.in}: Fix for large files (>2GiB) supporting. New option in the config.site: LARGEFILE="yes". Should be enough for I/O of the large files. 2002-10-10 Frank Warmerdam <warmerdam@pobox.com> * libtiff/html/v3.6.0.html: new release notes. * libtiff/index.html: removed faq, cvs snapshot cruft. Added email link for Andrey. Pointer to v3.6.0.html. * libtiff/Makefile.in: added direct rule for tiffvers.h for release. 2002-10-07 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2ps.c, man/tiff2ps.1: Applied patch form Sebastian Eken (thanks, Sebastian!). 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 New features merged with code for shrinking/overlapping. Previously added -c and -n switches (for overriding PS units) renamed in -x and -y respectively. http://bugzilla.remotesensing.org/show_bug.cgi?id=200 * html/man/*.html: Updated from actual manual pages. 2002-10-06 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: fixed problem with boolean defined with wrong size on windows. Use #define boolean hack. http://bugzilla.remotesensing.org/show_bug.cgi?id=188 * libtiff/tiff.h: Don't do special type handling in tiff.h unless USING_VISUALAGE is defined. http://bugzilla.remotesensing.org/show_bug.cgi?id=39 2002-10-03 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tiff.h: added COMPRESSION_JP2000. 2002-10-02 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_dirread.c: Another fix for the fetching SBYTE arrays by the TIFFFetchByteArray() function. Should finally resolve http://bugzilla.remotesensing.org/show_bug.cgi?id=52 * configure: Set -DPIXARLOG_SUPPORT option along with -DZIP_SUPPORT * html/Makefile.in: New targets added: html and groffhtml for producing HTML representations of the manual pages automatically. html target uses man2html tool, groffhtml uses groff tool. 2002-09-29 Frank Warmerdam <warmerdam@pobox.com> * configure, libtiff/Makefile.in: Added SCO OpenServer 5.0.6 support from John H. DuBois III. 2002-09-15 Andrey Kiselev <dron@ak4719.spb.edu> * Makefile.in, /man/{raw2tiff.1, Makefile.in, libtiff.3}: Added manual page for raw2tiff(1) tool. 2002-09-12 Andrey Kiselev <dron@ak4719.spb.edu> * /libtiff/{tiffio.h, tif_dir.h}: TIFFDataWidth() declaration moved to the tiffio.h header file. * Makefile.in, /man/{TIFFDataWidth.3t, Makefile.in, libtiff.3}: Added manual page for TIFFDataWidth() function 2002-09-08 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirread.c: Expand v[2] to v[4] in TIFFFetchShortPair() as per http://bugzilla.remotesensing.org/show_bug.cgi?id=196. * tools/tiff2ps.c: Don't emit BeginData/EndData DSC comments since we are unable to properly include the amount to skip. http://bugzilla.remotesensing.org/show_bug.cgi?id=80 2002-09-02 Andrey Kiselev <dron@ak4719.spb.edu> * /libtiff/tif_dirread.c: Fixed problem with SBYTE type data fetching in TIFFFetchByteArray(). Problem described at http://bugzilla.remotesensing.org/show_bug.cgi?id=52 2002-08-22 Andrey Kiselev <dron@ak4719.spb.edu> * /libtiff/tif_dirinfo.c: Further additions to free custom fields in _TIFFSetupFieldInfo() function. See http://bugzilla.remotesensing.org/show_bug.cgi?id=169 for details. * /libtiff/tif_lzw.c: Additional consistency checking added in LZWDecode() and LZWDecodeCompat(). Fixes http://bugzilla.remotesensing.org/show_bug.cgi?id=190 and http://bugzilla.remotesensing.org/show_bug.cgi?id=100 * /libtiff/tif_lzw.c: Added check for valid code lengths in LZWDecode() and LZWDecodeCompat(). Fixes http://bugzilla.remotesensing.org/show_bug.cgi?id=115 2002-08-16 Andrey Kiselev <dron@ak4719.spb.edu> * /libtiff/{Makefile.vc, libtiff.def}: Missed declarations added. 2002-08-15 Frank Warmerdam <warmerdam@pobox.com> * tif_getimage.c: Ensure that TIFFRGBAImageBegin() returns the return code from the underlying pick function. http://bugzilla.remotesensing.org/show_bug.cgi?id=177 * tif_dir.h: changed FIELD_CODEC to 66 from 64 to avoid overlap with FIELD_CUSTOM as mentioned in bug 169. * tif_close.c: added logic to free dynamically created anonymous field definitions to correct a small memory leak. http://bugzilla.remotesensing.org/show_bug.cgi?id=169 2002-08-10 Andrey Kiselev <dron@ak4719.spb.edu> * /tools/{raw2tiff.c, Makefile.in, Makefile.lcc, Makefile.vc}: New tool: raw2tiff --- raw images to TIFF converter. No manual page yet. 2002-07-31 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: Fixed problem with setting of nrows in JPEGDecode() as per bugzilla bug (issue 1): http://bugzilla.remotesensing.org/show_bug.cgi?id=129 * 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. http://bugzilla.remotesensing.org/show_bug.cgi?id=168 * 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. http://bugzilla.remotesensing.org/show_bug.cgi?id=129 2002-06-22 Andrey Kiselev <dron@ak4719.spb.edu> * /tools/tiff2ps.c: Added workaround for some software that may crash when last strip of image contains fewer number of scanlines than specified by the `/Height' variable. See http://bugzilla.remotesensing.org/show_bug.cgi?id=164 for explanation. 2002-06-21 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2ps, man/tiff2ps.1: New functionality for tiff2ps utility: splitting long images in several pages. See http://bugzilla.remotesensing.org/show_bug.cgi?id=142 for explanation. Patch granted by John Williams <williams@morinda.com>. 2002-06-11 Frank Warmerdam <warmerdam@pobox.com> * libtiff/contrib/win95: renamed to contrib/win_dib. Added new Tiffile.cpp example of converting TIFF files into a DIB on Win32. This one is described in: http://bugzilla.remotesensing.org/show_bug.cgi?id=143 * libtiff/tif_ojpeg.c: Major upgrade from Scott. See details at: http://bugzilla.remotesensing.org/show_bug.cgi?id=156 2002-05-10 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2ps: New commandline switches to override resolution units obtained from the input file. Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=131 2002-04-26 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/libtiff.def: Added missed declaration. 2002-04-22 Andrey Kiselev <dron@ak4719.spb.edu> * tools/fax2tiff.c: Updated to reflect latest changes in libtiff. Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=125 2002-04-20 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_open.c: Pointers to custom procedures in TIFFClientOpen() are checked to be not NULL-pointers. 2002-04-18 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/libtiff.def: Added missed declarations. * libtiff/tif_pixarlog.c: Updated for using tif_tagmethods structure. 2002-04-16 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_lzw.c: Additional checks for data integrity introduced. Should finally close http://bugzilla.remotesensing.org/show_bug.cgi?id=100 2002-04-10 Andrey Kiselev <dron@ak4719.spb.edu> * tools/tiff2ps: Division by zero fixed. Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=88 2002-04-09 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/: tif_dirwrite.c, tif_write.c, tiffio.h: TIFFCheckpointDirectory() routine added. Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=124 * man/: TIFFWriteDirectory.3t, Makefile.in: Added description for the new function. 2002-04-08 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/: tif_codec.c, tif_compress.c, tiffiop.h: 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). * libtiff/tif_getimage.c: The way of codecs checking in TIFFRGBAImageOK changed. Now it has used tif->tif_decodestatus and tif->tif_encodestatus. Should fix http://bugzilla.remotesensing.org/show_bug.cgi?id=119 (in case of __cvs_8.tif test image). * libtiff/: tif_dirinfo.c, tif_dirread.c: Somebody makes a bug in tif_dirread.c when TIFFCreateAnonFieldInfo was introduced. Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=119 in case of _cvs_00000-00.tif, _cvs_00000-01.tif and _cvs_00000-02.tif. 2002-04-04 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/: tif_lzw.c: Assertions in LZWDecode and LZWDecodeCompat replaced by warnings. Now libtiff should read corrupted LZW-compressed files by skipping bad strips. Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=100 2002-04-03 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirwrite.c: Removed some dead code. * libtiff/*: Cleanup some warnings. * libtiff/tif_dir.c: Fixed bug with count returned by TIFFGetField() for variable length FIELD_CUSTOM values. Was int * but should be u_short *. 2002-04-01 Andrey Kiselev <dron@ak4719.spb.edu> * tools/: tifcp.c: Added support for 'Orientation' tag in tiffcp utility (at cpStripToTile routine). 2002-03-27 Frank Warmerdam <warmerdam@pobox.com> * tif_dirread.c: avoid div-by-zero if rowbytes is zero in chop func. http://bugzilla.remotesensing.org/show_bug.cgi?id=111 * tif_print.c: Fixed so that ASCII FIELD_CUSTOM values with passcount set FALSE can be printed (such as TIFFTAG_SOFTWARE). * libtiff/tif_dir.c,tif_dirinfo.c,tif_dir.h,tif_ojpeg.c: modified so that TIFFTAG_SOFTWARE uses FIELD_CUSTOM as an example. 2002-03-26 Dwight Kelly <dbmalloc@remotesensing.org> * libtiff/: tiff.h, tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c, tif_dirwrite.c: 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). 2002-03-26 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/: tif_getimage.c: TIFFReadRGBAStrip and TIFFReadRGBATile now also uses TIFFRGBAImageOK before reading. This is additional fix for http://bugzilla.remotesensing.org/show_bug.cgi?id=110 2002-03-25 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/: tif_getimage.c: Additional check for supported codecs added in TIFFRGBAImageOK and TIFFReadRGBAImage now uses TIFFRGBAImageOK before reading. Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=110 2002-03-15 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/: tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c, tif_dirwrite.c: Added routine TIFFDataWidth for detrmining TIFFDataType sizes instead of working with tiffDataWidth array directly. Should prevent out-of-borders bugs in case of unknown or broken data types. EstimateStripByteCounts routine modified, so it won't work when tags with uknown sizes founded. Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=109 2002-03-13 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/tif_getimage.c: Added support for correct handling `Orientation' tag in gtTileContig. Should be added in other gt* functions as well, but I have not images for testing yet. Partially resolves http://bugzilla.remotesensing.org/show_bug.cgi?id=23 2002-03-10 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/: tif_dirinfo.c, tif_dirwrite.c: Added possibility to read broken TIFFs with LONG type used for TIFFTAG_COMPRESSION, TIFFTAG_BITSPERSAMPLE, TIFFTAG_PHOTOMETRIC. Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=99 2002-03-08 Andrey Kiselev <dron@ak4719.spb.edu> * libtiff/Makefile.in, tools/Makefile.in: Shared library will not be stripped when installing, utility binaries will do. Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=93 2002-02-28 Frank Warmerdam <warmerdam@pobox.com> * man/TIFFGetField: fixed type of TIFFTAG_COPYRIGHT. * man/libtiff.3t: added copyright tag info. 2002-02-11 Frank Warmerdam <warmerdam@pobox.com> * libtiff/{tiff.h,tif_fax3.c}: Add support for __arch64__. http://bugzilla.remotesensing.org/show_bug.cgi?id=94 * man/Makefile.in: Patch DESTDIR handling http://bugzilla.remotesensing.org/show_bug.cgi?id=95 * configure: OpenBSD changes for Sparc64 and DSO version. http://bugzilla.remotesensing.org/show_bug.cgi?id=96 2002-02-05 Frank Warmerdam <warmerdam@pobox.com> * config.site/configure: added support for OJPEG=yes option to enable OJPEG support from config.site. 2002-01-27 Frank Warmerdam <warmerdam@pobox.com> * html/document.html: fixed links for TIFf 6 docs. 2002-01-18 Frank Warmerdam <warmerdam@pobox.com> * config.guess, config.sub: Updated from ftp.gnu.org/pub/config. * libtiff/tif_read.c: Fixed TIFFReadEncodedStrip() to fail if the decodestrip function returns anything not greater than zero as per http://bugzilla.remotesensing.org/show_bug.cgi?id=97 * configure: Modify CheckForBigEndian so it can work in a cross compiled situation. 2002-01-16 Frank Warmerdam <warmerdam@pobox.com> * tools/tiffdump.c: include TIFFTAG_JPEGTABLES in tag list. * tools/tiffset.c: fix bug in error reporting. * tools/tiffcp.c: fix several warnings that show up with -Wall. 2002-01-04 Frank Warmerdam <warmerdam@pobox.com> * 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. 2001-12-15 Frank Warmerdam <warmerdam@pobox.com> * configure, libtiff/Makefile.in: Changes for building on MacOS 10.1. http://bugzilla.remotesensing.org/show_bug.cgi?id=94 * 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. http://bugzilla.remotesensing.org/show_bug.cgi?id=93 http://bugzilla.remotesensing.org/show_bug.cgi?id=65 2001-12-12 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: allow jpeg data stream sampling values to override those from tiff directory. This makes this work with ImageGear generated files. 2001-12-07 Frank Warmerdam <warmerdam@pobox.com> * html/Makefile.in: added missing images per bug 92. * port/Makefile.in: fixed clean target per bug 92. 2001-11-28 Frank Warmerdam <warmerdam@pobox.com> * Reissue 3.5.7 release. * libtiff/mkversion.c: Fix output of TIFF_VERSION to be YYYYMMDD so that it is increasing over time. * Makefile.in: Ensure that tiffvers.h is regenerated in the make release target. * Makefile.in: added libtiff/tiffvers.h to the release file list. 2001-11-23 Frank Warmerdam <warmerdam@pobox.com> * added html/v3.5.7.html, updated html/index.html. * Makefile.in: added contrib/addtiffo/tif_ovrcache.{c,h}. 2001-11-15 Frank Warmerdam <warmerdam@pobox.com> * configure: fixed test for -lm. 2001-11-02 Frank Warmerdam <warmerdam@pobox.com> * Added PHOTOMETRIC_ITULAB as per bug 90. http://bugzilla.remotesensing.org/show_bug.cgi?id=90 2001-10-10 Frank Warmerdam <warmerdam@pobox.com> * 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 http://bugzilla.remotesensing.org/show_bug.cgi?id=83 2001-09-26 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirwrite.c: added TIFFRewriteDirectory() function. Updated TIFFWriteDirectory man page to include TIFFRewriteDirectory. 2001-09-24 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_lzw.c: Avoid MS VC++ 5.0 optimization bug. http://bugzilla.remotesensing.org/show_bug.cgi?id=78 * 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_dir.c: removed the auto replacement of COMPRESSION_LZW with COMPRESSION_NONE in _TIFFVSetField(). * Removed Makefile, tools/Makefile, port/install.sh, man/Makefile from CVS as they are all supposed to be auto-generated by configure. 2001-09-22 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_ojpeg.c: new update from Scott. 2001-09-09 Frank Warmerdam <warmerdam@pobox.com> * 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. http://bugzilla.remotesensing.org/show_bug.cgi?id=54 * libtiff/Makefile.in: Fixed @DSOSUB_VERSION to be @DSOSUF_VERSION@ in two places. * 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. http://bugzilla.remotesensing.org/show_bug.cgi?id=47 * tools/tiff2ps.c: added OJPEG YCbCr to RGB support. * libtiff/tif_ojpeg.c: Applied substantial patch from Scott. 2001-09-06 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_packbits.c: fixed memory overrun error. http://bugzilla.remotesensing.org/show_bug.cgi?id=77 2001-08-31 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_getimage.c: relax handling of contig case where there are extra samples that are supposed to be ignored. This should now work for 8bit greyscale or palletted images. http://bugzilla.remotesensing.org/show_bug.cgi?id=75 2001-08-28 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_getimage.c: Don't complain for CMYK (separated) images with more than four samples per pixel. See: http://bugzilla.remotesensing.org/show_bug.cgi?id=73 2001-08-10 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_getimage.c: Use memmove() instead of TIFFmemcpy() in TIFFReadRGBATile() to avoid issues in cases of overlapping buffers. See Bug 69 in Bugzilla. http://bugzilla.remotesensing.org/show_bug.cgi?id=69 * tools/tiff2rgba.c: fixed getopt() call so that -b works again. 2001-08-09 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tiff.h, libtiff/tif_fax3.c: added check for __LP64__ when checking for 64 bit architectures as per bugzilla bug 67. 2001-07-27 Frank Warmerdam <warmerdam@pobox.com> * man/Makefile.in: add TIFFClientOpen link as per debian submitted bug 66. 2001-07-20 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_jpeg.c: Define HAVE_BOOLEAN on windows if RPCNDR.H has been included. 2001-07-19 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_open.c: Seek back to zero after failed read, before writing header. 2001-07-18 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_ojpeg.c: updates from Scott. Handles colors much better. Now depends on having patched libjpeg as per patch in contrib/ojpeg/*. 2001-07-17 Frank Warmerdam <warmerdam@pobox.com> * */Makefile.in: added DESTDIR support. http://bugzilla.remotesensing.org/show_bug.cgi?id=60 2001-07-16 Frank Warmerdam <warmerdam@pobox.com> * configure, libtiff/Makefile.in: applied OpenBSD patches as per: http://bugzilla.remotesensing.org/show_bug.cgi?id=61 2001-06-28 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_getimage.c: Fixed so that failure is properly reported by gtTileContig, gtStripContig, gtTileSeparate and gtStripSeparate. See http://bugzilla.remotesensing.org/show_bug.cgi?id=51 * tiffcmp.c: Fixed multi samples per pixel support for ContigCompare. Updated bug section of tiffcmp.1 to note tiled file issues. See http://bugzilla.remotesensing.org/show_bug.cgi?id=53 2001-06-22 Frank Warmerdam <warmerdam@pobox.com> * configure: Changes for DSO generation on AIX provided by John Marquart <jomarqua@indiana.edu>. * configure, libtiff/Makeifle.in: Modified to build DSOs properly on Darwin thanks to Robert Krajewski (rpk@alum.mit.edu) and Keisuke Fujii (fujiik@jlcuxf.kek.jp). 2001-06-13 Frank Warmerdam <warmerdam@pobox.com> * tools/tiff2rgba.c: added -n flag to avoid emitting alpha component. * man/tiff2rgba.1: new 2001-05-22 Frank Warmerdam <warmerdam@pobox.com> * Added tiffset and tif_ojpeg to the dist lists in Makefile.in. 2001-05-13 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tools/thumbnail.c: changed default output compression to packbits from LZW since LZW isn't generally available. 2001-05-12 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_ojpeg.c: New. libtiff/tif_jpeg.c, tiffconf.h, tif_getimage.c: changes related to OJPEG support. Scott Marovich <marovich@hpl.hp.com> supplied OJPEG support. 2001-05-11 Frank Warmerdam <warmerdam@pobox.com> * tiff.h: removed, it duplicates libtiff/tiff.h. 2001-05-08 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirinfo.c: moved pixar and copyright flags to ensure everything is in order. * libtiff/libtiff.def: added TIFFCreateDirectory and TIFFDefaultStripSize as per: http://bugzilla.remotesensing.org/show_bug.cgi?id=46 2001-05-02 Frank Warmerdam <warmerdam@pobox.com> * 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_dirwrite.c: Added support for TIFF_VARIABLE2 in the case of writing TIFF_BYTE/TIFF_SBYTE fields. http://bugzilla.remotesensing.org/show_bug.cgi?id=43 2001-05-01 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_dirinfo.c: removed duplicate TIFFTAG_PHOTOSHOP as per bug report http://bugzilla.remotesensing.org/show_bug.cgi?id=44 2001-04-05 Frank Warmerdam <warmerdam@pobox.com> * tiffio.h: removed C++ style comment. * configure: fixed up SCRIPT_SH/SHELL handling. * Makefile.in: Fixed SCRIPT_SH/SHELL handling. * config.guess: documented more variables as per bug 40. 2001-04-03 Frank Warmerdam <warmerdam@pobox.com> * configure, *Makefile.in: Various changes to improve configuration for HP/UX specifically, and also in general. 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. http://bugzilla.remotesensing.org/show_bug.cgi?id=40 2001-04-02 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tiff.h: Applied hac to try and resolve the problem with the inttypes.h include file on AIX. See http://bugzilla.remotesensing.org/show_bug.cgi?id=39 * VERSION: update to 3.5.7 beta in preparation for release. * configure/config.site: modified to check if -lm is needed for MACHDEPLIBS if not supplied by config.site. Needed for Darwin. * 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. 2001-03-29 Frank Warmerdam <warmerdam@pobox.com> * configure, Makefile.in, etc: added support for OPTIMIZER being set from config.site. 2001-03-28 Frank Warmerdam <warmerdam@pobox.com> * fax2ps.c: Helge (libtiff at oldach.net) submitted fix: Here's a fix for fax2ps that corrects behaviour for non-Letter paper sizes. 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. See http://bugzilla.remotesensing.org/show_bug.cgi?id=35 * tiff2ps.c/tiff2ps.1: Substantial changes to tiff2ps by Bruce A. Mallett. See check message for detailed information on all the changes, including a faster encoder, fixes for level 2 PostScript, and support for the imagemask operator. 2001-03-27 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tiffio.h: Changed "#if LOGLUV_PUBLIC" to "#ifdef LOGLUV_PUBLIC" so it will work with VisualAge on AIX. http://bugzilla.remotesensing.org/show_bug.cgi?id=39 2001-03-16 Frank Warmerdam <warmerdam@pobox.com> * tif_dirinfo.c: moved definition of copyright tag in field list. Apparently they have to be in sorted order by tag id. 2001-03-13 Frank Warmerdam <warmerdam@pobox.com> * tif_getimage.c: Added support for 16bit minisblack/miniswhite images in RGBA interface. 2001-03-02 Frank Warmerdam <warmerdam@pobox.com> * Added TIFFTAG_COPYRIGHT support. 2001-02-19 Frank Warmerdam <warmerdam@pobox.com> * 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. 2001-02-16 Frank Warmerdam <warmerdam@pobox.com> * libtiff/libtiff.def: Brent Roman submitted new version adding serveral missing entry points. * libtiff/tif_dirinfo.c: don't declare tiffFieldInfo static on VMS. Some sort of weird VMS thing. http://bugzilla.remotesensing.org/show_bug.cgi?id=31 * 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. Changes applied with minor edits. 2001-01-23 Frank Warmerdam <warmerdam@pobox.com> * 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. 2001-01-08 Mike Welles <mike@bangstate.com> * Makefile.in: Now cleaning up after itself after creating the .tar.gz and .zip 2001-01-07 Frank Warmerdam <warmerdam@pobox.com> * html/libtiff.html: Fixed arguments in example for TIFFRGBAImageGet() as per bug report by Patrick Connor. 2000-12-28 Frank Warmerdam <warmerdam@pobox.com> * Added RELEASE-DATE file to release file list. * Fixed libtiff/makefile.vc to make tiffvers.h not version.h. 2000-12-22 Mike Welles <mike@bangstate.com> * added link to CVS mirror from index.html * updated html/internals.html to note that LZW compression is not supported by default. 2000-12-22 Frank Warmerdam <warmerdam@pobox.com> * updated html/libtiff.html to not point at Niles' old JPL web site for the man pages, point at www.libtiff.org. 2000-12-21 Frank Warmerdam <warmerdam@pobox.com> * libtiff/tif_apple.c: Applied "Carbon" support patches supplied by Leonard Rosenthol <leonardr@lazerware.com>. May interfere with correct building on older systems. If so, please let me know. 2000-12-19 Mike Welles <mike@bangsate.com> * Took out LZW Encoding from tif_lzw.c * Created HOWTO-RELEASE * Created html/v3.5.6.html * updated index.html 2000-12-01 Frank Warmerdam <warmerdam@pobox.com> * Added patches for EOFB support in tif_fax3.c and tif_fax3.h. Patches supplied by Frank Cringle <fdc@cliwe.ping.de> Example file at: ftp://ftp.remotesensing.org/pub/libtiff/eofb_396.tif 2000-11-24 Frank Warmerdam <warmerdam@pobox.com> * libtiff/Makefile.in: Added an installPrivateHdrs and install-private target so that the private headers required by libgeotiff can be installed with the others. They are not installed by default. * libtiff/Makefile.in: Added @MACHLIBDEPS@ to LINUXdso and GNULDdso targets so libtiff.so will be built with an explicit dependency on libm.so. * libtiff/Makefile.in: Use softlinks to link libtiff.so.3 to libtiff.so.3.5.5. * libtiff/Makefile.in & configure: Remove all references to the ALPHA file, or ALPHA version logic. Added stuff about DIST_POINT in place of DIST_TYPE and the alpha release number stuff. 2000-11-22 Frank Warmerdam <warmerdam@pobox.com> * I have applied a patch from Steffen Moeller <moeller@ebi.ac.uk> to the configure script so that it now accepts the --prefix, and --exec-prefix directives. 2000-11-13 Frank Warmerdam <warmerda@cs46980-c> * I have made a variety of modifications in an effort to ensure the TIFFLIB_VERSION macro is automatically generated from the RELEASE-DATE file which seems to be updated regularly. o mkversion.c now reads RELEASE-DATE and emits TIFFLIB_VERSION in version include file. o renamed version.h to tiffvers.h because we now have to install it with the public libtiff include files. o include tiffvers.h in tiffio.h. o updated tif_version.c to use tiffvers.h. o Updated Makefile.in accordingly. * As per http://bugzilla.remotesensing.org/show_bug.cgi?id=25 I have updated the win32 detection rules in tiffcomp.h. 2000-10-20 Frank Warmerdam <warmerda@cs46980-c> * tif_getimage.c: Fixed RGBA translation for YCbCr images for which the strip/tile width and height aren't multiples of the sampling size. See http://bugzilla.remotesensing.org/show_bug.cgi?id=20 Some patches from Rick LaMont of Dot C Software. * Modified tif_packbits.c encoder to avoid compressing more data than provided if rowsize doesn't factor into provided data (such as occurs for YCbCr). 2000-10-19 Frank Warmerdam <warmerda@cs46980-c> * tools/rgb2ycbcr.c: fixed output strip size to account for vertical roundup if rows_per_strip not a multiple of vertical sample size. 2000-10-16 Frank Warmerdam <warmerda@cs46980-c> * 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 2000-10-12 Frank Warmerdam <warmerda@cs46980-c> * 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 <utx@penguin.cz> 2000-09-30 Frank Warmerdam <warmerda@cs46980-c> * 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 2000-09-27 Frank Warmerdam <warmerda@cs46980-c> * Added GNULDdso target an`d switched linux and freebsd to use it. 2000-09-26 Frank Warmerdam <warmerda@cs46980-c> * Applied patch for 0x0000 sequences in tif_fax3.h's definition of EXPAND1D() as per bug 11 (from Roman). 2000-09-25 Frank Warmerdam <warmerda@cs46980-c> * 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 <njl98r@ecs.soton.ac.uk> for reporting the bug and proving the patch. 2000-09-18 Frank Warmerdam <warmerda@cs46980-c> * Fixed tif_jpeg.c so avoid destroying the decompressor before we are done access data thanks to bug report from: Michael Eckstein <eckstein@gepro.cz>. * Reverted tif_flush change. 2000-09-14 Frank Warmerdam <warmerda@cs46980-c> * tif_flush.c: Changed so that TIFFFlushData() doesn't return an error when TIFF_BEENWRITING is not set. This ensures that the directory contents can still be flushed by TIFFFlush(). 2000-08-14 Frank Warmerdam <warmerda@rommel.atlsci.com> * 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. 2000-07-17 Frank Warmerdam <warmerda@cs46980-c> * Tentatively added support for SAMPLEFORMAT_COMPLEXIEEEFP, and SAMPLEFORMAT_COMPLEXINT. 2000-07-13 Mike Welles <mike@onshore.com> * index.html, bugs.html: added bugzilla info. 2000-07-12 Frank Warmerdam <warmerda@rommel.atlsci.com> * 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 <peters@serendipity-software.com.au> 2000-06-15 Frank Warmerdam <warmerda@rommel.atlsci.com> * Modified tiffio.h logic with regard to including windows.h. It won't include it when building with __CYGWIN__. 2000-05-11 Frank Warmerdam <warmerda@cs46980-c> * README: update to mention www.libtiff.org, don't list Sam's old email address. * configure: Fixed DSO test for Linux as per patch from Jan Van Buggenhout <chipzz@Ace.ULYSSIS.Student.KULeuven.Ac.Be>. 2000-04-21 Frank Warmerdam <warmerda@rommel.atlsci.com> * 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. 2000-04-18 Frank Warmerdam <warmerda@rommel.atlsci.com> * contrib/addtiffo: Added "averaging" resampling option. * tools/tiffsplit.c: Copy TIFFTAG_SAMPLEFORMAT. Tue Apr 18 16:18:08 2000 Frank Warmerdam <warmerda@esabot.atlsci.com> * tools/Makefile.in: Modified to install properly on SGI. 2000-04-12 Mike Welles <mike@onshore.com> * configure: Fixed stupid mistake in libc6 test on Linux 2000-04-04 Mike Welles <mike@onshore.com> * tif_win32.c: Applied patch to fix overreads and ovverwrites caught by BoundsChecker. From Arvan Pritchard <arvan.pritchard@infomatix.co.uk> (untested). * tif_getimage.c: Applied patch to silence VC6 warnings. From Arvan Pritchard <arvan.pritchard@informatix.co.uk> * tif_lzw.c: Applied patch to silence VC6 warnings. From Arvan Pritchard <arvan.pritchard@informatix.co.uk> 2000-03-28 Frank Warmerdam <warmerda@cs46980-c> * Added contrib/stream (stream io) code submitted by Avi Bleiweiss. 2000-03-28 Frank Warmerdam <warmerda@cs46980-c> *** 3.5.5 release *** * fax2ps: Fixed mixup of width and height in bounding box statement as per submission by Nalin Dahyabhai <nalin@redhat.com>. 2000-03-27 Mike Welles <mike@onshore.com> * fax2ps: Modified printruns to take uint32 instead of uint16. Patch courtesy of Bernt Herd <herd@herdsoft.com> 2000-03-20 Mike Welles <mike@onshore.com> * configure: added test for libc6 for linux targets. Bug reported by Stanislav Brabec <utx@k332.feld.cvut.cz> * Added 3.5 docs to html/Makefile.in. Thanks to Stanislav Brabec <utx@k332.feld.cvut.cz> * configure: fixed bugs in sed scripts (applied sed script s:/@:s;@:;s:/s;;:;: to configure). fix submitted to Stanislav Brabec <utx@k332.feld.cvut.cz> * tools/iptcutil was not in files list, and wasn't being added to tar archive. Updated Makefile.in. 2000-03-17 Frank Warmerdam <warmerda@cs46980-c> * tif_fax3.c: Fixed serious bug introduced during the uint16->uint32 conversion for the run arrays. 2000-03-03 Frank Warmerdam <warmerda@cs46980-c.mtnk1.on.wave.home.com> * Set td_sampleformat default to SAMPLEFORMAT_UINT instead of SAMPLEFORMAT_VOID in TIFFDefaultDirectory() in tif_dir.c. 2000-03-02 Frank Warmerdam <warmerda@cs46980-c.mtnk1.on.wave.home.com> * 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. Tue Feb 15 22:01:05 2000 Frank Warmerdam <warmerda@gdal.velocet.ca> * Fixed tools/tiffcmp so that stopondiff testing works. Patch care of Joseph Orost <joe@sanskrit.lz.att.com>. 2000-01-28 <warmerda@CS46980-B> * 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. Fri Jan 28 10:13:49 2000 Frank Warmerdam <warmerda@gdal.velocet.ca> * Largely reimplemented contrib/addtiffo to avoid temp files, updating the TIFF file in place. Fixed a few other bugs to. * 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() Wed Jan 5 12:37:48 2000 Frank Warmerdam <warmerda@gdal.velocet.ca> * Added TIFFmemory(3t) functions to libtiff.def. Tue Jan 4 13:39:00 2000 Frank Warmerdam <warmerda@gdal.velocet.ca> * Added libtiff/libtiff.def to TIFFILES distribution list. Mon Dec 27 12:13:39 EST 1999 Mike Welles <mike@onshore.com> * Created lzw compression kit, as a new module (libtiff-lzw-compression-kit). * Altered descriptions in tools to reflect "by default" lzw not supported * Updated index.html to note lzw compression kit. Tue Dec 21 14:01:51 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> * Added fax3sm_winnt.c to distribution list in Makefile.in. Tue Dec 21 11:04:45 EST 1999 Mike Welles <mike@onshore.com> *** 3.5.4 release *** * Aadded Pixar tag support. Contributed by Phil Beffery <phil@pixar.com> * Made one more change to tif_dir.c for removal of LZW compression. Also added notice when LZW compression invoked. * Changed default compression in tools to TIFF_PACKBITS, and changed usage descriptions in tools to reflect removal of LZW compression Mon Dec 20 18:39:02 EST 1999 Mike Welles <mike@onshore.com> * Fixed bug that caused LZW (non) compression to segfault. Added warning about LZW compression removed being removed, and why. * Added nostrip to install in tools/Makefile.in so that debugging symbols are kept. Tue Dec 7 12:04:47 EST 1999 Mike Welles <mike@onshore.com> * Added patch from Ivo Penzar <ivo.penzar@infolink-software.com>, supporting Adobe ZIP deflate. Untested. Sat Dec 4 15:47:11 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> * Made Packbits the default compression in tools/tiff2rgba.c instead of LZW. Tue Nov 30 14:41:43 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> *** 3.5.3. release *** * Added tif_luv to contrib/djgpp/Makefile.lib. Tue Nov 30 14:15:32 EST 1999 Mike Welles <mike@onshore.com> * Added zip creation to relase makefile target * Added html for TIFFWriteTile.3t man page. Tue Nov 30 09:20:16 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> * 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. Mon Nov 29 11:43:42 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> * Added TIFFWriteTile.3t man page. Sun Nov 28 20:36:18 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> * Added notes on use of makefile.vc in build.html, and fixed email subscription address. 199-11-28 Mike Welles <mike@onshore.com> * 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 <cameron@petris.com> -- modifications of changes made by Frank (sun cc still complained on cast). * Added tiffconf.h to install target per request from Bill Radcliffe <billr@corbis.com>: "We need a way for ImageMagick to know features have been compiled into the TIFF library in order to handle things properly". Sat Nov 27 16:49:21 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> * fixed various VC++ warnings as suggested by Gilles Vollant <info@winimage.com>. Wed Nov 24 12:08:16 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> * Modified TIFFquery.3t man pages info on TIFFIsByteSwapped() to not imply applications are responsible for image data swapping. 1999-11-22 Mike Welles <mike@onshore.com> * HTML-ized the man pages, added to html/man * Removed LZW Compression to comply with Unisys patent extortion. 1999-09-29 Mike Welles <mike@onshore.com> * Corrected one remaining 16 -> 32 bit value in tif_fax3.c, From Ivo Penzar <ivo.penzar@infolink-software.com. * Added patch from Ivo Penzar to have TiffAdvanceDirectory handle memory mapped files. <ivo.penzar@infolink-software.com> 1999-09-26 Mike Welles <mike@onshore.com> *** 3.5.2 release *** * 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). * updated html to reflect release 1999-09-23 <warmerda@CS46980-B> * Set O_BINARY for tif_unix.c open() ... used on cygwin for instance. * Added CYGWIN case in configure. Fri Sep 17 00:13:51 CEST 1999 Mike Welles <mike@onshore.com> * Applied Francois Dagand's patch to handle fax decompression bug. (sizes >= 65536 were failing) Tue Sep 14 21:31:43 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> * Applied "a" mode fix to tif_win32.c/TIFFOpen() as suggested by Christopher Lawton <clawton@mathworks.com> Wed Sep 8 08:19:18 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> * Added IRIX/gcc, and OSF/1 4.x support on behalf of Albert Chin-A-Young <china@thewrittenword.com> * Added TIFFReassignTagToIgnore() API on behalf of Bruce Cameron <cameron@petris.com>. Man page still pending. Wed Aug 25 11:39:07 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> * Added test target in Makefile, test_pics.sh script and pics/*.rpt files to provide for a rudimentary testsuite. * Added contrib/tags back from old distribution ... fixed up a bit. 1999-08-16 <warmerda@CS46980-B> * Added simple makefile.vc makefiles for building with MS VC++ on Windows NT/98/95 in console mode. Stuff in contrib/win* make give better solutions for some users. Mon Aug 16 21:52:11 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> * Added addtiffo (add overviews to a TIFF file) in contrib. Didn't put it in tools since part of it is in C++. 1999-08-16 Michael L. Welles <mike@kurtz.fake> * Updated html/index.html with anon CVS instructions. Mon Aug 16 13:18:41 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> * 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. * CVS Repository placed at remotesensing.org. ChangeLog added. PK粐\<C�%��TODOnu�[���# $Header: /cvs/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. PK沐\,��html/images/CMakeLists.txtnu�[���PK沐\�#Bw��Uhtml/images/back.gifnu�[���PK沐\m���(f(f� html/images/bali.jpgnu�[���PK沐\��0�0�phtml/images/cat.gifnu�[���PK沐\�r��N�N�html/images/cover.jpgnu�[���PK沐\E���Q3Q3�html/images/cramps.gifnu�[���PK沐\\B�� �$html/images/dave.gifnu�[���PK粐\��iw��Ehtml/images/info.gifnu�[���PK粐\���5�5�Ehtml/images/jello.jpgnu�[���PK粐\�L���8�8�{html/images/jim.gifnu�[���PK粐\v*���html/images/note.gifnu�[���PK粐\�������html/images/oxford.gifnu�[���PK粐\���`]`]��html/images/quad.jpgnu�[���PK粐\�����+html/images/ring.gifnu�[���PK粐\���O@O@�<html/images/smallliz.jpgnu�[���PK粐\T'O+��}html/images/strike.gifnu�[���PK粐\��}jK�html/images/warning.gifnu�[���PK粐\���OO!��html/man/TIFFFieldName.3tiff.htmlnu�[���PK粐\���<4 4 &Q�html/man/TIFFFieldPassCount.3tiff.htmlnu�[���PK粐\.�Q&ۧhtml/man/TIFFFieldReadCount.3tiff.htmlnu�[���PK粐\�z���� 5�html/man/TIFFFieldTag.3tiff.htmlnu�[���PK粐\���HH'N�html/man/TIFFFieldWriteCount.3tiff.htmlnu�[���PK粐\X�O ��html/man/TIFFFlush.3tiff.htmlnu�[���PK粐\2|������ K�html/man/TIFFGetField.3tiff.htmlnu�[���PK粐\f�:�5�5MYhtml/man/TIFFOpen.3tiff.htmlnu�[���PK粐\bɹ}}&�html/man/TIFFPrintDirectory.3tiff.htmlnu�[���PK粐\K�d=00!�html/man/TIFFRGBAImage.3tiff.htmlnu�[���PK粐\�8Bæ�%W�html/man/TIFFReadDirectory.3tiff.htmlnu�[���PK粐\9�r0��(R�html/man/TIFFReadEncodedStrip.3tiff.htmlnu�[���PK粐\z�ar%%'uhtml/man/TIFFReadEncodedTile.3tiff.htmlnu�[���PK粐\�8��(�(%�html/man/TIFFReadRGBAImage.3tiff.htmlnu�[���PK粐\B��[99%8=html/man/TIFFReadRGBAStrip.3tiff.htmlnu�[���PK粐\����!!$�Zhtml/man/TIFFReadRGBATile.3tiff.htmlnu�[���PK粐\\�\y $7|html/man/TIFFReadRawStrip.3tiff.htmlnu�[���PK粐\��[&a a #��html/man/TIFFReadRawTile.3tiff.htmlnu�[���PK粐\z�!���$K�html/man/TIFFReadScanline.3tiff.htmlnu�[���PK粐\�)̐�� (�html/man/TIFFReadTile.3tiff.htmlnu�[���PK粐\�i���$.�html/man/TIFFSetDirectory.3tiff.htmlnu�[���PK粐\ӹ�uyuy v�html/man/TIFFSetField.3tiff.htmlnu�[���PK粐\s�}u ;Fhtml/man/TIFFWarning.3tiff.htmlnu�[���PK粐\�Uk�VV&�Shtml/man/TIFFWriteDirectory.3tiff.htmlnu�[���PK粐\�>���)Omhtml/man/TIFFWriteEncodedStrip.3tiff.htmlnu�[���PK粐\���(��html/man/TIFFWriteEncodedTile.3tiff.htmlnu�[���PK粐\E0Q��%�html/man/TIFFWriteRawStrip.3tiff.htmlnu�[���PK粐\Se�E��$��html/man/TIFFWriteRawTile.3tiff.htmlnu�[���PK粐\R����%նhtml/man/TIFFWriteScanline.3tiff.htmlnu�[���PK粐\�ss�66!�html/man/TIFFWriteTile.3tiff.htmlnu�[���PK粐\�λ((��html/man/TIFFbuffer.3tiff.htmlnu�[���PK粐\���tt�html/man/TIFFcodec.3tiff.htmlnu�[���PK粐\r}��X�X�html/man/TIFFcolor.3tiff.htmlnu�[���PK粐\��r� � �Yhtml/man/TIFFmemory.3tiff.htmlnu�[���PK粐\�0��..:hhtml/man/TIFFquery.3tiff.htmlnu�[���PK粐\̠�� � �|html/man/TIFFsize.3tiff.htmlnu�[���PK粐\���y��html/man/TIFFstrip.3tiff.htmlnu�[���PK粐\r�e%� � �html/man/TIFFswab.3tiff.htmlnu�[���PK粐\�OU����html/man/TIFFtile.3tiff.htmlnu�[���PK粐\32,�==�html/man/fax2ps.1.htmlnu�[���PK粐\�6�y9y9c�html/man/fax2tiff.1.htmlnu�[���PK粐\`l!Y��$html/man/index.htmlnu�[���PK粐\Ra7"``Y"html/man/libtiff.3tiff.htmlnu�[���PK粐\���||��html/man/pal2rgb.1.htmlnu�[���PK粐\�c��g�html/man/ppm2tiff.1.htmlnu�[���PK粐\P95�1�1:�html/man/raw2tiff.1.htmlnu�[���PK粐\��R��L�html/man/tiff2bw.1.htmlnu�[���PK粐\@���FFl�html/man/tiff2pdf.1.htmlnu�[���PK粐\�GǨ:�:�/html/man/tiff2ps.1.htmlnu�[���PK粐\�u\����jhtml/man/tiff2rgba.1.htmlnu�[���PK粐\��11�|html/man/tiffcmp.1.htmlnu�[���PK粐\�z��=�=f�html/man/tiffcp.1.htmlnu�[���PK粐\|�O�O6�html/man/tiffcrop.1.htmlnu�[���PK粐\#����0 html/man/tiffdither.1.htmlnu�[���PK粐\�t�]@@3 html/man/tiffdump.1.htmlnu�[���PK粐\���ff�D html/man/tiffinfo.1.htmlnu�[���PK粐\%""MV html/man/tiffmedian.1.htmlnu�[���PK粐\X�Ӭ88�j html/man/tiffset.1.htmlnu�[���PK粐\iGoo8~ html/man/tiffsplit.1.htmlnu�[���PK粐\��2�� � � html/man/CMakeLists.txtnu�[���PK粐\}\cc�� html/man/HtmlDoc.cmakenu�[���PK粐\�/Ǥ� � d� html/man/TIFFClose.3tiff.htmlnu�[���PK粐\ƕ�5� � !`� html/man/TIFFDataWidth.3tiff.htmlnu�[���PK粐\�)����� html/man/TIFFError.3tiff.htmlnu�[���PK粐\�����%�� html/man/TIFFFieldDataType.3tiff.htmlnu�[���PK粐\��l"���� html/v3.4beta036.htmlnu�[���PK粐\�tqr}}�� html/v3.5.1.htmlnu�[���PK粐\ U��]� html/v3.5.2.htmlnu�[���PK粐\�eL��h� html/v3.5.3.htmlnu�[���PK粐\�=�J J M html/v3.5.4.htmlnu�[���PK粐\�B�B��� html/v3.5.5.htmlnu�[���PK粐\�N�s��� html/v3.5.6-beta.htmlnu�[���PK粐\-�C$'$'�8 html/v3.5.7.htmlnu�[���PK粐\�3p��A�A%` html/v3.6.0.htmlnu�[���PK粐\a�t���� html/v3.6.1.htmlnu�[���PK粐\V���88ϼ html/v3.7.0.htmlnu�[���PK粐\�|��#�#G� html/v3.7.0alpha.htmlnu�[���PK粐\�T�ZZ� html/v3.7.0beta.htmlnu�[���PK粐\�/���html/v3.7.0beta2.htmlnu�[���PK粐\9�v*��html/v3.7.1.htmlnu�[���PK粐\�JjRRM3html/v3.7.2.htmlnu�[���PK粐\-�V 7 7 �Rhtml/v3.7.3.htmlnu�[���PK粐\Ja�ޡ�Vshtml/v3.7.4.htmlnu�[���PK粐\)l�ب�7�html/v3.8.0.htmlnu�[���PK粐\6�D�ss�html/v3.8.1.htmlnu�[���PK粐\�d|���Ҿhtml/v3.8.2.htmlnu�[���PK粐\�a+��-�-��html/v3.9.0beta.htmlnu�[���PK粐\G�/ss�html/v3.9.1.htmlnu�[���PK粐\��H�> > � html/v3.9.2.htmlnu�[���PK粐\@+�S�)�)html/v4.0.0.htmlnu�[���PK粐\"��0��<Bhtml/v4.0.1.htmlnu�[���PK粐\N,Z���XNhtml/v4.0.2.htmlnu�[���PK粐\�&�~ ~ ZZhtml/v4.0.3.htmlnu�[���PK粐\������hhtml/v4.0.4.htmlnu�[���PK粐\�uc�3�3U�html/v4.0.4beta.htmlnu�[���PK粐\h�M�html/v4.0.5.htmlnu�[���PK粐\^z#����html/v4.0.6.htmlnu�[���PK粐\lm�p�C�C��html/v4.0.7.htmlnu�[���PK粐\`��%I%I! html/v4.0.8.htmlnu�[���PK粐\�.�F�Fyj html/v4.0.9.htmlnu�[���PK粐\}7����~� html/CMakeLists.txtnu�[���PK粐\[ޙ'r�r��� html/TIFFTechNote2.htmlnu�[���PK粐\TU�;..GFhtml/addingtags.htmlnu�[���PK粐\V���� � �thtml/bugs.htmlnu�[���PK粐\�b��W�W��~html/build.htmlnu�[���PK粐\ �k��Ahtml/contrib.htmlnu�[���PK粐\EyD66html/document.htmlnu�[���PK粐\�]��22�html/images.htmlnu�[���PK粐\�Y,��html/index.htmlnu�[���PK粐\9�>$K$K#0html/internals.htmlnu�[���PK粐\szRBZ Z �{html/intro.htmlnu�[���PK粐\u���9�9�#�html/libtiff.htmlnu�[���PK粐\�5*��html/misc.htmlnu�[���PK粐\ո��EE�&html/support.htmlnu�[���PK粐\~<�^^Alhtml/tools.htmlnu�[���PK粐\�^77ނhtml/v3.4beta007.htmlnu�[���PK粐\��n���Z�html/v3.4beta016.htmlnu�[���PK粐\���W W V�html/v3.4beta018.htmlnu�[���PK粐\�_+���html/v3.4beta024.htmlnu�[���PK粐\͠=�^^�html/v3.4beta028.htmlnu�[���PK粐\��/� � ��html/v3.4beta029.htmlnu�[���PK粐\��J�����html/v3.4beta031.htmlnu�[���PK粐\-V\� � �html/v3.4beta032.htmlnu�[���PK粐\x�s����html/v3.4beta033.htmlnu�[���PK粐\A-!0qqhtml/v3.4beta034.htmlnu�[���PK粐\��html/v3.4beta035.htmlnu�[���PK粐\(�H�t�t ChangeLognu�[���PK粐\<C�%���TODOnu�[���PK���1�
/home/emeraadmin/www/node_modules/safer-buffer/../isobject/../../src/../4d695/libtiff-devel.zip