10dcb9ef1SAndrey Kiselev<!-- Creator     : groff version 1.18.1 -->
2*f14d1a56SAndrey Kiselev<!-- CreationDate: Sat Feb 24 18:37:16 2007 -->
387c5da6fSAndrey Kiselev<html>
487c5da6fSAndrey Kiselev<head>
587c5da6fSAndrey Kiselev<meta name="generator" content="groff -Thtml, see www.gnu.org">
687c5da6fSAndrey Kiselev<meta name="Content-Style" content="text/css">
787c5da6fSAndrey Kiselev<title>TIFFOpen</title>
887c5da6fSAndrey Kiselev</head>
987c5da6fSAndrey Kiselev<body>
1087c5da6fSAndrey Kiselev
1187c5da6fSAndrey Kiselev<h1 align=center>TIFFOpen</h1>
1287c5da6fSAndrey Kiselev<a href="#NAME">NAME</a><br>
1387c5da6fSAndrey Kiselev<a href="#SYNOPSIS">SYNOPSIS</a><br>
1487c5da6fSAndrey Kiselev<a href="#DESCRIPTION">DESCRIPTION</a><br>
1587c5da6fSAndrey Kiselev<a href="#OPTIONS">OPTIONS</a><br>
1687c5da6fSAndrey Kiselev<a href="#BYTE ORDER">BYTE ORDER</a><br>
1787c5da6fSAndrey Kiselev<a href="#RETURN VALUES">RETURN VALUES</a><br>
1887c5da6fSAndrey Kiselev<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
1987c5da6fSAndrey Kiselev<a href="#SEE ALSO">SEE ALSO</a><br>
2087c5da6fSAndrey Kiselev
2187c5da6fSAndrey Kiselev<hr>
2287c5da6fSAndrey Kiselev<a name="NAME"></a>
2387c5da6fSAndrey Kiselev<h2>NAME</h2>
240dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
250dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
260dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
270dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
280dcb9ef1SAndrey Kiselev<td width="8%"></td>
290dcb9ef1SAndrey Kiselev<td width="91%">
300dcb9ef1SAndrey Kiselev<p>TIFFOpen, TIFFFdOpen, TIFFClientOpen &minus; open a
3187c5da6fSAndrey Kiselev<small>TIFF</small> file for reading or writing</p>
320dcb9ef1SAndrey Kiselev</td>
330dcb9ef1SAndrey Kiselev</table>
3487c5da6fSAndrey Kiselev<a name="SYNOPSIS"></a>
3587c5da6fSAndrey Kiselev<h2>SYNOPSIS</h2>
360dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
370dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
380dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
390dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
400dcb9ef1SAndrey Kiselev<td width="8%"></td>
410dcb9ef1SAndrey Kiselev<td width="91%">
420dcb9ef1SAndrey Kiselev<p><b>#include &lt;tiffio.h&gt;</b></p>
430dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
440dcb9ef1SAndrey Kiselev<p><b>TIFF* TIFFOpen(const char *</b><i>filename</i><b>,
450dcb9ef1SAndrey Kiselevconst char *</b><i>mode</i><b>)<br>
4687c5da6fSAndrey KiselevTIFF* TIFFFdOpen(const int</b> <i>fd</i><b>, const char
4787c5da6fSAndrey Kiselev*</b><i>filename</i><b>, const char
4887c5da6fSAndrey Kiselev*</b><i>mode</i><b>)</b></p>
490dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
500dcb9ef1SAndrey Kiselev<p><b>typedef tsize_t (*TIFFReadWriteProc)(thandle_t,
510dcb9ef1SAndrey Kiselevtdata_t, tsize_t);<br>
5287c5da6fSAndrey Kiselevtypedef toff_t (*TIFFSeekProc)(thandle_t, toff_t, int);<br>
5387c5da6fSAndrey Kiselevtypedef int (*TIFFCloseProc)(thandle_t);<br>
5487c5da6fSAndrey Kiselevtypedef toff_t (*TIFFSizeProc)(thandle_t);<br>
5587c5da6fSAndrey Kiselevtypedef int (*TIFFMapFileProc)(thandle_t, tdata_t*,
5687c5da6fSAndrey Kiselevtoff_t*);<br>
5787c5da6fSAndrey Kiselevtypedef void (*TIFFUnmapFileProc)(thandle_t, tdata_t,
5887c5da6fSAndrey Kiselevtoff_t);</b></p>
590dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
600dcb9ef1SAndrey Kiselev<p><b>TIFF* TIFFClientOpen(const char
610dcb9ef1SAndrey Kiselev*</b><i>filename</i><b>, const char *</b><i>mode</i><b>,
620dcb9ef1SAndrey Kiselevthandle_t</b> <i>clientdata</i><b>, TIFFReadWriteProc</b>
6387c5da6fSAndrey Kiselev<i>readproc</i><b>, TIFFReadWriteProc</b>
6487c5da6fSAndrey Kiselev<i>writeproc</i><b>, TIFFSeekProc</b> <i>seekproc</i><b>,
6587c5da6fSAndrey KiselevTIFFCloseProc</b> <i>closeproc</i><b>, TIFFSizeProc</b>
6687c5da6fSAndrey Kiselev<i>sizeproc</i><b>, TIFFMapFileProc</b> <i>mapproc</i><b>,
6787c5da6fSAndrey KiselevTIFFUnmapFileProc</b> <i>unmapproc</i><b>)</b></p>
680dcb9ef1SAndrey Kiselev</td>
690dcb9ef1SAndrey Kiselev</table>
7087c5da6fSAndrey Kiselev<a name="DESCRIPTION"></a>
7187c5da6fSAndrey Kiselev<h2>DESCRIPTION</h2>
720dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
730dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
740dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
750dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
760dcb9ef1SAndrey Kiselev<td width="8%"></td>
770dcb9ef1SAndrey Kiselev<td width="91%">
780dcb9ef1SAndrey Kiselev<p><i>TIFFOpen</i> opens a <small>TIFF</small> file whose
790dcb9ef1SAndrey Kiselevname is <i>filename</i> and returns a handle to be used in
8087c5da6fSAndrey Kiselevsubsequent calls to routines in <i>libtiff</i>. If the open
8187c5da6fSAndrey Kiselevoperation fails, then zero is returned. The <i>mode</i>
8287c5da6fSAndrey Kiselevparameter specifies if the file is to be opened for reading
8387c5da6fSAndrey Kiselev(&lsquo;&lsquo;r&rsquo;&rsquo;), writing
8487c5da6fSAndrey Kiselev(&lsquo;&lsquo;w&rsquo;&rsquo;), or appending
8587c5da6fSAndrey Kiselev(&lsquo;&lsquo;a&rsquo;&rsquo;) and, optionally, whether to
8687c5da6fSAndrey Kiselevoverride certain default aspects of library operation (see
8787c5da6fSAndrey Kiselevbelow). When a file is opened for appending, existing data
8887c5da6fSAndrey Kiselevwill not be touched; instead new data will be written as
8987c5da6fSAndrey Kiselevadditional subfiles. If an existing file is opened for
9087c5da6fSAndrey Kiselevwriting, all previous data is overwritten.</p>
910dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
920dcb9ef1SAndrey Kiselev<p>If a file is opened for reading, the first
930dcb9ef1SAndrey Kiselev<small>TIFF</small> directory in the file is automatically
940dcb9ef1SAndrey Kiselevread (also see <i>TIFFSetDirectory</i>(3TIFF) for reading
950dcb9ef1SAndrey Kiselevdirectories other than the first). If a file is opened for
960dcb9ef1SAndrey Kiselevwriting or appending, a default directory is automatically
970dcb9ef1SAndrey Kiselevcreated for writing subsequent data. This directory has all
980dcb9ef1SAndrey Kiselevthe default values specified in <small>TIFF</small> Revision
990dcb9ef1SAndrey Kiselev6.0: <i>BitsPerSample</i>=1, <i>ThreshHolding</i>=bilevel
1000dcb9ef1SAndrey Kiselevart scan, <i>FillOrder</i>=1 (most significant bit of each
1010dcb9ef1SAndrey Kiselevdata byte is filled first), <i>Orientation</i>=1 (the 0th
1020dcb9ef1SAndrey Kiselevrow represents the visual top of the image, and the 0th
1030dcb9ef1SAndrey Kiselevcolumn represents the visual left hand side),
10487c5da6fSAndrey Kiselev<i>SamplesPerPixel</i>=1, <i>RowsPerStrip</i>=infinity,
10587c5da6fSAndrey Kiselev<i>ResolutionUnit</i>=2 (inches), and <i>Compression</i>=1
10687c5da6fSAndrey Kiselev(no compression). To alter these values, or to define values
10787c5da6fSAndrey Kiselevfor additional fields, <i>TIFFSetField</i>(3TIFF) must be
10887c5da6fSAndrey Kiselevused.</p>
1090dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1100dcb9ef1SAndrey Kiselev<p><i>TIFFFdOpen</i> is like <i>TIFFOpen</i> except that it
1110dcb9ef1SAndrey Kiselevopens a <small>TIFF</small> file given an open file
1120dcb9ef1SAndrey Kiselevdescriptor <i>fd</i>. The file&rsquo;s name and mode must
1130dcb9ef1SAndrey Kiselevreflect that of the open descriptor. The object associated
1140dcb9ef1SAndrey Kiselevwith the file descriptor <b>must support random
1150dcb9ef1SAndrey Kiselevaccess</b>.</p>
1160dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1170dcb9ef1SAndrey Kiselev<p><i>TIFFClientOpen</i> is like <i>TIFFOpen</i> except that
1180dcb9ef1SAndrey Kiselevthe caller supplies a collection of functions that the
1190dcb9ef1SAndrey Kiselevlibrary will use to do <small>UNIX</small> -like I/O
1200dcb9ef1SAndrey Kiselevoperations. The <i>readproc</i> and <i>writeproc</i> are
1210dcb9ef1SAndrey Kiselevcalled to read and write data at the current file position.
1220dcb9ef1SAndrey Kiselev<i>seekproc</i> is called to change the current file
1230dcb9ef1SAndrey Kiselevposition a la <i>lseek</i>(2). <i>closeproc</i> is invoked
1240dcb9ef1SAndrey Kiselevto release any resources associated with an open file.
1250dcb9ef1SAndrey Kiselev<i>sizeproc</i> is invoked to obtain the size in bytes of a
1260dcb9ef1SAndrey Kiselevfile. <i>mapproc</i> and <i>unmapproc</i> are called to map
1270dcb9ef1SAndrey Kiselevand unmap a file&rsquo;s contents in memory; c.f.
1280dcb9ef1SAndrey Kiselev<i>mmap</i>(2) and <i>munmap</i>(2). The <i>clientdata</i>
1290dcb9ef1SAndrey Kiselevparameter is an opaque &lsquo;&lsquo;handle&rsquo;&rsquo;
1300dcb9ef1SAndrey Kiselevpassed to the client-specified routines passed as parameters
1310dcb9ef1SAndrey Kiselevto <i>TIFFClientOpen</i>.</p>
1320dcb9ef1SAndrey Kiselev</td>
1330dcb9ef1SAndrey Kiselev</table>
13487c5da6fSAndrey Kiselev<a name="OPTIONS"></a>
13587c5da6fSAndrey Kiselev<h2>OPTIONS</h2>
1360dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1370dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
1380dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
1390dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
1400dcb9ef1SAndrey Kiselev<td width="8%"></td>
1410dcb9ef1SAndrey Kiselev<td width="91%">
1420dcb9ef1SAndrey Kiselev<p>The open mode parameter can include the following flags
1430dcb9ef1SAndrey Kiselevin addition to the &lsquo;&lsquo;r&rsquo;&rsquo;,
14487c5da6fSAndrey Kiselev&lsquo;&lsquo;w&rsquo;&rsquo;, and
14587c5da6fSAndrey Kiselev&lsquo;&lsquo;a&rsquo;&rsquo; flags. Note however that
14687c5da6fSAndrey Kiselevoption flags must follow the read-write-append
14787c5da6fSAndrey Kiselevspecification.</p>
1480dcb9ef1SAndrey Kiselev</td>
14987c5da6fSAndrey Kiselev</table>
1500dcb9ef1SAndrey Kiselev<!-- TABS -->
1510dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
1520dcb9ef1SAndrey Kiselev       cols="5" cellspacing="0" cellpadding="0">
1530dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
1540dcb9ef1SAndrey Kiselev<td width="10%"></td>
1550dcb9ef1SAndrey Kiselev<td width="2%">
156c3402403SBob Friesenhahn
1570dcb9ef1SAndrey Kiselev<p><b>l</b></p>
1580dcb9ef1SAndrey Kiselev</td>
1590dcb9ef1SAndrey Kiselev<td width="6%"></td>
1600dcb9ef1SAndrey Kiselev<td width="80%">
1610dcb9ef1SAndrey Kiselev
1620dcb9ef1SAndrey Kiselev<p>When creating a new file force information be written
1630dcb9ef1SAndrey Kiselevwith Little-Endian byte order (but see below). By default
1640dcb9ef1SAndrey Kiselevthe library will create new files using the native
1650dcb9ef1SAndrey Kiselev<small>CPU</small> byte order.</p>
1660dcb9ef1SAndrey Kiselev</td>
1670dcb9ef1SAndrey Kiselev<td width="0%">
1680dcb9ef1SAndrey Kiselev</td>
1690dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
1700dcb9ef1SAndrey Kiselev<td width="10%"></td>
1710dcb9ef1SAndrey Kiselev<td width="2%">
1720dcb9ef1SAndrey Kiselev
1730dcb9ef1SAndrey Kiselev<p><b>b</b></p>
1740dcb9ef1SAndrey Kiselev</td>
1750dcb9ef1SAndrey Kiselev<td width="6%"></td>
1760dcb9ef1SAndrey Kiselev<td width="80%">
1770dcb9ef1SAndrey Kiselev
1780dcb9ef1SAndrey Kiselev<p>When creating a new file force information be written
1790dcb9ef1SAndrey Kiselevwith Big-Endian byte order (but see below). By default the
1800dcb9ef1SAndrey Kiselevlibrary will create new files using the native
1810dcb9ef1SAndrey Kiselev<small>CPU</small> byte order.</p>
1820dcb9ef1SAndrey Kiselev</td>
1830dcb9ef1SAndrey Kiselev<td width="0%">
1840dcb9ef1SAndrey Kiselev</td>
1850dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
1860dcb9ef1SAndrey Kiselev<td width="10%"></td>
1870dcb9ef1SAndrey Kiselev<td width="2%">
1880dcb9ef1SAndrey Kiselev
1890dcb9ef1SAndrey Kiselev<p><b>L</b></p>
1900dcb9ef1SAndrey Kiselev</td>
1910dcb9ef1SAndrey Kiselev<td width="6%"></td>
1920dcb9ef1SAndrey Kiselev<td width="80%">
1930dcb9ef1SAndrey Kiselev
1940dcb9ef1SAndrey Kiselev<p>Force image data that is read or written to be treated
1950dcb9ef1SAndrey Kiselevwith bits filled from Least Significant Bit (
1960dcb9ef1SAndrey Kiselev<small>LSB</small> ) to Most Significant Bit (
1970dcb9ef1SAndrey Kiselev<small>MSB</small> ). Note that this is the opposite to the
1980dcb9ef1SAndrey Kiselevway the library has worked from its inception.</p>
1990dcb9ef1SAndrey Kiselev</td>
2000dcb9ef1SAndrey Kiselev<td width="0%">
2010dcb9ef1SAndrey Kiselev</td>
2020dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
2030dcb9ef1SAndrey Kiselev<td width="10%"></td>
2040dcb9ef1SAndrey Kiselev<td width="2%">
2050dcb9ef1SAndrey Kiselev
2060dcb9ef1SAndrey Kiselev<p><b>B</b></p>
2070dcb9ef1SAndrey Kiselev</td>
2080dcb9ef1SAndrey Kiselev<td width="6%"></td>
2090dcb9ef1SAndrey Kiselev<td width="80%">
2100dcb9ef1SAndrey Kiselev
2110dcb9ef1SAndrey Kiselev<p>Force image data that is read or written to be treated
2120dcb9ef1SAndrey Kiselevwith bits filled from Most Significant Bit (
2130dcb9ef1SAndrey Kiselev<small>MSB</small> ) to Least Significant Bit (
2140dcb9ef1SAndrey Kiselev<small>LSB</small> ); this is the default.</p>
2150dcb9ef1SAndrey Kiselev</td>
2160dcb9ef1SAndrey Kiselev<td width="0%">
2170dcb9ef1SAndrey Kiselev</td>
2180dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
2190dcb9ef1SAndrey Kiselev<td width="10%"></td>
2200dcb9ef1SAndrey Kiselev<td width="2%">
2210dcb9ef1SAndrey Kiselev
2220dcb9ef1SAndrey Kiselev<p><b>H</b></p>
2230dcb9ef1SAndrey Kiselev</td>
2240dcb9ef1SAndrey Kiselev<td width="6%"></td>
2250dcb9ef1SAndrey Kiselev<td width="80%">
2260dcb9ef1SAndrey Kiselev
2270dcb9ef1SAndrey Kiselev<p>Force image data that is read or written to be treated
2280dcb9ef1SAndrey Kiselevwith bits filled in the same order as the native
2290dcb9ef1SAndrey Kiselev<small>CPU.</small></p>
2300dcb9ef1SAndrey Kiselev</td>
2310dcb9ef1SAndrey Kiselev<td width="0%">
2320dcb9ef1SAndrey Kiselev</td>
2330dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
2340dcb9ef1SAndrey Kiselev<td width="10%"></td>
2350dcb9ef1SAndrey Kiselev<td width="2%">
2360dcb9ef1SAndrey Kiselev
2370dcb9ef1SAndrey Kiselev<p><b>M</b></p>
2380dcb9ef1SAndrey Kiselev</td>
2390dcb9ef1SAndrey Kiselev<td width="6%"></td>
2400dcb9ef1SAndrey Kiselev<td width="80%">
2410dcb9ef1SAndrey Kiselev
2420dcb9ef1SAndrey Kiselev<p>Enable the use of memory-mapped files for images opened
2430dcb9ef1SAndrey Kiselevread-only. If the underlying system does not support
2440dcb9ef1SAndrey Kiselevmemory-mapped files or if the specific image being opened
2450dcb9ef1SAndrey Kiselevcannot be memory-mapped then the library will fallback to
2460dcb9ef1SAndrey Kiselevusing the normal system interface for reading information.
2470dcb9ef1SAndrey KiselevBy default the library will attempt to use memory-mapped
2480dcb9ef1SAndrey Kiselevfiles.</p>
2490dcb9ef1SAndrey Kiselev</td>
2500dcb9ef1SAndrey Kiselev<td width="0%">
2510dcb9ef1SAndrey Kiselev</td>
2520dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
2530dcb9ef1SAndrey Kiselev<td width="10%"></td>
2540dcb9ef1SAndrey Kiselev<td width="2%">
2550dcb9ef1SAndrey Kiselev
2560dcb9ef1SAndrey Kiselev<p><b>m</b></p>
2570dcb9ef1SAndrey Kiselev</td>
2580dcb9ef1SAndrey Kiselev<td width="6%"></td>
2590dcb9ef1SAndrey Kiselev<td width="80%">
2600dcb9ef1SAndrey Kiselev
2610dcb9ef1SAndrey Kiselev<p>Disable the use of memory-mapped files.</p>
2620dcb9ef1SAndrey Kiselev</td>
2630dcb9ef1SAndrey Kiselev<td width="0%">
2640dcb9ef1SAndrey Kiselev</td>
2650dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
2660dcb9ef1SAndrey Kiselev<td width="10%"></td>
2670dcb9ef1SAndrey Kiselev<td width="2%">
2680dcb9ef1SAndrey Kiselev
2690dcb9ef1SAndrey Kiselev<p><b>C</b></p>
2700dcb9ef1SAndrey Kiselev</td>
2710dcb9ef1SAndrey Kiselev<td width="6%"></td>
2720dcb9ef1SAndrey Kiselev<td width="80%">
2730dcb9ef1SAndrey Kiselev
2740dcb9ef1SAndrey Kiselev<p>Enable the use of &lsquo;&lsquo;strip
2750dcb9ef1SAndrey Kiselevchopping&rsquo;&rsquo; when reading images that are
2760dcb9ef1SAndrey Kiselevcomprised of a single strip or tile of uncompressed data.
2770dcb9ef1SAndrey KiselevStrip chopping is a mechanism by which the library will
2780dcb9ef1SAndrey Kiselevautomatically convert the single-strip image to multiple
2790dcb9ef1SAndrey Kiselevstrips, each of which has about 8 Kilobytes of data. This
2800dcb9ef1SAndrey Kiselevfacility can be useful in reducing the amount of memory used
2810dcb9ef1SAndrey Kiselevto read an image because the library normally reads each
2820dcb9ef1SAndrey Kiselevstrip in its entirety. Strip chopping does however alter the
2830dcb9ef1SAndrey Kiselevapparent contents of the image because when an image is
2840dcb9ef1SAndrey Kiselevdivided into multiple strips it looks as though the
2850dcb9ef1SAndrey Kiselevunderlying file contains multiple separate strips. Finally,
2860dcb9ef1SAndrey Kiselevnote that default handling of strip chopping is a
2870dcb9ef1SAndrey Kiselevcompile-time configuration parameter. The default behaviour,
2880dcb9ef1SAndrey Kiselevfor backwards compatibility, is to enable strip
2890dcb9ef1SAndrey Kiselevchopping.</p>
2900dcb9ef1SAndrey Kiselev</td>
2910dcb9ef1SAndrey Kiselev<td width="0%">
2920dcb9ef1SAndrey Kiselev</td>
2930dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
2940dcb9ef1SAndrey Kiselev<td width="10%"></td>
2950dcb9ef1SAndrey Kiselev<td width="2%">
2960dcb9ef1SAndrey Kiselev
2970dcb9ef1SAndrey Kiselev<p><b>c</b></p>
2980dcb9ef1SAndrey Kiselev</td>
2990dcb9ef1SAndrey Kiselev<td width="6%"></td>
3000dcb9ef1SAndrey Kiselev<td width="80%">
3010dcb9ef1SAndrey Kiselev
3020dcb9ef1SAndrey Kiselev<p>Disable the use of strip chopping when reading
3030dcb9ef1SAndrey Kiselevimages.</p>
3040dcb9ef1SAndrey Kiselev</td>
3050dcb9ef1SAndrey Kiselev<td width="0%">
3060dcb9ef1SAndrey Kiselev</td>
3070dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
3080dcb9ef1SAndrey Kiselev<td width="10%"></td>
3090dcb9ef1SAndrey Kiselev<td width="2%">
3100dcb9ef1SAndrey Kiselev
3110dcb9ef1SAndrey Kiselev<p><b>h</b></p>
3120dcb9ef1SAndrey Kiselev</td>
3130dcb9ef1SAndrey Kiselev<td width="6%"></td>
3140dcb9ef1SAndrey Kiselev<td width="80%">
3150dcb9ef1SAndrey Kiselev
3160dcb9ef1SAndrey Kiselev<p>Read TIFF header only, do not load the first image
3170dcb9ef1SAndrey Kiselevdirectory. That could be useful in case of the broken first
3180dcb9ef1SAndrey Kiselevdirectory. We can open the file and proceed to the other
3190dcb9ef1SAndrey Kiselevdirectories.</p>
3200dcb9ef1SAndrey Kiselev</td>
3210dcb9ef1SAndrey Kiselev<td width="0%">
3220dcb9ef1SAndrey Kiselev</td>
3230dcb9ef1SAndrey Kiselev</table>
32487c5da6fSAndrey Kiselev<a name="BYTE ORDER"></a>
32587c5da6fSAndrey Kiselev<h2>BYTE ORDER</h2>
3260dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
3270dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
3280dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
3290dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
3300dcb9ef1SAndrey Kiselev<td width="8%"></td>
3310dcb9ef1SAndrey Kiselev<td width="91%">
3320dcb9ef1SAndrey Kiselev<p>The <small>TIFF</small> specification (<b>all
3330dcb9ef1SAndrey Kiselevversions</b>) states that compliant readers <i>must be
3340dcb9ef1SAndrey Kiselevcapable of reading images written in either byte order</i>.
3350dcb9ef1SAndrey KiselevNonetheless some software that claims to support the reading
3360dcb9ef1SAndrey Kiselevof <small>TIFF</small> images is incapable of reading images
3370dcb9ef1SAndrey Kiselevin anything but the native <small>CPU</small> byte order on
33887c5da6fSAndrey Kiselevwhich the software was written. (Especially notorious are
33987c5da6fSAndrey Kiselevapplications written to run on Intel-based machines.) By
34087c5da6fSAndrey Kiselevdefault the library will create new files with the native
34187c5da6fSAndrey Kiselevbyte-order of the <small>CPU</small> on which the
34287c5da6fSAndrey Kiselevapplication is run. This ensures optimal performance and is
34387c5da6fSAndrey Kiselevportable to any application that conforms to the TIFF
34487c5da6fSAndrey Kiselevspecification. To force the library to use a specific
34587c5da6fSAndrey Kiselevbyte-order when creating a new file the
34687c5da6fSAndrey Kiselev&lsquo;&lsquo;b&rsquo;&rsquo; and
34787c5da6fSAndrey Kiselev&lsquo;&lsquo;l&rsquo;&rsquo; option flags may be included
34887c5da6fSAndrey Kiselevin the call to open a file; for example,
34987c5da6fSAndrey Kiselev&lsquo;&lsquo;wb&rsquo;&rsquo; or
35087c5da6fSAndrey Kiselev&lsquo;&lsquo;wl&rsquo;&rsquo;.</p>
3510dcb9ef1SAndrey Kiselev</td>
3520dcb9ef1SAndrey Kiselev</table>
35387c5da6fSAndrey Kiselev<a name="RETURN VALUES"></a>
35487c5da6fSAndrey Kiselev<h2>RETURN VALUES</h2>
3550dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
3560dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
3570dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
3580dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
3590dcb9ef1SAndrey Kiselev<td width="8%"></td>
3600dcb9ef1SAndrey Kiselev<td width="91%">
3610dcb9ef1SAndrey Kiselev<p>Upon successful completion <i>TIFFOpen</i>,
3620dcb9ef1SAndrey Kiselev<i>TIFFFdOpen</i>, and <i>TIFFClientOpen</i> return a
3630dcb9ef1SAndrey Kiselev<small>TIFF</small> pointer. Otherwise, NULL is
3640dcb9ef1SAndrey Kiselevreturned.</p>
3650dcb9ef1SAndrey Kiselev</td>
3660dcb9ef1SAndrey Kiselev</table>
36787c5da6fSAndrey Kiselev<a name="DIAGNOSTICS"></a>
36887c5da6fSAndrey Kiselev<h2>DIAGNOSTICS</h2>
3690dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
3700dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
3710dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
3720dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
3730dcb9ef1SAndrey Kiselev<td width="8%"></td>
3740dcb9ef1SAndrey Kiselev<td width="91%">
3750dcb9ef1SAndrey Kiselev<p>All error messages are directed to the
3760dcb9ef1SAndrey Kiselev<i>TIFFError</i>(3TIFF) routine. Likewise, warning messages
3770dcb9ef1SAndrey Kiselevare directed to the <i>TIFFWarning</i>(3TIFF) routine.</p>
3780dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
3790dcb9ef1SAndrey Kiselev<p><b>&quot;%s&quot;: Bad mode</b>. The specified
3800dcb9ef1SAndrey Kiselev<i>mode</i> parameter was not one of
3810dcb9ef1SAndrey Kiselev&lsquo;&lsquo;r&rsquo;&rsquo; (read),
38287c5da6fSAndrey Kiselev&lsquo;&lsquo;w&rsquo;&rsquo; (write), or
38387c5da6fSAndrey Kiselev&lsquo;&lsquo;a&rsquo;&rsquo; (append).</p>
3840dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
3850dcb9ef1SAndrey Kiselev<p><b>%s: Cannot open</b>. <i>TIFFOpen</i>() was unable to
3860dcb9ef1SAndrey Kiselevopen the specified filename for read/writing.</p>
3870dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
3880dcb9ef1SAndrey Kiselev<p><b>Cannot read TIFF header</b>. An error occurred while
3890dcb9ef1SAndrey Kiselevattempting to read the header information.</p>
3900dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
3910dcb9ef1SAndrey Kiselev<p><b>Error writing TIFF header</b>. An error occurred while
3920dcb9ef1SAndrey Kiselevwriting the default header information for a new file.</p>
3930dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
3940dcb9ef1SAndrey Kiselev<p><b>Not a TIFF file, bad magic number %d (0x%x)</b>. The
3950dcb9ef1SAndrey Kiselevmagic number in the header was not (hex) 0x4d4d or (hex)
3960dcb9ef1SAndrey Kiselev0x4949.</p>
3970dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
3980dcb9ef1SAndrey Kiselev<p><b>Not a TIFF file, bad version number %d (0x%x)</b>. The
3990dcb9ef1SAndrey Kiselevversion field in the header was not 42 (decimal).</p>
4000dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
4010dcb9ef1SAndrey Kiselev<p><b>Cannot append to file that has opposite byte
4020dcb9ef1SAndrey Kiselevordering</b>. A file with a byte ordering opposite to the
4030dcb9ef1SAndrey Kiselevnative byte ordering of the current machine was opened for
4040dcb9ef1SAndrey Kiselevappending (&lsquo;&lsquo;a&rsquo;&rsquo;). This is a
4050dcb9ef1SAndrey Kiselevlimitation of the library.</p>
4060dcb9ef1SAndrey Kiselev</td>
4070dcb9ef1SAndrey Kiselev</table>
40887c5da6fSAndrey Kiselev<a name="SEE ALSO"></a>
40987c5da6fSAndrey Kiselev<h2>SEE ALSO</h2>
4100dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
4110dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
4120dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
4130dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
4140dcb9ef1SAndrey Kiselev<td width="8%"></td>
4150dcb9ef1SAndrey Kiselev<td width="91%">
4160dcb9ef1SAndrey Kiselev<p><i>libtiff</i>(3TIFF), <i>TIFFClose</i>(3TIFF)</p>
4170dcb9ef1SAndrey Kiselev</td>
4180dcb9ef1SAndrey Kiselev</table>
41987c5da6fSAndrey Kiselev<hr>
42087c5da6fSAndrey Kiselev</body>
42187c5da6fSAndrey Kiselev</html>
422