10dcb9ef1SAndrey Kiselev<!-- Creator     : groff version 1.18.1 -->
2f14d1a56SAndrey Kiselev<!-- CreationDate: Sat Feb 24 18:37:17 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>TIFFRGBAImage</title>
887c5da6fSAndrey Kiselev</head>
987c5da6fSAndrey Kiselev<body>
1087c5da6fSAndrey Kiselev
1187c5da6fSAndrey Kiselev<h1 align=center>TIFFRGBAImage</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="#ALTERNATE RASTER FORMATS">ALTERNATE RASTER FORMATS</a><br>
1687c5da6fSAndrey Kiselev<a href="#SIMULTANEOUS RASTER STORE AND DISPLAY">SIMULTANEOUS RASTER STORE AND DISPLAY</a><br>
1787c5da6fSAndrey Kiselev<a href="#SUPPORTING ADDITIONAL TIFF FORMATS">SUPPORTING ADDITIONAL TIFF FORMATS</a><br>
1887c5da6fSAndrey Kiselev<a href="#NOTES">NOTES</a><br>
1987c5da6fSAndrey Kiselev<a href="#RETURN VALUES">RETURN VALUES</a><br>
2087c5da6fSAndrey Kiselev<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
2187c5da6fSAndrey Kiselev<a href="#SEE ALSO">SEE ALSO</a><br>
2287c5da6fSAndrey Kiselev
2387c5da6fSAndrey Kiselev<hr>
2487c5da6fSAndrey Kiselev<a name="NAME"></a>
2587c5da6fSAndrey Kiselev<h2>NAME</h2>
260dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
270dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
280dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
290dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
300dcb9ef1SAndrey Kiselev<td width="8%"></td>
310dcb9ef1SAndrey Kiselev<td width="91%">
320dcb9ef1SAndrey Kiselev<p>TIFFRGBAImageOK, TIFFRGBAImageBegin, TIFFRGBAImageGet,
330dcb9ef1SAndrey KiselevTIFFRGBAImageEnd &minus; read and decode an image into a
340dcb9ef1SAndrey Kiselevraster</p>
350dcb9ef1SAndrey Kiselev</td>
360dcb9ef1SAndrey Kiselev</table>
3787c5da6fSAndrey Kiselev<a name="SYNOPSIS"></a>
3887c5da6fSAndrey Kiselev<h2>SYNOPSIS</h2>
390dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
400dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
410dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
420dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
430dcb9ef1SAndrey Kiselev<td width="8%"></td>
440dcb9ef1SAndrey Kiselev<td width="91%">
450dcb9ef1SAndrey Kiselev<p><b>#include &lt;tiffio.h&gt;</b></p>
460dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
470dcb9ef1SAndrey Kiselev<p><b>typedef unsigned char TIFFRGBValue; typedef struct
480dcb9ef1SAndrey Kiselev_TIFFRGBAImage TIFFRGBAImage;</b></p>
490dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
500dcb9ef1SAndrey Kiselev<p><b>int TIFFRGBAImageOK(TIFF *</b><i>tif</i><b>, char</b>
5187c5da6fSAndrey Kiselev<i>emsg[1024]</i><b>)<br>
5287c5da6fSAndrey Kiselevint TIFFRGBAImageBegin(TIFFRGBAImage *</b><i>img</i><b>,
5387c5da6fSAndrey KiselevTIFF*</b> <i>tif</i><b>, int</b> <i>stopOnError</i><b>,
5487c5da6fSAndrey Kiselevchar</b> <i>emsg[1024]</i><b>)<br>
5587c5da6fSAndrey Kiselevint TIFFRGBAImageGet(TIFFRGBAImage *</b><i>img</i><b>,
5687c5da6fSAndrey Kiselevuint32*</b> <i>raster</i><b>, uint32</b> <i>width</i> <b>,
5787c5da6fSAndrey Kiselevuint32</b> <i>height</i><b>)<br>
5887c5da6fSAndrey Kiselevvoid TIFFRGBAImageEnd(TIFFRGBAImage
5987c5da6fSAndrey Kiselev*</b><i>img</i><b>)</b></p>
600dcb9ef1SAndrey Kiselev</td>
610dcb9ef1SAndrey Kiselev</table>
6287c5da6fSAndrey Kiselev<a name="DESCRIPTION"></a>
6387c5da6fSAndrey Kiselev<h2>DESCRIPTION</h2>
640dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
650dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
660dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
670dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
680dcb9ef1SAndrey Kiselev<td width="8%"></td>
690dcb9ef1SAndrey Kiselev<td width="91%">
700dcb9ef1SAndrey Kiselev<p>The routines described here provide a high-level
710dcb9ef1SAndrey Kiselevinterface through which <small>TIFF</small> images may be
720dcb9ef1SAndrey Kiselevread into memory. Images may be strip- or tile-based and
730dcb9ef1SAndrey Kiselevhave a variety of different characteristics: bits/sample,
740dcb9ef1SAndrey Kiselevsamples/pixel, photometric, etc. Decoding state is
750dcb9ef1SAndrey Kiselevencapsulated in a <i>TIFFRGBAImage</i> structure making it
760dcb9ef1SAndrey Kiselevpossible to capture state for multiple images and quickly
770dcb9ef1SAndrey Kiselevswitch between them. The target raster format can be
780dcb9ef1SAndrey Kiselevcustomized to a particular application&rsquo;s needs by
790dcb9ef1SAndrey Kiselevinstalling custom routines that manipulate image data
800dcb9ef1SAndrey Kiselevaccording to application requirements.</p>
810dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
820dcb9ef1SAndrey Kiselev<p>The default usage for these routines is: check if an
830dcb9ef1SAndrey Kiselevimage can be processed using <i>TIFFRGBAImageOK</i>,
840dcb9ef1SAndrey Kiselevconstruct a decoder state block using
850dcb9ef1SAndrey Kiselev<i>TIFFRGBAImageBegin</i>, read and decode an image into a
860dcb9ef1SAndrey Kiselevtarget raster using <i>TIFFRGBAImageGet</i>, and then
870dcb9ef1SAndrey Kiselevrelease resources using <i>TIFFRGBAImageEnd</i>.
8887c5da6fSAndrey Kiselev<i>TIFFRGBAImageGet</i> can be called multiple times to
8987c5da6fSAndrey Kiselevdecode an image using different state parameters. If
9087c5da6fSAndrey Kiselevmultiple images are to be displayed and there is not enough
9187c5da6fSAndrey Kiselevspace for each of the decoded rasters, multiple state blocks
9287c5da6fSAndrey Kiselevcan be managed and then calls can be made to
9387c5da6fSAndrey Kiselev<i>TIFFRGBAImageGet</i> as needed to display an image.</p>
940dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
950dcb9ef1SAndrey Kiselev<p>The generated raster is assumed to be an array of
960dcb9ef1SAndrey Kiselev<i>width</i> times <i>height</i> 32-bit entries, where
970dcb9ef1SAndrey Kiselev<i>width</i> must be less than or equal to the width of the
980dcb9ef1SAndrey Kiselevimage (<i>height</i> may be any non-zero size). If the
990dcb9ef1SAndrey Kiselevraster dimensions are smaller than the image, the image data
1000dcb9ef1SAndrey Kiselevis cropped to the raster bounds. If the raster height is
1010dcb9ef1SAndrey Kiselevgreater than that of the image, then the image data are
1020dcb9ef1SAndrey Kiselevplaced in the lower part of the raster. (Note that the
1030dcb9ef1SAndrey Kiselevraster is assume to be organized such that the pixel at
1040dcb9ef1SAndrey Kiselevlocation (<i>x</i>,<i>y</i>) is
10587c5da6fSAndrey Kiselev<i>raster</i>[<i>y</i>*<i>width</i>+<i>x</i>]; with the
10687c5da6fSAndrey Kiselevraster origin in the <b>lower-left</b> hand corner.)</p>
1070dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1080dcb9ef1SAndrey Kiselev<p>Raster pixels are 8-bit packed red, green, blue, alpha
1090dcb9ef1SAndrey Kiselevsamples. The macros <i>TIFFGetR</i>, <i>TIFFGetG</i>,
1100dcb9ef1SAndrey Kiselev<i>TIFFGetB</i>, and <i>TIFFGetA</i> should be used to
1110dcb9ef1SAndrey Kiselevaccess individual samples. Images without Associated Alpha
1120dcb9ef1SAndrey Kiselevmatting information have a constant Alpha of 1.0 (255).</p>
1130dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1140dcb9ef1SAndrey Kiselev<p><i>TIFFRGBAImageGet</i> converts non-8-bit images by
1150dcb9ef1SAndrey Kiselevscaling sample values. Palette, grayscale, bilevel,
1160dcb9ef1SAndrey Kiselev<small>CMYK</small> , and YCbCr images are converted to
1170dcb9ef1SAndrey Kiselev<small>RGB</small> transparently. Raster pixels are returned
1180dcb9ef1SAndrey Kiselevuncorrected by any colorimetry information present in the
1190dcb9ef1SAndrey Kiselevdirectory.</p>
1200dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1210dcb9ef1SAndrey Kiselev<p>The parameter <i>stopOnError</i> specifies how to act if
1220dcb9ef1SAndrey Kiselevan error is encountered while reading the image. If
1230dcb9ef1SAndrey Kiselev<i>stopOnError</i> is non-zero, then an error will terminate
1240dcb9ef1SAndrey Kiselevthe operation; otherwise <i>TIFFRGBAImageGet</i> will
1250dcb9ef1SAndrey Kiselevcontinue processing data until all the possible data in the
1260dcb9ef1SAndrey Kiselevimage have been requested.</p>
1270dcb9ef1SAndrey Kiselev</td>
1280dcb9ef1SAndrey Kiselev</table>
12987c5da6fSAndrey Kiselev<a name="ALTERNATE RASTER FORMATS"></a>
13087c5da6fSAndrey Kiselev<h2>ALTERNATE RASTER FORMATS</h2>
1310dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1320dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
1330dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
1340dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
1350dcb9ef1SAndrey Kiselev<td width="8%"></td>
1360dcb9ef1SAndrey Kiselev<td width="91%">
1370dcb9ef1SAndrey Kiselev<p>To use the core support for reading and processing
1380dcb9ef1SAndrey Kiselev<small>TIFF</small> images, but write the resulting raster
1390dcb9ef1SAndrey Kiselevdata in a different format one need only override the
1400dcb9ef1SAndrey Kiselev&lsquo;&lsquo;<i>put methods</i>&rsquo;&rsquo; used to store
1410dcb9ef1SAndrey Kiselevraster data. These methods are are defined in the
1420dcb9ef1SAndrey Kiselev<i>TIFFRGBAImage</i> structure and initially setup by
1430dcb9ef1SAndrey Kiselev<i>TIFFRGBAImageBegin</i> to point to routines that pack
1440dcb9ef1SAndrey Kiselevraster data in the default <small>ABGR</small> pixel format.
1450dcb9ef1SAndrey KiselevTwo different routines are used according to the physical
1460dcb9ef1SAndrey Kiselevorganization of the image data in the file:
1470dcb9ef1SAndrey Kiselev<i>PlanarConfiguration</i>=1 (packed samples), and
1480dcb9ef1SAndrey Kiselev<i>PlanarConfiguration</i>=2 (separated samples). Note that
1490dcb9ef1SAndrey Kiselevthis mechanism can be used to transform the data before
1500dcb9ef1SAndrey Kiselevstoring it in the raster. For example one can convert data
1510dcb9ef1SAndrey Kiselevto colormap indices for display on a colormap display.</p>
1520dcb9ef1SAndrey Kiselev</td>
1530dcb9ef1SAndrey Kiselev</table>
15487c5da6fSAndrey Kiselev<a name="SIMULTANEOUS RASTER STORE AND DISPLAY"></a>
15587c5da6fSAndrey Kiselev<h2>SIMULTANEOUS RASTER STORE AND DISPLAY</h2>
1560dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1570dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
1580dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
1590dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
1600dcb9ef1SAndrey Kiselev<td width="8%"></td>
1610dcb9ef1SAndrey Kiselev<td width="91%">
1620dcb9ef1SAndrey Kiselev<p>It is simple to display an image as it is being read into
1630dcb9ef1SAndrey Kiselevmemory by overriding the put methods as described above for
1640dcb9ef1SAndrey Kiselevsupporting alternate raster formats. Simply keep a reference
1650dcb9ef1SAndrey Kiselevto the default put methods setup by
1660dcb9ef1SAndrey Kiselev<i>TIFFRGBAImageBegin</i> and then invoke them before or
1670dcb9ef1SAndrey Kiselevafter each display operation. For example, the
1680dcb9ef1SAndrey Kiselev<i>tiffgt</i>(1) utility uses the following put method to
1690dcb9ef1SAndrey Kiselevupdate the display as the raster is being filled:</p>
1700dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1710dcb9ef1SAndrey Kiselev<pre>static void
17287c5da6fSAndrey KiselevputContigAndDraw(TIFFRGBAImage* img, uint32* raster,
17387c5da6fSAndrey Kiselev    uint32 x, uint32 y, uint32 w, uint32 h,
17487c5da6fSAndrey Kiselev    int32 fromskew, int32 toskew,
17587c5da6fSAndrey Kiselev    unsigned char* cp)
17687c5da6fSAndrey Kiselev{
17787c5da6fSAndrey Kiselev    (*putContig)(img, raster, x, y, w, h, fromskew, toskew, cp);
17887c5da6fSAndrey Kiselev    if (x+w == width) {
17987c5da6fSAndrey Kiselev     w = width;
18087c5da6fSAndrey Kiselev     if (img-&gt;orientation == ORIENTATION_TOPLEFT)
18187c5da6fSAndrey Kiselev         lrectwrite(0, y-(h-1), w-1, y, raster-x-(h-1)*w);
18287c5da6fSAndrey Kiselev     else
18387c5da6fSAndrey Kiselev         lrectwrite(0, y, w-1, y+h-1, raster);
18487c5da6fSAndrey Kiselev    }
1850dcb9ef1SAndrey Kiselev}
1860dcb9ef1SAndrey Kiselev</pre>
1870dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1880dcb9ef1SAndrey Kiselev<p>(the original routine provided by the library is saved in
1890dcb9ef1SAndrey Kiselevthe variable <i>putContig</i>.)</p>
1900dcb9ef1SAndrey Kiselev</td>
1910dcb9ef1SAndrey Kiselev</table>
19287c5da6fSAndrey Kiselev<a name="SUPPORTING ADDITIONAL TIFF FORMATS"></a>
19387c5da6fSAndrey Kiselev<h2>SUPPORTING ADDITIONAL TIFF FORMATS</h2>
1940dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1950dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
1960dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
1970dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
1980dcb9ef1SAndrey Kiselev<td width="8%"></td>
1990dcb9ef1SAndrey Kiselev<td width="91%">
2000dcb9ef1SAndrey Kiselev<p>The <i>TIFFRGBAImage</i> routines support the most
2010dcb9ef1SAndrey Kiselevcommonly encountered flavors of <small>TIFF.</small> It is
2020dcb9ef1SAndrey Kiselevpossible to extend this support by overriding the
20387c5da6fSAndrey Kiselev&lsquo;&lsquo;<i>get method</i>&rsquo;&rsquo; invoked by
20487c5da6fSAndrey Kiselev<i>TIFFRGBAImageGet</i> to read <small>TIFF</small> image
20587c5da6fSAndrey Kiselevdata. Details of doing this are a bit involved, it is best
20687c5da6fSAndrey Kiselevto make a copy of an existing get method and modify it to
20787c5da6fSAndrey Kiselevsuit the needs of an application.</p>
2080dcb9ef1SAndrey Kiselev</td>
2090dcb9ef1SAndrey Kiselev</table>
21087c5da6fSAndrey Kiselev<a name="NOTES"></a>
21187c5da6fSAndrey Kiselev<h2>NOTES</h2>
2120dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2130dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
2140dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
2150dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
2160dcb9ef1SAndrey Kiselev<td width="8%"></td>
2170dcb9ef1SAndrey Kiselev<td width="91%">
2180dcb9ef1SAndrey Kiselev<p>Samples must be either 1, 2, 4, 8, or 16 bits.
2190dcb9ef1SAndrey KiselevColorimetric samples/pixel must be either 1, 3, or 4 (i.e.
2200dcb9ef1SAndrey Kiselev<i>SamplesPerPixel</i> minus <i>ExtraSamples</i>).</p>
2210dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2220dcb9ef1SAndrey Kiselev<p>Palette image colormaps that appear to be incorrectly
2230dcb9ef1SAndrey Kiselevwritten as 8-bit values are automatically scaled to
2240dcb9ef1SAndrey Kiselev16-bits.</p>
2250dcb9ef1SAndrey Kiselev</td>
2260dcb9ef1SAndrey Kiselev</table>
22787c5da6fSAndrey Kiselev<a name="RETURN VALUES"></a>
22887c5da6fSAndrey Kiselev<h2>RETURN VALUES</h2>
2290dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2300dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
2310dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
2320dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
2330dcb9ef1SAndrey Kiselev<td width="8%"></td>
2340dcb9ef1SAndrey Kiselev<td width="91%">
2350dcb9ef1SAndrey Kiselev<p>All routines return 1 if the operation was successful.
2360dcb9ef1SAndrey KiselevOtherwise, 0 is returned if an error was encountered and
2370dcb9ef1SAndrey Kiselev<i>stopOnError</i> is zero.</p>
2380dcb9ef1SAndrey Kiselev</td>
2390dcb9ef1SAndrey Kiselev</table>
24087c5da6fSAndrey Kiselev<a name="DIAGNOSTICS"></a>
24187c5da6fSAndrey Kiselev<h2>DIAGNOSTICS</h2>
2420dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2430dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
2440dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
2450dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
2460dcb9ef1SAndrey Kiselev<td width="8%"></td>
2470dcb9ef1SAndrey Kiselev<td width="91%">
2480dcb9ef1SAndrey Kiselev<p>All error messages are directed to the
2490dcb9ef1SAndrey Kiselev<i>TIFFError</i>(3TIFF) routine.</p>
2500dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2510dcb9ef1SAndrey Kiselev<p><b>Sorry, can not handle %d-bit pictures</b>. The image
2520dcb9ef1SAndrey Kiselevhad <i>BitsPerSample</i> other than 1, 2, 4, 8, or 16.</p>
2530dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2540dcb9ef1SAndrey Kiselev<p><b>Sorry, can not handle %d-channel images</b>. The image
2550dcb9ef1SAndrey Kiselevhad <i>SamplesPerPixel</i> other than 1, 3, or 4.</p>
2560dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2570dcb9ef1SAndrey Kiselev<p><b>Missing needed &quot;PhotometricInterpretation&quot;
2580dcb9ef1SAndrey Kiselevtag</b>. The image did not have a tag that describes how to
2590dcb9ef1SAndrey Kiselevdisplay the data.</p>
2600dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2610dcb9ef1SAndrey Kiselev<p><b>No &quot;PhotometricInterpretation&quot; tag, assuming
2620dcb9ef1SAndrey KiselevRGB</b>. The image was missing a tag that describes how to
2630dcb9ef1SAndrey Kiselevdisplay it, but because it has 3 or 4 samples/pixel, it is
2640dcb9ef1SAndrey Kiselevassumed to be <small>RGB.</small></p>
2650dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2660dcb9ef1SAndrey Kiselev<p><b>No &quot;PhotometricInterpretation&quot; tag, assuming
26787c5da6fSAndrey Kiselevmin-is-black</b>. The image was missing a tag that describes
26887c5da6fSAndrey Kiselevhow to display it, but because it has 1 sample/pixel, it is
26987c5da6fSAndrey Kiselevassumed to be a grayscale or bilevel image.</p>
2700dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2710dcb9ef1SAndrey Kiselev<p><b>No space for photometric conversion table</b>. There
2720dcb9ef1SAndrey Kiselevwas insufficient memory for a table used to convert image
2730dcb9ef1SAndrey Kiselevsamples to 8-bit <small>RGB.</small></p>
2740dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2750dcb9ef1SAndrey Kiselev<p><b>Missing required &quot;Colormap&quot; tag</b>. A
2760dcb9ef1SAndrey KiselevPalette image did not have a required <i>Colormap</i>
2770dcb9ef1SAndrey Kiselevtag.</p>
2780dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2790dcb9ef1SAndrey Kiselev<p><b>No space for tile buffer</b>. There was insufficient
2800dcb9ef1SAndrey Kiselevmemory to allocate an i/o buffer.</p>
2810dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2820dcb9ef1SAndrey Kiselev<p><b>No space for strip buffer</b>. There was insufficient
2830dcb9ef1SAndrey Kiselevmemory to allocate an i/o buffer.</p>
2840dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2850dcb9ef1SAndrey Kiselev<p><b>Can not handle format</b>. The image has a format
2860dcb9ef1SAndrey Kiselev(combination of <i>BitsPerSample</i>,
2870dcb9ef1SAndrey Kiselev<i>SamplesPerPixel</i>, and
28887c5da6fSAndrey Kiselev<i>PhotometricInterpretation</i>) that can not be
28987c5da6fSAndrey Kiselevhandled.</p>
2900dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2910dcb9ef1SAndrey Kiselev<p><b>No space for B&amp;W mapping table</b>. There was
2920dcb9ef1SAndrey Kiselevinsufficient memory to allocate a table used to map
2930dcb9ef1SAndrey Kiselevgrayscale data to <small>RGB.</small></p>
2940dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2950dcb9ef1SAndrey Kiselev<p><b>No space for Palette mapping table</b>. There was
2960dcb9ef1SAndrey Kiselevinsufficient memory to allocate a table used to map data to
2970dcb9ef1SAndrey Kiselev8-bit <small>RGB.</small></p>
2980dcb9ef1SAndrey Kiselev</td>
2990dcb9ef1SAndrey Kiselev</table>
30087c5da6fSAndrey Kiselev<a name="SEE ALSO"></a>
30187c5da6fSAndrey Kiselev<h2>SEE ALSO</h2>
3020dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
3030dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
3040dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
3050dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
3060dcb9ef1SAndrey Kiselev<td width="8%"></td>
3070dcb9ef1SAndrey Kiselev<td width="91%">
3080dcb9ef1SAndrey Kiselev<p><b>TIFFOpen</b>(3TIFF), <b>TIFFReadRGBAImage</b>(3TIFF),
3090776b32dSAndrey Kiselev<b>TIFFReadRGBAImageOriented</b>(3TIFF),
3100776b32dSAndrey Kiselev<b>TIFFReadRGBAStrip</b>(3TIFF),
3110776b32dSAndrey Kiselev<b>TIFFReadRGBATile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
3120dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
3130dcb9ef1SAndrey Kiselev<p>Libtiff library home page:
314*d4dd6cccSBob Friesenhahn<b>http://www.simplesystems.org/libtiff/</b></p>
3150dcb9ef1SAndrey Kiselev</td>
3160dcb9ef1SAndrey Kiselev</table>
31787c5da6fSAndrey Kiselev<hr>
31887c5da6fSAndrey Kiselev</body>
31987c5da6fSAndrey Kiselev</html>
320