diff options
author | Mike Welles <mike@onshore.com> | 1999-07-27 21:50:26 +0000 |
---|---|---|
committer | Mike Welles <mike@onshore.com> | 1999-07-27 21:50:26 +0000 |
commit | 0ef31e1f62aa7a8b1c488a59c4930775ee0046e4 (patch) | |
tree | 4559abed62351fc97c6ca655204fe9a3eeeb0e64 /html | |
download | libtiff-git-0ef31e1f62aa7a8b1c488a59c4930775ee0046e4.tar.gz |
Initial revision
Diffstat (limited to 'html')
43 files changed, 5380 insertions, 0 deletions
diff --git a/html/Makefile.in b/html/Makefile.in new file mode 100644 index 00000000..6f0cfc8b --- /dev/null +++ b/html/Makefile.in @@ -0,0 +1,104 @@ +# $Header: /cvs/maptools/cvsroot/libtiff/html/Makefile.in,v 1.1 1999-07-27 21:50:27 mike Exp $ +# +# @WARNING@ +# +# Tag Image File Format Library Manual Pages +# +# Copyright (c) 1991-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 Stanford 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. +# +DEPTH = .. + +SRCDIR = ${DEPTH}/@SRCDIR@/html +VPATH = ../@SRCDIR@/html + +PORT = ${DEPTH}/port + +# +# VERSION: @VERSION@ +# DATE: @DATE@ +# TARGET: @TARGET@ +# CCOMPILER: @CCOMPILER@ +# +SHELL = @SCRIPT_SH@ +NULL = +ECHO = echo +MV = mv +RM = rm -f +INSTALL = @INSTALL@ + +HTML = @DIR_HTML@ + +HTMLFILES=\ + bugs.html \ + build.html \ + contrib.html \ + document.html \ + images.html \ + index.html \ + internals.html \ + intro.html \ + libtiff.html \ + misc.html \ + support.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 \ + ${NULL} +IMAGES=\ + images/back.gif \ + images/bali.jpg \ + images/cat.gif \ + images/cover.jpg \ + images/cramps.gif \ + images/jello.jpg \ + images/jim.gif \ + images/note.gif \ + images/oxford.gif \ + images/quad.jpg \ + images/ring.gif \ + images/smallliz.jpg \ + images/strike.gif \ + images/warning.gif \ + ${NULL} +TARGETS= + +all: ${TARGETS} + +install: all + ${INSTALL} -m 755 -dir -idb tiff.man.html ${HTML} ${HTML}/images + for i in ${HTMLFILES} ${IMAGES}; do \ + ${INSTALL} -idb tiff.man.html -m 444 -F ${HTML} \ + -src ${SRCDIR}/$$i -O $$i; \ + done + +clean:; diff --git a/html/bugs.html b/html/bugs.html new file mode 100644 index 00000000..2269d7eb --- /dev/null +++ b/html/bugs.html @@ -0,0 +1,66 @@ +<HTML> +<HEAD> +<TITLE> +Bugs and the TIFF Mailing List +</TITLE> +</HEAD> + +<H1> +<IMG SRC=images/cover.jpg WIDTH=110 HEIGHT=110 ALIGN=left BORDER=1 HSPACE=6> +Bugs and the TIFF Mailing List +</H1> + +<H5> +This documentation is best viewed using a graphical browser that supports +the latest HTML directives for formatting documents. In particular, +this document was authored +for viewing with version 1.1 or newer of the +<A HREF="http://home.mcom.com/comprod/products/navigator/index.html">Netscape Navigator</A>. +</H5> + +<BR CLEAR=left> + +<P> +This software is free. The only thing that I ask in return is that you +tell me when you find a problem or fix a bug. I also gladly accept +software contributions, although I hesitate to include such software in +my regular stuff if I am personally unable to test it. + +<P> +A mailing list for users of this software is located on sgi.com. +If you want to join this mailing list or have a list-related request +such as getting your name removed from it, send a request to +<UL> +<A HREF="mailto:tiff-request@sgi.com">tiff-request@sgi.com</A> +</UL> +For example, to subscribe, send the line +<UL><PRE> +subscribe +</PRE></UL> +in the body of your message. The line <TT>help</TT> will return a list of +the commands understood by the mailing list management software. + +<P> +Submissions (including bug reports) should be directed to: +<UL> +<A HREF="mailto:tiff@sgi.com">tiff@sgi.com</A> +</UL> +When corresponding about this software please always specify what +version you have and what system you are running on. + +<P> +If all else fails, I can be reached by sending mail to the address +shown below. +(but beware that I'm more likely to respond to mail sent to the +mailing list than mail sent directly to me). + +<P> +<HR> + +<ADDRESS> +<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>. +Last updated: $Date: 1999-07-27 21:50:27 $ +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/build.html b/html/build.html new file mode 100644 index 00000000..fff599f1 --- /dev/null +++ b/html/build.html @@ -0,0 +1,1153 @@ +<HTML> +<HEAD> +<TITLE> +Building the TIFF Software Distribution +</TITLE> +</HEAD> + +<H1> +<IMG SRC=images/cramps.gif WIDTH=159 HEIGHT=203 ALIGN=left BORDER=1 HSPACE=6> +Building the Software Distribution +</H1> + +<UL> +<LI><A HREF=#UNIX>Building on a UNIX system</A>. +<LI><A HREf=#MacMPW>Building on a Macintosh system with MPW</A>. +<LI><A HREf=#MacCW>Building on a Macintosh system with CodeWarrior</A>. +<LI><A HREF=#PC>Building on an MS-DOS or Windows system</A>. +<LI><A HREF=#DJGPP>Building on MS-DOS with the DJGPP v2 compiler</A>. +<LI><A HREF=#VMS>Building on a VMS system</A>. +<LI><A HREF=#Acorn>Building on an Acorn RISC OS system</A>. +<LI><A HREF=#Other>Building the Software on Other Systems</A> +</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. + +<A NAME=UNIX><HR><H2>Building on a UNIX System</H2></A> + +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> + to build the software +and then <TT>make install</TT> to do the installation; for example: + +<UL><PRE> +hyla% <B>cd tiff-v3.4beta099</B> +hyla% <B>./configure</B> + <I>...lots of messages...</I> +hyla% <B>make</B> + <I>...lots of messages...</I> +hyla# <B>make install</B> +</PRE></UL> + +In general, the software is designed such that the following should +be ``<I>make-able</I>'' in each directory: + +<UL><PRE> +make [all] build stuff +make install build&install stuff +make clean remove .o files and cruft, but not executables +make clobber remove everything that can be recreated +make distclean remove <EM>absolutely everything</EM> that can be recreated +</PRE></UL> + +Note that after running "<TT>make clobber</TT>" or +"<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"><P><HR WIDTH=65% ALIGN=right><H3>Build Trees</H3></A> + +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. + +<UL><PRE> +hyla% <B>cd tiff-v3.4beta099</B> +hyla% <B>ls</B> +COPYRIGHT VERSION config.sub dist man +Makefile.in config.guess configure html port +README config.site contrib libtiff tools +hyla% <B>./configure</B> +</PRE></UL> + +<P> +Otherwise, you can configure a build tree that +is parallel to the source tree hierarchy but which contains only +configured files and files created during the build procedure. + +<UL><PRE> +hyla% <B>cd tiff-v3.4beta099</B> +hyla% <B>mkdir obj obj/mycpu</B> +hyla% <B>cd obj/mycpu</B> +hyla% <B>../../configure</B> +</PRE></UL> + +This second scheme is useful for: + +<UL> +<LI>building multiple targets from a single source tree +<LI>building from a read-only source tree (e.g. if you receive + the distribution on CD-ROM) +</UL> + +<A NAME="ConfigFiles"><P><HR WIDTH=65% ALIGN=right><H3>Configuration Files</H3></A> + +The configuration process is critical to the proper compilation, +installation, and operation of the software. +The configure script runs a series of tests to +decide whether or not the target system +supports required functionality and, if it does not, whether it +can emulate or workaround the missing functions. +This procedure is fairly complicated and, due to the nonstandard +nature of most UNIX systems, prone to error. +The first time that you configure the software for use you should +check the output from the configure script and look for anything +that does not make sense for your system. +A sample configure run is shown below together with an explanation +of some of the work that is done. + +<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 either: +<UL> +<LI>on the command line to configure, +<LI>in a site-wide configuration file, or +<LI>in a target-specific configuration file. +</UL> +configure reads any site-wide configure file first, and +then any target-specific configuration file. +This permits target-specific definitions to override +site-wide definitions. + +<P> +Site-wide configuration files are named +<B>config.site</B> and are automatically searched for first +in any directory specified on the command line to configure +(using the <TT>-site</TT> option), or if that fails, in +the directory in in which the configure script is located. + +<P> +Target-specific configuration files are named <B>config.local</B> +and are looked for first in the top-level configuration directory, +or, if that fails, in the directory in which the configure script +is located. + +<P> +Configuration files are just shell scripts that define +shell variables that control the configuration process. +For example, the following file might be used on a BSDI system to +configure the software for installation in the <B>/usr/contrib</B> area. + +<PRE> +# +# Parameters suitable for BSDI 1.1 +# +DIR_BIN="/usr/contrib/bin" # directory for client apps +DIR_LIB="/usr/contrib/lib" # directory for libraries +DIR_MAN="/usr/contrib/man" # directory for manual pages +</PRE> + +<P> +For a complete list of the possible configuration parameters look +at the sample <B>config.site</B> file provided in the distribution; the +section below describes some of the more important parameters. + +<A NAME="Packages"><P><HR WIDTH=65% ALIGN=right><H3>Configuring Optional Packages/Support</H3></A> + +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 in a +<B>config.site</B> or <B>config.local</B> file, or by using a +<TT>-with-<PACKAGE></TT> option when invoking configure; +e.g. <TT>configure -with-AFM</TT>. + +<DL> +<DT><I>DSO Support</I> +<DD>The <TT>DSO</TT> support controls whether or not to +configure the software +to build a Dynamic Shared Object for the TIFF library. +Use of DSOs can significantly reduce the disk space needed for +users of the TIFF software. +If DSOs are not used then the code is statically linked into +each application that uses it. +By default this support is configured only if the system appears +to suport DSOs in a way that fits into the normal build scheme +(<TT>auto</TT>). +If DSO support is <EM>explicitly enabled</EM> and there is no +support for using DSOs in the expected way then DSOs are not used. + +<P> +<DT><I>JPEG Support</I> +<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=ftp://ftp.uu.net/graphics/jpeg/>ftp.uu.net:/graphics/jpeg/</A>. +If JPEG support is enabled the <TT>DIRS_LIBINC</TT> and <TT>DIR_JPEGLIB</TT> +parameters should also be set (see below). +By default JPEG support is not configured. + +<P> +<DT><I>ZIP Support</I> +<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=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>). +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. + +</DL> + +<A NAME="Sample"><P><HR WIDTH=65% ALIGN=right><H3>A Sample Configuration Session</H3></A> + +This section shows a sample configuration session and describes +the work done. The session is shown indented in a <TT>fixed width +font</TT> with user-supplied input in a <TT><B>bold font</B></TT>. +Comments are shown in a normal or <I>italic</I> font. +This session was collected on a 486 machine running BSDI 1.1. + +<UL><PRE><TT> +wullbrandt% <B>mkdir tiff</B> +wullbrandt% <B>cd tiff</B> +wullbrandt% <B>ln -s /hosts/oxford/usr/people/sam/tiff src</B> +</TT></PRE></UL> + +A build tree separate from the source tree is used here. +In fact, in this case the distribution is accessed from +a read-only NFS-mounted filesystem. + +<UL><PRE><TT> +wullbrandt% <B>src/configure</B> +Configuring TIFF Software v3.4beta015. + +Reading site-wide parameters from ../tiff-v3.4beta015/config.site. +Reading local parameters from config.local. +Gosh, aren't you lucky to have a i386-unknown-bsdi1.1 system! +</TT></PRE></UL> + +Note that configure announces the distribution version and the +deduced target configuration (<TT>i386-unknown-bsdi1.1</TT> here). + +<UL><PRE><TT> +Using /usr/local/bin/gcc for a C compiler (set CC to override). +Looks like /usr/local/bin/gcc supports the -g option. +Using " -g" for C compiler options. +</TT></PRE></UL> + +configure checked the normal shell search path for potential +ANSI C compilers. The compiler is selected according to it properly +compiling a small ANSI C test program. A specific compiler may be requested +by setting the <TT>CC</TT> environment variable to the appropriate +pathname, by supplying the parameter on the command line, e.g. +<TT>-with-CC=gcc</TT>, or by setting <TT>CC</TT> in a configuration +file. + +<P> +<IMG SRC="images/info.gif" ALIGN=left HSPACE=10> +<EM>Note that an ANSI C compiler is required to build the software. +If a C compiler requires options to enable ANSI C compilation, they +can be specified with the <TT>ENVOPTS</TT> parameter.</EM> + +<P> +Once a compiler is selected configure checks to see +if the compiler accepts a -g option to enable the generation + of debugging symbols, and +if the compiler includes an ANSI C preprocessor. + +<UL><PRE><TT> +Using /usr/ucb/make to configure the software. +</TT></PRE></UL> + +Next various system-specific libraries that may or may not be needed +are checked for (none are needed in this case). +If your system requires a library that is not +automatically included it can be specified by setting the +<TT>MACHDEPLIBS</TT> parameter. + +<P><I>Creating port.h.</I> +The <B>port.h</B> file is included by all the C code +in the library (but not the tools). +It includes definitions for functions and type +definitions that are missing from system include files, <TT>#defines</TT> +to enable or disable system-specific functionality, and other +odds and ends. + +<UL><PRE><TT> +Creating libtiff/port.h with necessary definitions. +... using LSB2MSB bit order for your i386 cpu +... using big-endian byte order for your i386 cpu +... configure use of mmap for memory-mapped files +... O_RDONLY is in <fcntl.h> +... using double for promoted floating point parameters +... enabling use of inline functions +Done creating libtiff/port.h. +</TT></PRE></UL> + +This file can take a long time to create so configure +generates the file only when it is needed, either because the +file does not exist or because a different target or compiler +is to be used. +Note that running "<TT>make distclean</TT>" in the top-level directory +of the build tree will remove the <B>port.h</B> file (along +with all the other files generated by configure). + +<P><I>Selecting emulated library functions.</I> +Certain library functions used by the tools are not present on all systems +and can be emulated using other system functionality. +configure checks for the presence of such functions and if they are +missing, will configure emulation code from the <B>port</B> directory +to use instead. Building the TIFF +software on unsupported systems may require +adding to the code to the <B>port</B> directory. + +<UL><PRE><TT> +Checking system libraries for functionality to emulate. +Done checking system libraries. +</TT></PRE></UL> + +If a routine must be emulated and configure does not automatically +check for it, the routine name can be specified using the <TT>PORTFUNCS</TT> +parameter. To add emulation support for a new function <TT>foo</TT>, +create a file <B>port/foo.c</B> that contains the emulation code +and then set <TT>PORTFUNCS=foo</TT> in a configuration file or modify +the configure script to automatically check for the missing function. + +<UL><PRE><TT> +Checking for Dynamic Shared Object (DSO) support. +Done checking for DSO support. +</TT></PRE></UL> + +If the <TT>DSO</TT> package is enabled (<TT>DSO=auto</TT> or +<TT>DSO=yes</TT>), then +configure will verify the system and compiler are capable of +constructing SVR4-style DSO's in the expected way. Note that +while a system may support DSO's the compiler may not be +capable of generating the required position-independent +code and/or the compiler may not pass the needed options +through to the loader. + +<P><I>Selecting utility programs.</I> +configure locates various system utility programs that are +used during installation of the software. + +<UL><PRE><TT> +Selecting programs used during installation. +Looks like mv supports the -f option to force a move. +Looks like /bin/ln supports the -s option to create a symbolic link. +Done selecting programs. +</TT></PRE></UL> + +<P><I>Selecting default configuration parameters.</I> +The remainder of the work done by configure involves setting up +configuration parameters that control the placement and +setup of files during the installation procedure. + +<UL><PRE><TT> +Selecting default TIFF configuration parameters. + +Looks like manual pages go in /usr/contrib/man. +Looks like manual pages should be installed with bsd-nroff-gzip-0.gz. + +TIFF configuration parameters are: + +[ 1] Directory for tools: /usr/contrib/bin +[ 2] Directory for libraries: /usr/contrib/lib +[ 3] Directory for include files: /usr/contrib/include +[ 4] Directory for manual pages: /usr/contrib/man +[ 5] Manual page installation scheme: bsd-nroff-gzip-0.gz + +Are these ok [yes]? +</TT></PRE></UL> + + + +At this point you can interactively modify any of the +displayed parameters. Hitting a carriage return or typing +<TT>yes</TT> will accept the current parameters. Typing one +of the number displayed along the left hand side causes +configure to prompt for a new value of the specified parameter. +Typing anything else causes configure to prompt for a new +value <EM>for each parameter</EM>. +In general hitting carriage return will accept the current +value and typing anything that is unacceptable will cause a +help message to be displayed. +A description of each of the configuration parameters is given below. + +<P> +Once acceptable parameters are setup configure will generate +all the files that depend on these parameters. Note that certain +files may or may not be created based on the configuration of +optional packages and/or the functions supported by target system. + +<UL><PRE><TT> +Creating Makefile from ../tiff-v3.4beta015/Makefile.in +Creating libtiff/Makefile from ../tiff-v3.4beta015/libtiff/Makefile.in +Creating man/Makefile from ../tiff-v3.4beta015/man/Makefile.in +Creating tools/Makefile from ../tiff-v3.4beta015/tools/Makefile.in +Creating port/install.sh from ../tiff-v3.4beta015/port/install.sh.in +Done. +</TT></PRE></UL> + +<A NAME=DSOSupport><P><HR><H3>Shared Library Support</H3></A> + +It is desirable to make the TIFF library be a shared object +on systems that have support for shared libraries. +Unfortunately the rules to use to build a shared library +vary between operating systems and even compilers. +The distributed software includes support for building a shared +version of the library on a number of different systems. +This support is split between rules in the file +<B>libtiff/Makefile.in</B> that construct the shared library +and checks done by the <TT>configure</TT> script to verify that +the expected rules are supported by compilation tools for +the target system. + +<P> +To add new support for building a shared library both these files +must be updated. +In the configure script search for the section where the autoconfiguration +setting of the <TT>DSO</TT> parameter is handled and +add a new case for the target system that sets the +<TT>DSOSUF</TT>, +<TT>DSOLD</TT>, +<TT>DSOOPTS</TT>, +and +<TT>LIBCOPTS</TT> +options as appropriate for the system. +<TT>DSOSUF</TT> specifies the filename suffix used for the shared +library (e.g. ``.so'' for Dynamic Shared Objects on most SVR4-based +systems). +<TT>DSOLD</TT> specifies the program to use to build the shared library +from a compiled object file; typically ``${LD}'' though on some systems +it is better to use the C compiler directly so system-dependent options and +libraries are automatically supplied. +<TT>DSOOPTS</TT> are options that must be specified to <TT>DSOLD</TT> +when building the shared library. +<TT>LIBCOPTS</TT> are options to pass to the C compiler when constructing +a relocatable object file to include in a shared library; e.g. ``-K PIC'' +on a Sun system. +The <TT>DSO</TT> parameter must also be set to a unique label that identifies +the target system and compilation tools. +This label is used to select +a target in <B>libtiff/Makefile.in</B> to do the actual work in building +the shared library. +Finally, to complete support for the shared library added the appropriate +rules to <B>libtiff/Makefile.in</B> under the target specified in the +<TT>configure</TT> script. + + + + +<A NAME="Parameters"><P><HR WIDTH=65% ALIGN=right><H3>Configuration Parameters</H3></A> + +This section gives a brief description of the less obvious +configuration parameters. Consult the distributed <B>config.site</B> +for a <EM>complete list of parameters</EM>. +The list here is sorted alphabetically. + +<P> +<TABLE BORDER CELLPADDING=3> + +<TR> +<TD VALIGN=top><TT>AROPTS</TT></TD> +<TD>The options passed to ar when creating an archive. +Note that configure will automatically check to see if ar +supports an <TT>s</TT> to create a symbol table instead of +using ranlib.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIR_BIN</TT></TD> +<TD>The directory where client applications should be installed; by +default this is <B>/usr/local/bin</B>.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIR_GZLIB</TT></TD> +<TD>The pathname of the directory containing the zlib library +(when ZIP or PixarLog compression support is enabled); +e.g. ``<TT>../src/zlib</TT>''.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIR_JPEGLIB</TT></TD> +<TD>The pathname of the directory containing the JPEG library +(when JPEG support is enabled); e.g. ``<TT>/usr/local/lib</TT>''.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIR_LIB</TT></TD> +<TD>The directory to install libraries and DSO's; by default +this is <B>/usr/local/lib</B>.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIR_MAN</TT></TD> +<TD>The top-most directory of the manual area where manual +pages should be installed.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIRS_LIBINC</TT></TD> +<TD>A space-separated list of directories in which to search for +include files when building the library and tools. +If JPEG or ZIP support is configured this parameter should include +the directories where the associated include files are located.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIST_ALPHA</TT></TD> +<TD>The alpha version number for the distribution; e.g. if this +is version 3.4beta031 then the the major number is 31.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIST_MAJOR</TT></TD> +<TD>The major version number for the distribution; e.g. if this +is version 3.4beta031 then the the major number is 3.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DIST_MINOR</TT></TD> +<TD>The minor version number for the distribution; e.g. if this +is version 3.4beta031 then the the major number is 4.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DSOSUF</TT></TD> +<TD>When DSO's are built, the filename suffix for a DSO. +If this is set to <TT>"a"</TT> then statically linked archives are used.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>DSOSUF_VERSION</TT></TD> +<TD>When DSO's are built, a version-specific filename suffix for a DSO. +If this is set to something other than the value of <TT>DSO</TT> then +the file <B>libtiff.<TT>DSOSUF_VERSION</TT></B> will be installed and +a link to it named <B>libtiff.<TT>DSOSUF</TT></B> will automatically +be created. (Note that this means that rule for building the target +DSO must generate a file named <B>libtiff.<TT>DSOSUF_VERSION</TT></B>.)</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>ENVOPTS</TT></TD> +<TD>Options to pass to <TT>CC</TT> to force ANSI C compilation.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>FILLORDER</TT></TD> +<TD>The order of bits in a byte on the server machine; +either LSB2MSB or MSB2LSB. +This is normally selected according to the target system.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>GCOPTS</TT></TD> +<TD>Special options to pass the C compiler. If this parameter +is set, then configure may append other options to this list.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>INSTALL</TT></TD> +<TD>The pathname of the install program to use. Note that this program +must emulate the command line interface used by the IRIX install program.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>LIBPORT</TT></TD> +<TD>The pathname of the library that holds code to emulate missing +system functionality. +Normally this parameter is set by configure based on whether or +not emulation code is required for the target. +</TR> + +<TR> +<TD VALIGN=top><TT>LLDOPTS</TT> +<TD>Extra command line options passed to <TT>CC</TT> +when linking an executable. +This option is usually set only when DSO support is enabled +(to force the executable to search for the TIFF DSO +in non-standard locations in the filesystem.)</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>MACHDEPLIBS</TT></TD> +<TD>Target-dependent libraries that should be used when linking +tools. +Note that if this parameter is specified configure will append to +the list of libraries.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>MANSCHEME</TT></TD> +<TD>The scheme to use when preparing and installing manual pages. +Schemes are constructed according to: +<UL> +<<I>organization</I>>-<<I>formatting</I>>-<<I>compression</I>>[-<<I>suffix</I>>] +</UL> +where: +<<I>organization</I>> is either <TT>bsd</TT> +for BSD-style section organization (e.g. file formats in +section 5) or <TT>sysv</TT> for System V-style +organization (e.g. file formats in section 4). +<<I>formatting</I>> is either <TT>nroff</TT> to force +installation of formatted materials (using nroff) or +<TT>source</TT> to get the nroff source installed. +<<I>compression</I>> is either the name of a program +to compress the manual pages (gipz, compress, pack) or +<TT>cat</TT> for uncompressed data. +<<I>suffix</I>> is either the file suffix to convert +installed pages to (e.g. 0.gz for gzip-compressed pages under BSD) +or <TT>strip</TT> to force the normal ".4f" suffix to be converted to ".4" +(or ".5" if using the BSD organization). If no -<suffix> +is specified then filenames are not converted when they are installed.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>PORTFUNCS</TT></TD> +<TD>A list of non-standard functions that should be emulated. +Normally this list is constructed by configure based on checks it does. +If this parameter is set, configure will append to the specified list.</TD> +</TR> + +<TR> +<TD VALIGN=top><TT>SETMAKE</TT></TD> +<TD>If make does not automatically set <TT>$MAKE</TT> to +the name of the make program to invoke for subdirectories, then +configure will create an explicit definition. +If this parameter is set, then it will be used instead. +by default <TT>bin</TT> is used.</TD> +</TR> + +</TABLE> + + +<A NAME=PC><P><HR><H2>Building the Software under MS/DOS or Windows</H2></A> + +<I> +There is a Makefile for Microsoft C. +There is OS support for MS-DOS and for Windows. +Someone needs to fill this in, but no DOS-weenies seem to +give a damn so this section is blank for now .... +</I> + + + +<A NAME=DJGPP><P><HR><H2>Building the Software under MS/DOS with the DJGPP v2 compiler</H2></A> + +[<I>From the file <B>contrib/dosdjgpp/README</B>.</I>] + +<P> +The directory <B>contrib/dosdjgpp</B> +contains the files necessary to build the library and tools +with the DJGPP v2 compiler under MSDOS. + +<P> +All you have to do is copy the files in the directory +into the respective directories and run +make. If you want, you can use the <B>conf.bat</B> script +to do that for you, make sure that +the file is stored with MSDOS text EOL-convention (CR/LF), otherwise the +<B>command.com</B> will not do anything. + +<P> +Note that you probably will not be able to build the library with the v1.x +versions of djgpp, due to two problems. First, the top makefile calls a +sub-make for each directory and you are likely to run out of memory, since +each recursive invocation of a djgpp v1.x program requires about 130k, to +avoid that, you can enter the directories manually and call make (well, there +are only two dirs). The 2nd problem is that djgpp 1.x doesn't call the +coff2exe (stubify) program when creating an executable. This means that all +programs compiled are not converted to exe and consequently are not available +for calling directly. For the tools directory, you can just call coff2exe for +each program after make finishes, but in the libtiff directory, a few programs +are created during the make process that have to be called for make to +continue (e.g. mkg3states). Make will probably report an error at each +such stage. To fix that, either add a coff2exe call before each program is +called or call coff2exe manually and rerun make (there 2-3 such programs). + + +<A NAME=MacMPW><P><HR><H2>Building the Software on a Macintosh with MPW</H2></A> + +The directory <B>contrib/mac-mpw</B> contains support for +compiling the library and tools under the MPW Shell on a +Macintosh system. +This support was contributed by Niles Ritter +(<A HREF=mailto:ndr@tazboy.jpl.nasa.gov>ndr@tazboy.jpl.nasa.gov</A>). + +<P> +[<I>From the file <B>contrib/mac-mpw/README</B>.</I>] + +<P> +This directory contains all of the utilities and makefile source +to build the LIBTIFF library and tools from the MPW Shell. The +file BUILD.mpw in this directory is an executable script +which uses all of these files to create the MPW makefiles and +run them. + +<P> +The <file>.make files are not MPW makefiles as such, +but are when run through the "mactrans" program, which turns +the ascii "%nn" metacharacters into the standard weird MPW +make characters. + +<P> +This translation trick is necessary to protect the files when +they are put into unix tarfiles, which tend to mangle the +special characters. + + + +<A NAME=MacCW><P><HR><H2>Building the Software on a Macintosh with CodeWarrior</H2></A> + +The directory <B>contrib/mac-cw</B> contains support for +compiling the library and tools with MetroWerks CodeWarrior 6.1 +on a Macintosh system. +This support was contributed by Niles Ritter +(<A HREF=mailto:ndr@tazboy.jpl.nasa.gov>ndr@tazboy.jpl.nasa.gov</A>). + +<P> +[<I>From the file <B>contrib/mac-cw/README</B>.</I>] + +In this directory you will find a Makefile.script Applescript +file, which should be run in order to build the libtiff code +using MetroWerks CodeWarrior. + +Refer to the "metrowerks.note" instructions on building the +library for 68k and PowerPC native code, as well as building +some of the libtiff tools, which are rather unix-like, but +at least give an example of how to link everything together. + + + +<A NAME=VMS><P><HR><H2>Building the Software on a VMS System</H2></A> + +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>Compile the library. +<PRE> +$ SET DEFAULT DISK:[TIFF.LIBTIFF] +$ @MAKEVMS +</PRE> +<LI>Compile the tools. +<PRE> +$ SET DEFAULT DISK:[TIFF.TOOLS] +$ @MAKEVMS +</PRE> +<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> +</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> +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> +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. + + +<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>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> +</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>Using the TIFF object library. +<PRE> +$ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/LIBRARY +</PRE> +</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. + + + +<A NAME=Acorn><P><HR><H2>Building the Software on an Acorn RISC OS system</H2></A> + +The directory <B>contrib/acorn</B> contains support for compiling the library +under Acorn C/C++ under Acorn's RISC OS 3.10 or above. Subsequent pathnames +will use the Acorn format: The full-stop or period character is a pathname +delimeter, and the slash character is not interpreted; the reverse position +from Unix. Thus "libtiff/tif_acorn.c" becomes "libtiff.tif_acorn/c". + +<P> +This support was contributed by Peter Greenham. (<A HREF=mailto:peter@enlarion.demon.co.uk>peter@enlarion.demon.co.uk</A>). + +<P> +<H3>Installing LibTIFF:</H3> + +<P> +LIBTIFF uses several files which have names longer than the normal RISC OS +maximum of ten characters. This complicates matters. Maybe one day Acorn will +address the problem and implement long filenames properly. Until then this +gets messy, especially as I'm trying to do this with obeyfiles and not have +to include binaries in this distribution. + +<P> +First of all, ensure you have Truncate configured on (type <TT>*Configure +Truncate On</TT>) + +<P> +Although it is, of course, preferable to have long filenames, LIBTIFF can be +installed with short filenames, and it will compile and link without +problems. However, <I>getting</I> it there is more problematic. +<B>contrib.acorn.install</B> is an installation obeyfile which will create a normal +Acorn-style library from the source (ie: with c, h and o folders etc.), but +needs the distribution library to have been unpacked into a location which is +capable of supporting long filenames, even if only temporarily. + +<P> +My recommendation, until Acorn address this problem properly, is to use Jason +Tribbeck's <A +HREF=ftp://ftp.demon.co.uk/pub/mirrors/hensa/micros/arch/riscos/c/c020/longfiles.arc>LongFilenames</A>, or any other +working system that gives you long filenames, like a nearby NFS server for +instance. + +<P> +If you are using Longfilenames, even if only temporarily to install LIBTIFF, +unpack the TAR into a RAMDisc which has been longfilenamed (ie: <TT>*addlongfs +ram</TT>) and then install from there to the hard disk. Unfortunately +Longfilenames seems a bit unhappy about copying a bunch of long-named files +across the same filing system, but is happy going between systems. You'll +need to create a ramdisk of about 2Mb. + +<P> +Now you can run the installation script I've supplied (in contrib.acorn), +which will automate the process of installing LIBTIFF as an Acorn-style +library. The syntax is as follows: + +<P><TT> +install <source_dir> <dest_dir> + +</TT><P> +Install will then create <dest_dir> and put the library in there. For +example, having used LongFilenames on the RAMDisk and unpacked the library +into there, you can then type: + +<P><TT> +Obey RAM::RamDisc0.$.contrib.acorn.install RAM::RamDisc0.$ ADFS::4.$.LIBTIFF +</TT><P> + +It doesn't matter if the destination location can cope with long filenames or +not. The filenames will be truncated if necessary (*Configure Truncate On if +you get errors) and all will be well. + +<P> +<H3>Compiling LibTIFF:</H3> + +<P> +Once the LibTIFF folder has been created and the files put inside, making the +library should be just a matter of running '<B>SetVars</B>' to set the +appropriate system variables, then running '<B>Makefile</B>'. + +<P> +<B>OSLib</B> + +<P> +<A HREF=ftp://ftp.acorn.co.uk/pub/riscos/releases/oslib/oslib.arc>OSLib</A> +is a comprehensive API for RISC OS machines, written by Jonathan Coxhead of +Acorn Computers (although OSLib is not an official Acorn product). Using the +OSLib SWI veneers produces code which is more compact and more efficient than +code written using _kernel_swi or _swi. The Acorn port of LibTIFF can take +advantage of this if present. Edit the Makefile and go to the Static +dependencies section. The first entry is: + +<PRE> +# Static dependencies: +@.o.tif_acorn: @.c.tif_acorn + cc $(ccflags) -o @.o.tif_acorn @.c.tif_acorn +</PRE> +<P> +Change the cc line to: +<PRE> + cc $(ccflags) -DINCLUDE_OSLIB -o @.o.tif_acorn @.c.tif_acorn +</PRE> +<P> +Remember, however, that OSLib is only <I>recommended</I> for efficiency's +sake. It is not required. + + + +<A NAME=Other><P><HR><H2>Building the Software on Other Systems</H2></A> + +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, + +<UL><PRE><TT> +cd libtiff +cc -o mkg3states mkg3states.c +rm -f tif_fax3sm.c +./mkg3states -c const tif_fax3sm.c +</TT></PRE></UL> + +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, + +<UL><PRE> +cd libtiff +cc -o mkversion mkversion.c +rm -f version.h +./mkversion -v ../VERSION -a ../dist/tiff.alpha version.h +</PRE></UL> + +<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> +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> +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><P><HR><H2>Checking out the Software</H2></A> + +<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, + +<UL><PRE> +tiffcp -lzw cramps.tif x.tif +tiffcmp cramps.tif x.tif +</PRE></UL> + +<P> +(<TT>tiffcmp</TT> should be silent if the files compare correctly). + + + +<A NAME=TOC><P><HR><H2>Table of Contents</H2></A> + +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_acorn.c Acorn-related OS support +libtiff/tif_apple.c Apple-related OS support +libtiff/tif_atari.c Atari-related OS support +libtiff/tif_aux.c auxilary directory-related functions +libtiff/tif_close.c close an open TIFF file +libtiff/tif_codec.c configuration table of builtin codecs +libtiff/tif_compress.c compression scheme support +libtiff/tif_dir.c directory tag interface code +libtiff/tif_dirinfo.c directory known tag support code +libtiff/tif_dirread.c directory reading code +libtiff/tif_dirwrite.c directory writing code +libtiff/tif_dumpmode.c "no" compression codec +libtiff/tif_error.c library error handler +libtiff/tif_fax3.c CCITT Group 3 and 4 codec +libtiff/tif_fax3sm.c G3/G4 state tables (generated by mkg3states) +libtiff/tif_flush.c i/o and directory state flushing +libtiff/tif_getimage.c TIFFRGBAImage support +libtiff/tif_jpeg.c JPEG codec (interface to the IJG distribution) +libtiff/tif_luv.c SGI LogL/LogLuv codec +libtiff/tif_lzw.c LZW codec +libtiff/tif_msdos.c MSDOS-related OS support +libtiff/tif_next.c NeXT 2-bit scheme codec (decoding only) +libtiff/tif_open.c open and simply query code +libtiff/tif_packbits.c Packbits codec +libtiff/tif_pixarlog.c Pixar codec +libtiff/tif_predict.c Predictor tag support +libtiff/tif_print.c directory printing support +libtiff/tif_read.c image data reading support +libtiff/tif_strip.c some strip-related code +libtiff/tif_swab.c byte and bit swapping support +libtiff/tif_thunder.c Thunderscan codec (decoding only) +libtiff/tif_tile.c some tile-related code +libtiff/tif_unix.c UNIX-related OS support +libtiff/tif_version.c library version support +libtiff/tif_vms.c VMS-related OS support +libtiff/tif_warning.c library warning handler +libtiff/tif_win3.c Windows-3.1-related OS support +libtiff/tif_win32.c Windows-3.2-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> + +<P> +<HR> + +<ADDRESS> +<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>. +Last updated: $Date: 1999-07-27 21:50:27 $ +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/contrib.html b/html/contrib.html new file mode 100644 index 00000000..a5bc58a3 --- /dev/null +++ b/html/contrib.html @@ -0,0 +1,159 @@ +<HTML> +<HEAD> +<TITLE> +Contributed TIFF Software +</TITLE> +</HEAD> + +<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> +</TD> +<TD> +scripts and files from Niles Ritter for building + the library and tools under Macintosh/MPW C. +</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. +</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.wizards.dupont.com/magick>ImageMagick</a> convert(1) +utility. + + +</TD> +</TR> + +</TABLE> + +<P> +Don't send me mail asking about this stuff; I frequently know +absolutely nothing about it. Send questions +and/or bug reports directly to the authors. + + + +<P> +<HR> + +Last updated: $Date: 1999-07-27 21:50:27 $ + +</BODY> +</HTML> diff --git a/html/document.html b/html/document.html new file mode 100644 index 00000000..c63d3ca3 --- /dev/null +++ b/html/document.html @@ -0,0 +1,52 @@ +<HTML> +<HEAD> +<TITLE> +TIFF Documentation +</TITLE> +</HEAD> + +<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 by public ftp at + +<UL> +<A HREF="ftp://ftp.sgi.com/graphics/tiff/TIFF6.ps.Z">ftp:://ftp.sgi.com/graphics/tiff/TIFF6.ps.Z</A> +</UL> + +This is a PostScript version of the final 6.0 specification compressed +with the standard UNIX compress(1) program. +An uncompressed PostScript file is also available as TIFF6.ps in +the same directory. + +<BR CLEAR=left> + +<P> +Adobe (nee Aldus) provides the 6.0 spec online in +Acrobat format (PDF); this can be found at + +<UL> +<A HREF="http://www.adobe.com/supportservice/devrelations/PDFS/TN/TIFF6.pdf">http://www.adobe.com/supportservice/devrelations/PDFS/TN/TIFF6.pdf</A> +</UL> + +TIFF Technical Notes can be retrieved from + +<UL> +<A HREF="http://www.adobe.com/supportservice/devrelations/technotes.html">http://www.adobe.com/supportservice/devrelations/technotes.html</A> +</UL> + +<P> +<HR> + +<ADDRESS> + +<A HREF="http://fifth.net/">Mike Welles</A> / <A HREF="mailto:mike@onshore.com">mike@onshore.com</A>. +<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>. +Last updated: $Date: 1999-07-27 21:50:27 $ +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/images.html b/html/images.html new file mode 100644 index 00000000..62b83041 --- /dev/null +++ b/html/images.html @@ -0,0 +1,39 @@ +<HTML> +<HEAD> +<TITLE> +TIFF Test Images +</TITLE> +</HEAD> + +<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://ftp.sgi.com/graphics/tiff/v3.0pics.tar.Z">ftp://ftp.sgi.com/graphics/tiff/v3.0pics.tar.Z</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: 1999-07-27 21:50:27 $ + +</BODY> +</HTML> diff --git a/html/images/back.gif b/html/images/back.gif Binary files differnew file mode 100644 index 00000000..11d0c35f --- /dev/null +++ b/html/images/back.gif diff --git a/html/images/bali.jpg b/html/images/bali.jpg Binary files differnew file mode 100644 index 00000000..1f5c146d --- /dev/null +++ b/html/images/bali.jpg diff --git a/html/images/cat.gif b/html/images/cat.gif Binary files differnew file mode 100644 index 00000000..5bd3fac1 --- /dev/null +++ b/html/images/cat.gif diff --git a/html/images/cover.jpg b/html/images/cover.jpg Binary files differnew file mode 100644 index 00000000..8698cfb0 --- /dev/null +++ b/html/images/cover.jpg diff --git a/html/images/cramps.gif b/html/images/cramps.gif Binary files differnew file mode 100644 index 00000000..9153f9ae --- /dev/null +++ b/html/images/cramps.gif diff --git a/html/images/dave.gif b/html/images/dave.gif Binary files differnew file mode 100644 index 00000000..c36d4477 --- /dev/null +++ b/html/images/dave.gif diff --git a/html/images/info.gif b/html/images/info.gif Binary files differnew file mode 100644 index 00000000..783d6315 --- /dev/null +++ b/html/images/info.gif diff --git a/html/images/jello.jpg b/html/images/jello.jpg Binary files differnew file mode 100644 index 00000000..df99e663 --- /dev/null +++ b/html/images/jello.jpg diff --git a/html/images/jim.gif b/html/images/jim.gif Binary files differnew file mode 100644 index 00000000..9a18a031 --- /dev/null +++ b/html/images/jim.gif diff --git a/html/images/note.gif b/html/images/note.gif Binary files differnew file mode 100644 index 00000000..7177d68a --- /dev/null +++ b/html/images/note.gif diff --git a/html/images/oxford.gif b/html/images/oxford.gif Binary files differnew file mode 100644 index 00000000..dd4b86e1 --- /dev/null +++ b/html/images/oxford.gif diff --git a/html/images/quad.jpg b/html/images/quad.jpg Binary files differnew file mode 100644 index 00000000..4b7df170 --- /dev/null +++ b/html/images/quad.jpg diff --git a/html/images/ring.gif b/html/images/ring.gif Binary files differnew file mode 100644 index 00000000..2a614f49 --- /dev/null +++ b/html/images/ring.gif diff --git a/html/images/smallliz.jpg b/html/images/smallliz.jpg Binary files differnew file mode 100644 index 00000000..8eb827f8 --- /dev/null +++ b/html/images/smallliz.jpg diff --git a/html/images/strike.gif b/html/images/strike.gif Binary files differnew file mode 100644 index 00000000..0709d198 --- /dev/null +++ b/html/images/strike.gif diff --git a/html/images/warning.gif b/html/images/warning.gif Binary files differnew file mode 100644 index 00000000..f51eb4b1 --- /dev/null +++ b/html/images/warning.gif diff --git a/html/index.html b/html/index.html new file mode 100644 index 00000000..ebd97c7a --- /dev/null +++ b/html/index.html @@ -0,0 +1,83 @@ +<HTML> +<HEAD> +<TITLE> +TIFF Software +</TITLE> +</HEAD> +<BODY BGCOLOR=white> +<H1> +<IMG SRC=images/jello.jpg WIDTH=256 HEIGHT=192 ALIGN=left BORDER=1 HSPACE=6> +TIFF Software +<HR SIZE=4 WIDTH=55% ALIGN=left> +</H1> + +<B>Latest Release</B>: <A HREF="v3.5.html">v3.5</A><BR> +<B>Latest Software</B>: <A HREF="v3.5.html">v3.5</A><BR> +<B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com</A> , directory pub/libtiff<BR> +<B>Home Page</B>: <A HREF="http://www.libtiff.org/"> + http://www.libtiff.org</A> <BR> +<B>FAQ Page</B>: <I>forthcoming</I><BR> + + +<BR CLEAR=left> +<PRE> + +</PRE> + +<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, +as are a number of <A HREF= http://www.adobe.com/supportservice/devrelations/technotes.html>TIFF Technical Notes (TTN's)</A>. + +<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 on UNIX systems, +and documentation on the library and +tools. A small assortment of TIFF-related software for UNIX +that has been contributed by others is also included. + +<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. This software can also be used on older 16-bit systems +though it may require some effort and you may need to leave out some of +the compression support. + +<p> The software was orginally authored and maintained by <A +Sam Leffler. It appears he has <A HREF=where_is_sam.html> moved on to bigger +and better things</a> , and the code was orphaned for a while. <A +HREF="http://fifth.net">Mike Welles</a> is the person responsible for +version 3.5., and is the current maintainer of the +distribution. + +<p> + +The following sections are included in this documentation: + +<UL> +<LI><A HREF="support.html">TIFF 6.0 specification coverage</A> +<LI><A HREF="libtiff.html">Using the TIFF Library</A> +<LI><A HREF="internals.html">Modifying the TIFF Library</A> +<LI><A HREF="tools.html">TIFF tools overview</A> +<LI><A HREF="contrib.html">Contributed software</A> +<LI><A HREF="document.html">TIFF documentation</A> +<LI><A HREF="build.html">Building the software distribution</A> +<LI><A HREF="bugs.html">Bugs and the TIFF mailing list</A> +<LI><A HREF="images.html">Test images</A> +<LI><A HREF="misc.html">Acknowledgements and copyright issues</A> +</UL> + +A PostScript version of this documentation is available on-line at +the master FTP site listed above. + +<P> +<HR> +<em> +$Id: index.html,v 1.1 1999-07-27 21:50:27 mike Exp $ +</em> + +</BODY> +</HTML> diff --git a/html/internals.html b/html/internals.html new file mode 100644 index 00000000..f4430232 --- /dev/null +++ b/html/internals.html @@ -0,0 +1,655 @@ +<HTML> +<HEAD> +<TITLE> +Modifying The TIFF Library +</TITLE> +</HEAD> + +<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>Adding New Tags</A> +<LI><A HREF=#AddingCODECS>Adding New Builtin Codecs</A> +<LI><A HREF=#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 Lempel-Ziv & Welch (LZW) algorithm (compression 5), +<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> + +To override this 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=AddingTags><P><HR WIDTH=65% ALIGN=right><H3>Adding New Tags</H3></A> + +To add support for a new directory tag you have three options. If your +tag is specific to a compression algorithm, see below. If you have a lot +of tags you may want to try using Niles Ritter's runtime tag-extension +scheme in the "contrib/tags" directory, which makes the changes +orthogonal to the main libtiff code. Otherwise use +the following guidelines to add support to the ``core library''. + +<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=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>Adding New Tags</A>, above), +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=AddingCODECTags><P><HR WIDTH=65% ALIGN=right><H3>Adding New Codec-private Tags</H3></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>. + + +<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</TT>. + +<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> + +<ADDRESS> +<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>. +Last updated: $Date: 1999-07-27 21:50:27 $ +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/intro.html b/html/intro.html new file mode 100644 index 00000000..f3cdb5f2 --- /dev/null +++ b/html/intro.html @@ -0,0 +1,80 @@ +<HTML> +<HEAD> +<TITLE> +Introduction to the TIFF Documentation +</TITLE> +</HEAD> + +<H1> +<IMG SRC=images/strike.gif WIDTH=128 HEIGHT=100 ALIGN=left HSPACE=6> +Introduction to the TIFF Documentation +</H1> + + +<H5> +This documentation is best viewed using a graphical browser that supports +the latest HTML directives for formatting documents. In particular, +this document was authored +for viewing with version 1.1 or newer of the +<A HREF="http://home.mcom.com/comprod/products/navigator/index.html">Netscape Navigator</A>. +</H5> + +<BR CLEAR=left> + +<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> + +<ADDRESS> +<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>. +Last updated: $Date: 1999-07-27 21:50:27 $ +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/libtiff.html b/html/libtiff.html new file mode 100644 index 00000000..56ecc52f --- /dev/null +++ b/html/libtiff.html @@ -0,0 +1,730 @@ +<HTML> +<HEAD> +<TITLE> +Using The TIFF Library +</TITLE> +</HEAD> + +<H1> +<IMG SRC=images/cat.gif WIDTH=113 HEIGHT=146 BORDER=2 ALIGN=left HSPACE=6> +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> +<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> +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-mipl.jpl.nasa.gov/~ndr/tiff/man/"> +UNIX manual pages</A> that accompany this software. + +<P> +The following sections are found in this chapter: + +<UL> +<LI><A HREF=#Version>How to tell which version you have</A> +<LI><A HREF=#Typedefs>Library Datatypes</A> +<LI><A HREF=#Mman>Memory Management</A> +<LI><A HREF=#Errors>Error Handling</A> +<LI><A HREF=#FIO>Basic File Handling</A> +<LI><A HREF=#Dirs>TIFF Directories</A> +<LI><A HREF=#Tags>TIFF Tags</A> +<LI><A HREF=#Compression>TIFF Compression Schemes</A> +<LI><A HREF=#ByteOrder>Byte Order</A> +<LI><A HREF=#DataPlacement>Data Placement</A> +<LI><A HREF=#TIFFRGBAImage>TIFFRGBAImage Support</A> +<LI><A HREF=#Scanlines>Scanline-based Image I/O</A> +<LI><A HREF=#Strips>Strip-oriented Image I/O</A> +<LI><A HREF=#Tiles>Tile-oriented Image I/O</A> +<LI><A HREF=#Other>Other Stuff</A> +</UL> + + +<A NAME="Version"><P><HR WIDTH=65% ALIGN=right><H3>How to tell which version you have</H3></A> + +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: + +<PRE> + TIFF <<I>version</I>> <<I>alpha</I>> +</PRE> + +where <<I>version</I>> is whatever you get from +<KBD>"cat VERSION"</KBD> and <<I>alpha</I>> is +what you get from <KBD>"cat dist/tiff.alpha"</KBD>. + +<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. + +<A NAME="Typedefs"><P><HR WIDTH=65% ALIGN=right><H3>Library Datatypes</H3></A> + +<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. + +<A NAME="Mman"><P><HR WIDTH=65% ALIGN=right><H3>Memory Management</H3></A> + +<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> +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>. + +<A NAME="Errors"><P><HR WIDTH=65% ALIGN=right><H3>Error Handling</H3></A> + +<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> + +<A NAME="FIO"><P><HR WIDTH=65% ALIGN=right><H3>Basic File Handling</H3></A> + +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: + +<UL><LISTING> +#include "tiffio.h" +main() +{ + TIFF* tif = TIFFOpen("foo.tif", "r"); + ... do stuff ... + TIFFClose(tif); +} +</LISTING></UL> + +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> +To create or overwrite a TIFF image the file is also opened, but with +a <TT>"w"</TT> argument: + +<UL><LISTING> +#include "tiffio.h" +main() +{ + TIFF* tif = TIFFOpen("foo.tif", "w"); + ... do stuff ... + TIFFClose(tif); +} +</LISTING></UL> + +If the file already exists it is first truncated to zero length. + +<P> +<IMG SRC=images/warning.gif ALIGN=left HSPACE=6> +<EM>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. +</EM> + +<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>. + +<A NAME="Dirs"><P><HR WIDTH=65% ALIGN=right><H3>TIFF Directories</H3></A> + +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> +<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> +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: + +<UL><LISTING> +#include "tiffio.h" +main(int argc, char* argv[]) +{ + TIFF* tif = TIFFOpen(argv[1], "r"); + if (tif) { + int dircount = 0; + do { + dircount++; + } while (TIFFReadDirectory(tif)); + printf("%d directories in %s\n", dircount, argv[1]); + TIFFClose(tif); + } + exit(0); +} +</LISTING></UL> + +<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. + +<A NAME="Tags"><P><HR WIDTH=65% ALIGN=right><H3>TIFF Tags</H3></A> + +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> +<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=../contrib/tags/README>elsewhere</A>. + +<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> +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. + +<A NAME="Compression"><P><HR WIDTH=65% ALIGN=right><H3>TIFF Compression Schemes</H3></A> + +<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> +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. + +<A NAME="ByteOrder"><P><HR WIDTH=65% ALIGN=right><H3>Byte Order</H3></A> + +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). + + +<A NAME="DataPlacement"><P><HR WIDTH=65% ALIGN=right><H3>Data Placement</H3></A> + +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. + +<A NAME="TIFFRGBAImage"><P><HR WIDTH=65% ALIGN=right><H3>TIFFRGBAImage Support</H3></A> + +<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> +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: + +<UL><LISTING> +#include "tiffio.h" +main(int argc, char* argv[]) +{ + TIFF* tif = TIFFOpen(argv[1], "r"); + if (tif) { + uint32 w, h; + size_t npixels; + uint32* raster; + + TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &w); + TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &h); + npixels = w * h; + raster = (uint32*) _TIFFmalloc(npixels * sizeof (uint32)); + if (raster != NULL) { + if (TIFFReadRGBAImage(tif, w, h, raster, 0)) { + ...process raster data... + } + _TIFFfree(raster); + } + TIFFClose(tif); + } + exit(0); +} +</LISTING></UL> + +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> +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: + +<UL><LISTING> +#include "tiffio.h" +main(int argc, char* argv[]) +{ + TIFF* tif = TIFFOpen(argv[1], "r"); + if (tif) { + TIFFRGBAImage img; + char emsg[1024]; + + if (TIFFRGBAImageBegin(&img, tif, 0, emsg)) { + size_t npixels; + uint32* raster; + + npixels = img.width * img.height; + raster = (uint32*) _TIFFmalloc(npixels * sizeof (uint32)); + if (raster != NULL) { + if (TIFFRGBAImageGet(&img, raster, img.width, img.width)) { + ...process raster data... + } + _TIFFfree(raster); + } + TIFFRGBAImageEnd(&img); + } else + TIFFError(argv[1], emsg); + TIFFClose(tif); + } + exit(0); +} +</LISTING></UL> + +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: + +<UL> +<LI>repeatedly fetch (and manipulate) an image without opening + and closing the file +<LI>interpose a method for packing raster pixel data according to + application-specific needs (or write the data at all) +<LI>interpose methods that handle TIFF formats that are not already + handled by the core library +</UL> + +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> +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> +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> +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. + +<A NAME="Scanlines"><P><HR WIDTH=65% ALIGN=right><H3>Scanline-based Image I/O</H3></A> + +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> +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: + +<UL><LISTING> +#include "tiffio.h" +main() +{ + TIFF* tif = TIFFOpen("myfile.tif", "r"); + if (tif) { + uint32 imagelength; + tdata_t buf; + uint32 row; + + TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength); + buf = _TIFFmalloc(TIFFScanlineSize(tif)); + for (row = 0; row < imagelength; row++) + TIFFReadScanline(tif, buf, row); + _TIFFfree(buf); + TIFFClose(tif); + } +} +</LISTING></UL> + +<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: + +<UL><LISTING> +#include "tiffio.h" +main() +{ + TIFF* tif = TIFFOpen("myfile.tif", "r"); + if (tif) { + uint32 imagelength; + tdata_t buf; + uint32 row; + + TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imagelength); + TIFFGetField(tif, TIFFTAG_PLANARCONFIG, &config); + buf = _TIFFmalloc(TIFFScanlineSize(tif)); + if (config == PLANARCONFIG_CONTIG) { + for (row = 0; row < imagelength; row++) + TIFFReadScanline(tif, buf, row); + } else if (config == PLANARCONFIG_SEPARATE) { + uint16 s, nsamples; + + TIFFGetField(tif, TIFFTAG_SAMPLESPERPIXEL, &nsamples); + for (s = 0; s < nsamples; s++) + for (row = 0; row < imagelength; row++) + TIFFReadScanline(tif, buf, row, s); + } + _TIFFfree(buf); + TIFFClose(tif); + } +} +</LISTING></UL> + +Beware however that if the following code were used instead to +read data in the case <TT>PLANARCONFIG_SEPARATE</TT>, + +<UL><LISTING> + for (row = 0; row < imagelength; row++) + for (s = 0; s < nsamples; s++) + TIFFReadScanline(tif, buf, row, s); +</LISTING></UL> + +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). + +<A NAME="Strips"><P><HR WIDTH=65% ALIGN=right><H3>Strip-oriented Image I/O</H3></A> + +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> +A simple example of reading an image by strips is: + +<UL><LISTING> +#include "tiffio.h" +main() +{ + TIFF* tif = TIFFOpen("myfile.tif", "r"); + if (tif) { + tdata_t buf; + tstrip_t strip; + + buf = _TIFFmalloc(TIFFStripSize(tif)); + for (strip = 0; strip < TIFFNumberOfStrips(tif); strip++) + TIFFReadEncodedStrip(tif, strip, buf, (tsize_t) -1); + _TIFFfree(buf); + TIFFClose(tif); + } +} +</LISTING></UL> + +Notice how a strip size of <TT>-1</TT> is used; <TT>TIFFReadEncodedStrip</TT> +will calculate the appropriate size in this case. + +<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> +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> +The following is an example of how to read raw strips of data from +a file: + +<UL><LISTING> +#include "tiffio.h" +main() +{ + TIFF* tif = TIFFOpen("myfile.tif", "r"); + if (tif) { + tdata_t buf; + tstrip_t strip; + uint32* bc; + uint32 stripsize; + + TIFFGetField(tif, TIFFTAG_STRIPBYTECOUNTS, &bc); + stripsize = bc[0]; + buf = _TIFFmalloc(stripsize); + for (strip = 0; strip < TIFFNumberOfStrips(tif); strip++) { + if (bc[strip] > stripsize) { + buf = _TIFFrealloc(buf, bc[strip]); + stripsize = bc[strip]; + } + TIFFReadRawStrip(tif, strip, buf, bc[strip]); + } + _TIFFfree(buf); + TIFFClose(tif); + } +} +</LISTING></UL> + +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. + +<A NAME="Tiles"><P><HR WIDTH=65% ALIGN=right><H3>Tile-oriented Image I/O</H3></A> + +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> +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> +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: + +<UL><LISTING> +main() +{ + TIFF* tif = TIFFOpen("myfile.tif", "r"); + if (tif) { + uint32 imageWidth, imageLength; + uint32 tileWidth, tileLength; + uint32 x, y; + tdata_t buf; + + TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &imageWidth); + TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &imageLength); + TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tileWidth); + TIFFGetField(tif, TIFFTAG_TILELENGTH, &tileLength); + buf = _TIFFmalloc(TIFFTileSize(tif)); + for (y = 0; y < imageLength; y += tileLength) + for (x = 0; x < imageWidth; x += tileWidth) + TIFFReadTile(tif, buf, x, y, 0); + _TIFFfree(buf); + TIFFClose(tif); + } +} +</LISTING></UL> + +(once again, we assume samples are packed contiguously.) + +<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: + +<UL><LISTING> +#include "tiffio.h" +main() +{ + TIFF* tif = TIFFOpen("myfile.tif", "r"); + if (tif) { + tdata_t buf; + ttile_t tile; + + buf = _TIFFmalloc(TIFFTileSize(tif)); + for (tile = 0; tile < TIFFNumberOfTiles(tif); tile++) + TIFFReadEncodedTile(tif, tile, buf, (tsize_t) -1); + _TIFFfree(buf); + TIFFClose(tif); + } +} +</LISTING></UL> + + + +<A NAME="Other"><P><HR WIDTH=65% ALIGN=right><H3>Other Stuff</H3></A> + +<P> +<I>Some other stuff will almost certainly go here...</I> + +<P> +<HR> + +<ADDRESS> +<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>. +Last updated: $Date: 1999-07-27 21:50:27 $ +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/misc.html b/html/misc.html new file mode 100644 index 00000000..b31b02e4 --- /dev/null +++ b/html/misc.html @@ -0,0 +1,95 @@ +<HTML> +<HEAD> +<TITLE> +Acknowledgments and Other Issues +</TITLE> +</HEAD> + +<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 me to give this work away. It +is free. There is no support or guarantee of any sort as to its +operations, correctness, or whatever. If you do anything useful with +all or parts of it you need to honor the copyright notices. I would +also be interested in knowing about it and, hopefully, be acknowledged. + +<BR CLEAR=left> + + +<H2>Acknowledgements</H2> + +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. +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 +</PRE> + +(my apology to anyone that was inadvertently not listed.) + +<H2>Warning</H2> + +It appears that Unisys is actively pursuing copyright control on the +LZW compression algorithm. In particular, users of the LZW compression +within the TIFF framework. For this reason the TIFF 6.0 spec states +that LZW compression is not recommended. It is unclear at this time +what compression algorithm will be used in place of it. I have no idea +what this means to you or to this library. I make no warranty or +guarantees with regard to the LZW support in this library. + + +<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> + +<ADDRESS> +<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>. +Last updated: $Date: 1999-07-27 21:50:27 $ +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/support.html b/html/support.html new file mode 100644 index 00000000..ce2012e5 --- /dev/null +++ b/html/support.html @@ -0,0 +1,684 @@ +<HTML> +<HEAD> +<TITLE> +TIFF 6.0 Specification Coverage +</TITLE> +</HEAD> + +<H1> +<IMG SRC=images/strike.gif WIDTH=128 HEIGHT=100 ALIGN=left HSPACE=6> +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> +<TABLE BORDER CELLPADDING=3> + +<TR> +<TD VALIGN=top> +<I>Core requirements</I> +</TD> +<TD> +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> +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>, +</TD> +</TR> + +<TR> +<TD VALIGN=top><I>Tiled Images</I></TD> +<TD><TT>TileWidth</TT>, + <TT>TileLength</TT>, + <TT>TileOffsets</TT>, + <TT>TileByteCounts</TT> +</TD> +</TR> + +<TD VALIGN=top><I>Image Colorimetry Information</I></TD> +<TD><TT>WhitePoint</TT>, + <TT>PrimaryChromaticities</TT>, + <TT>TransferFunction</TT>, + <TT>ReferenceBlackWhite</TT> +</TD> +</TR> + +<TR> +<TD VALIGN=top><I>Class B for bilevel images</I></TD> +<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)<BR> +</TD> +</TR> + +<TR> +<TD VALIGN=top><I>Class G for grayscale images</I></TD> +<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)<BR> +</TD> + +</TR> +<TR> +<TD VALIGN=top><I>Class P for palette color images</I></TD> +<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> +<TD VALIGN=top><I>Class R for RGB full color images</I></TD> +<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)<BR> +</TD> +</TR> + +<TR> +<TD VALIGN=top><I>Class F for facsimile</I></TD> +<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> + +<TD VALIGN=top><I>Class S for separated images</I></TD> +<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> + +<TD VALIGN=top><I>Class Y for YCbCr images</I></TD> +<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> +<TD VALIGN=top><I>Class "JPEG" for JPEG images (per TTN2)</I></TD> +<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)<BR> +</TD> +</TR> +</TABLE> + +<P> +In addition, the library supports some optional compression algorithms +that are, in some cases, of dubious value. + +<PRE> + Compression = 32766 NeXT 2-bit encoding + Compression = 32809 ThunderScan 4-bit encoding + Compression = 32909 Pixar companded 11-bit ZIP encoding + Compression = 32946 PKZIP-style Deflate encoding (experimental) + Compression = 34676 SGI 32-bit Log Luminance encoding (experimental) + Compression = 34677 SGI 24-bit Log Luminance encoding (experimental) +</PRE> + +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"></TD> +<TD> +<EM> +For more information on the experimental Log Luminance encoding +consult the materials available at +<A HREF=http://www.sgi.com/Technology/pixformat>http://www.sgi.com/Technology/pixformat</A>. +</EM> +</TD> +</TR> +</TABLE> + +<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 WIDTH=100% CELLPADDING=2> +<TR> +<TH ALIGN=left>Tag Name</TH> <TH>Value</TH> <TH ALIGN=center>R/W</TH> <TH ALIGN=left>Library's Use (Comments)</TH> +</TR> +<TR> +<TD><TT>NewSubFileType</TT></TD> +<TD ALIGN=center>254</TD> +<TD ALIGN=center>R/W</TD> +<TD>none (called <TT>SubFileType</TT> in <tiff.h>)</TD> +</TR> +<TR> +<TD><TT>SubFileType</TT></TD> +<TD ALIGN=center>255</TD> +<TD ALIGN=center>R/W</TD> +<TD>none (called <TT>OSubFileType</TT> in <tiff.h>)</TD> +</TR> +<TR> +<TD><TT>ImageWidth</TT></TD> +<TD ALIGN=center>256</TD> +<TD ALIGN=center>R/W</TD> +<TD>lots</TD> +</TR> +<TR> +<TD><TT>ImageLength</TT></TD> +<TD ALIGN=center>257</TD> +<TD ALIGN=center>R/W</TD> +<TD>lots</TD> +</TR> +<TR> +<TD><TT>BitsPerSample</TT></TD> +<TD ALIGN=center>258</TD> +<TD ALIGN=center>R/W</TD> +<TD>lots</TD> +</TR> +<TR> +<TD><TT>Compression</TT></TD> +<TD ALIGN=center>259</TD> +<TD ALIGN=center>R/W</TD> +<TD>to select appropriate codec</TD> +</TR> +<TR> +<TD><TT>PhotometricInterpretation</TT></TD> +<TD ALIGN=center>262</TD> +<TD ALIGN=center>R/W</TD> +<TD>lots</TD> +</TR> +<TR> +<TD><TT>Thresholding</TT></TD> +<TD ALIGN=center>263</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>CellWidth</TT></TD> +<TD ALIGN=center>264</TD> +<TD> </TD> +<TD>parsed but ignored</TD> +</TR> +<TR> +<TD><TT>CellLength</TT></TD> +<TD ALIGN=center>265</TD> +<TD> </TD> +<TD>parsed but ignored</TD> +</TR> +<TR> +<TD><TT>FillOrder</TT></TD> +<TD ALIGN=center>266</TD> +<TD ALIGN=center>R/W</TD> +<TD>control bit order</TD> +</TR> +<TR> +<TD><TT>DocumentName</TT></TD> +<TD ALIGN=center>269</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>ImageDescription</TT></TD> +<TD ALIGN=center>270</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>Make</TT></TD> +<TD ALIGN=center>271</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>Model</TT></TD> +<TD ALIGN=center>272</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>StripOffsets</TT></TD> +<TD ALIGN=center>273</TD> +<TD ALIGN=center>R/W</TD> +<TD>data i/o</TD> +</TR> +<TR> +<TD><TT>Orientation</TT></TD> +<TD ALIGN=center>274</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>SamplesPerPixel</TT></TD> +<TD ALIGN=center>277</TD> +<TD ALIGN=center>R/W</TD> +<TD>lots</TD> +</TR> +<TR> +<TD><TT>RowsPerStrip</TT></TD> +<TD ALIGN=center>278</TD> +<TD ALIGN=center>R/W</TD> +<TD>data i/o</TD> +</TR> +<TR> +<TD><TT>StripByteCounts</TT></TD> +<TD ALIGN=center>279</TD> +<TD ALIGN=center>R/W</TD> +<TD>data i/o</TD> +</TR> +<TR> +<TD><TT>MinSampleValue</TT></TD> +<TD ALIGN=center>280</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>MaxSampleValue</TT></TD> +<TD ALIGN=center>281</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>XResolution</TT></TD> +<TD ALIGN=center>282</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>YResolution</TT></TD> +<TD ALIGN=center>283</TD> +<TD ALIGN=center>R/W</TD> +<TD>used by Group 3 2d encoder</TD> +</TR> +<TR> +<TD><TT>PlanarConfiguration</TT></TD> +<TD ALIGN=center>284</TD> +<TD ALIGN=center>R/W</TD> +<TD>data i/o</TD> +</TR> +<TR> +<TD><TT>PageName</TT></TD> +<TD ALIGN=center>285</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>XPosition</TT></TD> +<TD ALIGN=center>286</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>YPosition</TT></TD> +<TD ALIGN=center>286</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>FreeOffsets</TT></TD> +<TD ALIGN=center>288</TD> +<TD> </TD> +<TD>parsed but ignored</TD> +</TR> +<TR> +<TD><TT>FreeByteCounts</TT></TD> +<TD ALIGN=center>289</TD> +<TD> </TD> +<TD>parsed but ignored</TD> +</TR> +<TR> +<TD><TT>GrayResponseUnit</TT></TD> +<TD ALIGN=center>290</TD> +<TD> </TD> +<TD>parsed but ignored</TD> +</TR> +<TR> +<TD><TT>GrayResponseCurve</TT></TD> +<TD ALIGN=center>291</TD> +<TD> </TD> +<TD>parsed but ignored</TD> +</TR> +<TR> +<TD><TT>Group3Options</TT></TD> +<TD ALIGN=center>292</TD> +<TD ALIGN=center>R/W</TD> +<TD>used by Group 3 codec</TD> +</TR> +<TR> +<TD><TT>Group4Options</TT></TD> +<TD ALIGN=center>293</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>ResolutionUnit</TT></TD> +<TD ALIGN=center>296</TD> +<TD ALIGN=center>R/W</TD> +<TD>used by Group 3 2d encoder</TD> +</TR> +<TR> +<TD><TT>PageNumber</TT></TD> +<TD ALIGN=center>297</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>ColorResponseUnit</TT></TD> +<TD ALIGN=center>300</TD> +<TD> </TD> +<TD>parsed but ignored</TD> +</TR> +<TR> +<TD><TT>TransferFunction</TT></TD> +<TD ALIGN=center>301</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>Software</TT></TD> +<TD ALIGN=center>305</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>DateTime</TT></TD> +<TD ALIGN=center>306</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>Artist</TT></TD> +<TD ALIGN=center>315</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>HostComputer</TT></TD> +<TD ALIGN=center>316</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>Predictor</TT></TD> +<TD ALIGN=center>317</TD> +<TD ALIGN=center>R/W</TD> +<TD>used by LZW codec</TD> +</TR> +<TR> +<TD><TT>WhitePoint</TT></TD> +<TD ALIGN=center>318</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>PrimaryChromacities</TT></TD> +<TD ALIGN=center>319</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>ColorMap</TT></TD> +<TD ALIGN=center>320</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>TileWidth</TT></TD> +<TD ALIGN=center>322</TD> +<TD ALIGN=center>R/W</TD> +<TD>data i/o</TD> +</TR> +<TR> +<TD><TT>TileLength</TT></TD> +<TD ALIGN=center>323</TD> +<TD ALIGN=center>R/W</TD> +<TD>data i/o</TD> +</TR> +<TR> +<TD><TT>TileOffsets</TT></TD> +<TD ALIGN=center>324</TD> +<TD ALIGN=center>R/W</TD> +<TD>data i/o</TD> +</TR> +<TR> +<TD><TT>TileByteCounts</TT></TD> +<TD ALIGN=center>324</TD> +<TD ALIGN=center>R/W</TD> +<TD>data i/o</TD> +</TR> +<TR> +<TD><TT>BadFaxLines</TT></TD> +<TD ALIGN=center>326</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>CleanFaxData</TT></TD> +<TD ALIGN=center>327</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>ConsecutiveBadFaxLines</TT></TD> +<TD ALIGN=center>328</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>SubIFD</TT></TD> +<TD ALIGN=center>330</TD> +<TD ALIGN=center>R/W</TD> +<TD>subimage descriptor support</TD> +</TR> +<TR> +<TD><TT>InkSet</TT></TD> +<TD ALIGN=center>332</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>InkNames</TT></TD> +<TD ALIGN=center>333</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>DotRange</TT></TD> +<TD ALIGN=center>336</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>TargetPrinter</TT></TD> +<TD ALIGN=center>337</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>ExtraSamples</TT></TD> +<TD ALIGN=center>338</TD> +<TD ALIGN=center>R/W</TD> +<TD>lots</TD> +</TR> +<TR> +<TD><TT>SampleFormat</TT></TD> +<TD ALIGN=center>339</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>SMinSampleValue</TT></TD> +<TD ALIGN=center>340</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>SMaxSampleValue</TT></TD> +<TD ALIGN=center>341</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>JPEGTables</TT></TD> +<TD ALIGN=center>347</TD> +<TD ALIGN=center>R/W</TD> +<TD>used by JPEG codec</TD> +</TR> +<TR> +<TD><TT>YCbCrCoefficients</TT></TD> +<TD ALIGN=center>529</TD> +<TD ALIGN=center>R/W</TD> +<TD>used by <TT>TIFFReadRGBAImage</TT> support</TD> +</TR> +<TR> +<TD><TT>YCbCrSubsampling</TT></TD> +<TD ALIGN=center>530</TD> +<TD ALIGN=center>R/W</TD> +<TD>tile/strip size calculations</TD> +</TR> +<TR> +<TD><TT>YCbCrPositioning</TT></TD> +<TD ALIGN=center>531</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>ReferenceBlackWhite</TT></TD> +<TD ALIGN=center>532</TD> +<TD ALIGN=center>R/W</TD> +<TD> </TD> +</TR> +<TR> +<TD><TT>Matteing</TT></TD> +<TD ALIGN=center>32995</TD> +<TD ALIGN=center>R</TD> +<TD>none (obsoleted by <TT>ExtraSamples</TT> tag)</TD> +</TR> +<TR> +<TD><TT>DataType</TT></TD> +<TD ALIGN=center>32996</TD> +<TD ALIGN=center>R</TD> +<TD>none (obsoleted by <TT>SampleFormat</TT> tag)</TD> +</TR> +<TR> +<TD><TT>ImageDepth</TT></TD> +<TD ALIGN=center>32997</TD> +<TD ALIGN=center>R/W</TD> +<TD>tile/strip calculations</TD> +</TR> +<TR> +<TD><TT>TileDepth</TT></TD> +<TD ALIGN=center>32998</TD> +<TD ALIGN=center>R/W</TD> +<TD>tile/strip calculations</TD> +</TR> +<TR> +<TD><TT>StoNits</TT></TD> +<TD ALIGN=center>37439</TD> +<TD ALIGN=center>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> +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> +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> +The JPEG-related tag is specified in +<A HREF=ftp://ftp.sgi.com/graphics/tiff/TTN2.draft.txt.gz>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> + +<ADDRESS> +<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>. +Last updated: $Date: 1999-07-27 21:50:27 $ +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/tools.html b/html/tools.html new file mode 100644 index 00000000..dea1b64c --- /dev/null +++ b/html/tools.html @@ -0,0 +1,178 @@ +<HTML> +<HEAD> +<TITLE> +TIFF Tools Overview +</TITLE> +</HEAD> + +<H1> +<IMG SRC=images/quad.jpg WIDTH=144 HEIGHT=108 ALIGN=left BORDER=1 HSPACE=6> +TIFF Tools Overview +</H1> + +<P> +This software distribution comes with a small collection of programs +for converting non-TIFF format images to TIFF and for manipulating +and interogating 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. + +<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. + + +<P> +<TABLE BORDER CELLPADDING=3> + +<TR> +<TD valign=top WIDTH=10%><TT>tiffgt </TT></TD> +<TD>Display the contents of one or +more TIFF images on a Silicon Graphics system using +the Silicon Graphics IRIS GL. +The software makes extensive use of the <TT>TIFFRGBAImage</TT> +facilities described elsewhere.</TD> +</TR> + +<TR> +<TD valign=top WIDTH=10%><TT>tiffsv</TT></TD> +<TD>A program to save all or part of a screen dump on a Silicon +Graphics system. +As for <TT>tiffgt</TT> this code, while written to use the IRIS GL, +can be easily tailored to other devices.</TD> +</TR> + +</TABLE> + +<H3>Device-independent Programs</H3> + +The remaining programs should be device-independent: + +<P> +<TABLE BORDER CELLPADDING=3> + +<TR> +<TD VALIGN=top WIDTH=10%><TT>tiffinfo</TT></TD> +<TD>Display information about one or more TIFF files.</TD> +</TR> + +<TR> +<TD VALIGN=top WIDTH=10%><TT>tiffdump</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>tiffcp</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>tiff2ps</TT></TD> +<TD>Convert TIFF images to PostScript</TD> +</TR> + +<TR> +<TD VALIGN=top WIDTH=10%><TT>tiffcmp</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>tiff2bw</TT></TD> +<TD>A simple program to convert a color image to grayscale</TD> +</TR> + +<TR> +<TD VALIGN=top WIDTH=10%><TT>ras2tiff</TT></TD> +<TD>A quick hack that converts Sun rasterfile format images to + TIFF -- it's less than complete</TD> +</TR> + +<TR> +<TD VALIGN=top WIDTH=10%><TT>rgb2ycbcr</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>gif2tiff</TT></TD> +<TD>A quick hack that converts GIF 87a format images to TIFF</TD> +</TR> + +<TR> +<TD VALIGN=top WIDTH=10%><TT>ppm2tiff</TT></TD> +<TD>A quick hack that converts PPM format images to TIFF</TD> +</TR> + +<TR> +<TD VALIGN=top WIDTH=10%><TT>fax2tiff</TT></TD> +<TD>Convert raw Group 3 or Group 4 facsimile data to TIFF</TD> +</TR> + +<TR> +<TD VALIGN=top WIDTH=10%><TT>pal2rgb</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>tiffdither</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>tiffsplit</TT></TD> +<TD>Create one or more single-image files from a (possibly) + multi-image file</TD> +</TR> + +<TR> +<TD VALIGN=top WIDTH=10%><TT>fax2ps</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> +<TD VALIGN=top WIDTH=10%><TT>thumbnail</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>tiffmedian</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; it's useful for converting full-color RGB images to 8-bit + color for your friends that have cheapo 8-bit framebuffers.</TD> +</TR> + +<TR> +<TD VALIGN=top WIDTH=10%><TT>sgi2tiff</TT></TD> +<TD>A program to convert SGI image files to TIFF. This + program is only useful on SGI machines as it uses <TT>-limage</TT>.</TD> +</TR> + +</TABLE> + +<P> +Check out the manual pages for details about the above programs. + + +<P> +<HR> + +<ADDRESS> +<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>. +Last updated: $Date: 1999-07-27 21:50:27 $ +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/v3.4beta007.html b/html/v3.4beta007.html new file mode 100644 index 00000000..5a85eeb4 --- /dev/null +++ b/html/v3.4beta007.html @@ -0,0 +1,111 @@ +<HTML> +<HEAD> +<TITLE> +Changes in TIFF v3.4beta007 +</TITLE> +</HEAD> + +<BODY> + +<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: 1999-07-27 21:50:27 $. +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/v3.4beta016.html b/html/v3.4beta016.html new file mode 100644 index 00000000..db629eca --- /dev/null +++ b/html/v3.4beta016.html @@ -0,0 +1,121 @@ +<HTML> +<HEAD> +<TITLE> +Changes in TIFF v3.4beta016 +</TITLE> +</HEAD> + +<BODY> + +<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: 1999-07-27 21:50:27 $. +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/v3.4beta018.html b/html/v3.4beta018.html new file mode 100644 index 00000000..22164e1c --- /dev/null +++ b/html/v3.4beta018.html @@ -0,0 +1,83 @@ +<HTML> +<HEAD> +<TITLE> +Changes in TIFF v3.4beta018 +</TITLE> +</HEAD> + +<BODY> + +<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: 1999-07-27 21:50:27 $. +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/v3.4beta024.html b/html/v3.4beta024.html new file mode 100644 index 00000000..e8486a25 --- /dev/null +++ b/html/v3.4beta024.html @@ -0,0 +1,138 @@ +<HTML> +<HEAD> +<TITLE> +Changes in TIFF v3.4beta024 +</TITLE> +</HEAD> + +<BODY> + +<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: 1999-07-27 21:50:27 $. +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/v3.4beta028.html b/html/v3.4beta028.html new file mode 100644 index 00000000..ddf7fe30 --- /dev/null +++ b/html/v3.4beta028.html @@ -0,0 +1,145 @@ +<HTML> +<HEAD> +<TITLE> +Changes in TIFF v3.4beta028 +</TITLE> +</HEAD> + +<BODY> + +<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: 1999-07-27 21:50:27 $. +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/v3.4beta029.html b/html/v3.4beta029.html new file mode 100644 index 00000000..33d6c084 --- /dev/null +++ b/html/v3.4beta029.html @@ -0,0 +1,85 @@ +<HTML> +<HEAD> +<TITLE> +Changes in TIFF v3.4beta029 +</TITLE> +</HEAD> + +<BODY> + +<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: 1999-07-27 21:50:27 $. +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/v3.4beta031.html b/html/v3.4beta031.html new file mode 100644 index 00000000..346147f0 --- /dev/null +++ b/html/v3.4beta031.html @@ -0,0 +1,93 @@ +<HTML> +<HEAD> +<TITLE> +Changes in TIFF v3.4beta031 +</TITLE> +</HEAD> + +<BODY> + +<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: 1999-07-27 21:50:27 $. +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/v3.4beta032.html b/html/v3.4beta032.html new file mode 100644 index 00000000..719a332a --- /dev/null +++ b/html/v3.4beta032.html @@ -0,0 +1,89 @@ +<HTML> +<HEAD> +<TITLE> +Changes in TIFF v3.4beta032 +</TITLE> +</HEAD> + +<BODY> + +<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: 1999-07-27 21:50:27 $. +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/v3.4beta033.html b/html/v3.4beta033.html new file mode 100644 index 00000000..f33ff057 --- /dev/null +++ b/html/v3.4beta033.html @@ -0,0 +1,81 @@ +<HTML> +<HEAD> +<TITLE> +Changes in TIFF v3.4beta033 +</TITLE> +</HEAD> + +<BODY> + +<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: 1999-07-27 21:50:27 $. +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/v3.4beta034.html b/html/v3.4beta034.html new file mode 100644 index 00000000..06e22e94 --- /dev/null +++ b/html/v3.4beta034.html @@ -0,0 +1,67 @@ +<HTML> +<HEAD> +<TITLE> +Changes in TIFF v3.4beta034 +</TITLE> +</HEAD> + +<BODY> + +<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: 1999-07-27 21:50:27 $. +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/v3.4beta035.html b/html/v3.4beta035.html new file mode 100644 index 00000000..6e1758eb --- /dev/null +++ b/html/v3.4beta035.html @@ -0,0 +1,62 @@ +<HTML> +<HEAD> +<TITLE> +Changes in TIFF v3.4beta035 +</TITLE> +</HEAD> + +<BODY> + +<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: 1999-07-27 21:50:27 $. +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/v3.4beta036.html b/html/v3.4beta036.html new file mode 100644 index 00000000..0ccaaa95 --- /dev/null +++ b/html/v3.4beta036.html @@ -0,0 +1,116 @@ +<HTML> +<HEAD> +<TITLE> +Changes in TIFF v3.4beta036 +</TITLE> +</HEAD> + +<BODY> + +<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: 1999-07-27 21:50:27 $. +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/v3.5.html b/html/v3.5.html new file mode 100644 index 00000000..80428118 --- /dev/null +++ b/html/v3.5.html @@ -0,0 +1,76 @@ +<HTML> +<HEAD> +<TITLE> +Changes in TIFF v3.5 +</TITLE> +</HEAD> + +<BODY BGCOLOR=white> +<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<BR> +<B>Previous Version</B>: <A HREF=v3.4beta037.html>v3.4beta037</A><BR> +<B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com, 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> <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.wizards.dupont.com/magick>ImageMagick</a> convert(1) +utility. +</UL> + +<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR> + +<HR> + +<ADDRESS> +<A HREF="http://fifth.net">Mike Welles</A> / <A HREF="mailto:mike@onshore.com">mike@onshore.com</A> +Last updated $Date: 1999-07-27 21:50:27 $. +</ADDRESS> + +</BODY> +</HTML> diff --git a/html/where_is_sam.html b/html/where_is_sam.html new file mode 100644 index 00000000..5f6a75ad --- /dev/null +++ b/html/where_is_sam.html @@ -0,0 +1,35 @@ +<HTML> +<HEAD> +<TITLE> Where's Sam? </TITLE> +</HEAD> + +<body bgcolor=white> + +<font face="Arial, Helvetica, Sans"> + +This site came to be without the blessing of Sam Leffler. We couldn't +get ahold of him. We really would have liked to have obtained it. + +<p> + +Attempts to track down Sam at SGI were unsuccessful (he moved on +without providing a forwarding address). There were reports of a +sighting at Pixar, but their operators didn't have any record of him. +people.yahoo.com didn't have any current e-mail addresses, and while +Mike did manage to dig up a home number for a Sam Leffler in CA, he +was loathe to call the poor guy at home. So, Sam, if you're reading, +we hope you don't mind us stealing your baby -- it's just that there +was a forked version being shipped with the Imagemagick NT +distribution, and forks are a bad thing. + +<p> + +Since SGI hosted the master ftp site for v3.4beta037, we contacted +them instead, and recieved their permission to assume maintenance, +since there wasn't directly a person it was currently assigned to. + +</font> +</body> +</html> + + |