10dcb9ef1SAndrey Kiselev<!-- Creator     : groff version 1.18.1 -->
2f14d1a56SAndrey Kiselev<!-- CreationDate: Sat Feb 24 18:37:18 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>TIFFWriteScanline</title>
887c5da6fSAndrey Kiselev</head>
987c5da6fSAndrey Kiselev<body>
1087c5da6fSAndrey Kiselev
1187c5da6fSAndrey Kiselev<h1 align=center>TIFFWriteScanline</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="#NOTES">NOTES</a><br>
1687c5da6fSAndrey Kiselev<a href="#RETURN VALUES">RETURN VALUES</a><br>
1787c5da6fSAndrey Kiselev<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
1887c5da6fSAndrey Kiselev<a href="#BUGS">BUGS</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>TIFFWriteScanline &minus; write a scanline to an open
310dcb9ef1SAndrey Kiselev<small>TIFF</small> file</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>int TIFFWriteScanline(TIFF *</b><i>tif</i><b>,
450dcb9ef1SAndrey Kiselevtdata_t</b> <i>buf</i><b>, uint32</b> <i>row</i><b>,
460dcb9ef1SAndrey Kiselevtsample_t</b> <i>sample</i><b>)</b></p>
470dcb9ef1SAndrey Kiselev</td>
480dcb9ef1SAndrey Kiselev</table>
4987c5da6fSAndrey Kiselev<a name="DESCRIPTION"></a>
5087c5da6fSAndrey Kiselev<h2>DESCRIPTION</h2>
510dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
520dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
530dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
540dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
550dcb9ef1SAndrey Kiselev<td width="8%"></td>
560dcb9ef1SAndrey Kiselev<td width="91%">
570dcb9ef1SAndrey Kiselev<p>Write data to a file at the specified row. The
580dcb9ef1SAndrey Kiselev<i>sample</i> parameter is used only if data are organized
590dcb9ef1SAndrey Kiselevin separate planes (<i>PlanarConfiguration</i>=2). The data
600dcb9ef1SAndrey Kiselevare assumed to be uncompressed and in the native bit- and
610dcb9ef1SAndrey Kiselevbyte-order of the host machine. The data written to the file
620dcb9ef1SAndrey Kiselevis compressed according to the compression scheme of the
630dcb9ef1SAndrey Kiselevcurrent <small>TIFF</small> directory (see further below).
640dcb9ef1SAndrey KiselevIf the current scanline is past the end of the current
650dcb9ef1SAndrey Kiselevsubfile, the <i>ImageLength</i> field is automatically
660dcb9ef1SAndrey Kiselevincreased to include the scanline (except for
6787c5da6fSAndrey Kiselev<i>PlanarConfiguration</i>=2, where the <i>ImageLength</i>
6887c5da6fSAndrey Kiselevcannot be changed once the first data are written). If the
6987c5da6fSAndrey Kiselev<i>ImageLength</i> is increased, the <i>StripOffsets</i> and
7087c5da6fSAndrey Kiselev<i>StripByteCounts</i> fields are similarly enlarged to
7187c5da6fSAndrey Kiselevreflect data written past the previous end of image.</p>
720dcb9ef1SAndrey Kiselev</td>
730dcb9ef1SAndrey Kiselev</table>
7487c5da6fSAndrey Kiselev<a name="NOTES"></a>
7587c5da6fSAndrey Kiselev<h2>NOTES</h2>
760dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
770dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
780dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
790dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
800dcb9ef1SAndrey Kiselev<td width="8%"></td>
810dcb9ef1SAndrey Kiselev<td width="91%">
820dcb9ef1SAndrey Kiselev<p>The library writes encoded data using the native machine
830dcb9ef1SAndrey Kiselevbyte order. Correctly implemented <small>TIFF</small>
840dcb9ef1SAndrey Kiselevreaders are expected to do any necessary byte-swapping to
850dcb9ef1SAndrey Kiselevcorrectly process image data with BitsPerSample greater than
860dcb9ef1SAndrey Kiselev8. The library attempts to hide bit-ordering differences
870dcb9ef1SAndrey Kiselevbetween the image and the native machine by converting data
880dcb9ef1SAndrey Kiselevfrom the native machine order.</p>
890dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
900dcb9ef1SAndrey Kiselev<p>In C++ the <i>sample</i> parameter defaults to 0.</p>
910dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
920dcb9ef1SAndrey Kiselev<p>Once data are written to a file for the current
930dcb9ef1SAndrey Kiselevdirectory, the values of certain tags may not be altered;
940dcb9ef1SAndrey Kiselevsee <i>TIFFSetField</i>(3TIFF) for more information.</p>
950dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
960dcb9ef1SAndrey Kiselev<p>It is not possible to write scanlines to a file that uses
970dcb9ef1SAndrey Kiseleva tiled organization. The routine <i>TIFFIsTiled</i> can be
980dcb9ef1SAndrey Kiselevused to determine if the file is organized as tiles or
990dcb9ef1SAndrey Kiselevstrips.</p>
1000dcb9ef1SAndrey Kiselev</td>
1010dcb9ef1SAndrey Kiselev</table>
10287c5da6fSAndrey Kiselev<a name="RETURN VALUES"></a>
10387c5da6fSAndrey Kiselev<h2>RETURN VALUES</h2>
1040dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1050dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
1060dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
1070dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
1080dcb9ef1SAndrey Kiselev<td width="8%"></td>
1090dcb9ef1SAndrey Kiselev<td width="91%">
1100dcb9ef1SAndrey Kiselev<p><i>TIFFWriteScanline</i> returns &minus;1 if it
1110dcb9ef1SAndrey Kiselevimmediately detects an error and 1 for a successful
1120dcb9ef1SAndrey Kiselevwrite.</p>
1130dcb9ef1SAndrey Kiselev</td>
1140dcb9ef1SAndrey Kiselev</table>
11587c5da6fSAndrey Kiselev<a name="DIAGNOSTICS"></a>
11687c5da6fSAndrey Kiselev<h2>DIAGNOSTICS</h2>
1170dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1180dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
1190dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
1200dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
1210dcb9ef1SAndrey Kiselev<td width="8%"></td>
1220dcb9ef1SAndrey Kiselev<td width="91%">
1230dcb9ef1SAndrey Kiselev<p>All error messages are directed to the
1240dcb9ef1SAndrey Kiselev<i>TIFFError</i>(3TIFF) routine.</p>
1250dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1260dcb9ef1SAndrey Kiselev<p><b>%s: File not open for writing .</b> The file was
1270dcb9ef1SAndrey Kiselevopened for reading, not writing.</p>
1280dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1290dcb9ef1SAndrey Kiselev<p><b>Can not write scanlines to a tiled image</b>. An
1300dcb9ef1SAndrey Kiselevattempt was made to write a scanline to a tiled image. The
1310dcb9ef1SAndrey Kiselevimage is assumed to be organized in tiles because the
1320dcb9ef1SAndrey Kiselev<i>TileWidth</i> and <i>TileLength</i> tags have been set
1330dcb9ef1SAndrey Kiselevwith <i>TIFFSetField</i>(3TIFF).</p>
1340dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1350dcb9ef1SAndrey Kiselev<p><b>Compression algorithm does not support random
1360dcb9ef1SAndrey Kiselevaccess</b>. Data was written in a non-sequential order to a
1370dcb9ef1SAndrey Kiselevfile that uses a compression algorithm and that has
1380dcb9ef1SAndrey Kiselev<i>RowsPerStrip</i> greater than one. That is, data in the
1390dcb9ef1SAndrey Kiselevimage is to be stored in a compressed form, and with
1400dcb9ef1SAndrey Kiselevmultiple rows packed into a strip. In this case, the library
1410dcb9ef1SAndrey Kiselevdoes not support random access to the data. The data should
1420dcb9ef1SAndrey Kiseleveither be written as entire strips, sequentially by rows, or
1430dcb9ef1SAndrey Kiselevthe value of <i>RowsPerStrip</i> should be set to one.</p>
1440dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1450dcb9ef1SAndrey Kiselev<p><b>%s: Must set &quot;ImageWidth&quot; before writing
1460dcb9ef1SAndrey Kiselevdata</b>. The image&rsquo;s width has not be set before the
1470dcb9ef1SAndrey Kiselevfirst write. See <b>TIFFSetField</b>(3TIFF) for information
1480dcb9ef1SAndrey Kiselevon how to do this.</p>
1490dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1500dcb9ef1SAndrey Kiselev<p><b>%s: Must set &quot;PlanarConfiguration&quot; before
1510dcb9ef1SAndrey Kiselevwriting data</b>. The organization of data has not be
1520dcb9ef1SAndrey Kiselevdefined before the first write. See
1530dcb9ef1SAndrey Kiselev<b>TIFFSetField</b>(3TIFF) for information on how to do
15487c5da6fSAndrey Kiselevthis.</p>
1550dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1560dcb9ef1SAndrey Kiselev<p><b>Can not change &quot;ImageLength&quot; when using
1570dcb9ef1SAndrey Kiselevseparate planes</b>. Separate image planes are being used
15887c5da6fSAndrey Kiselev(<i>PlanarConfiguration</i>=2), but the number of rows has
15987c5da6fSAndrey Kiselevnot been specified before the first write. The library
16087c5da6fSAndrey Kiselevsupports the dynamic growth of an image only when data are
16187c5da6fSAndrey Kiselevorganized in a contiguous manner
16287c5da6fSAndrey Kiselev(<i>PlanarConfiguration</i>=1).</p>
1630dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1640dcb9ef1SAndrey Kiselev<p><b>%d: Sample out of range, max %d</b>. The <i>sample</i>
1650dcb9ef1SAndrey Kiselevparameter was greater than the value of the SamplesPerPixel
1660dcb9ef1SAndrey Kiselevtag.</p>
1670dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1680dcb9ef1SAndrey Kiselev<p><b>%s: No space for strip arrays .</b> There was not
1690dcb9ef1SAndrey Kiselevenough space for the arrays that hold strip offsets and byte
1700dcb9ef1SAndrey Kiselevcounts.</p>
1710dcb9ef1SAndrey Kiselev</td>
1720dcb9ef1SAndrey Kiselev</table>
17387c5da6fSAndrey Kiselev<a name="BUGS"></a>
17487c5da6fSAndrey Kiselev<h2>BUGS</h2>
1750dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1760dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
1770dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
1780dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
1790dcb9ef1SAndrey Kiselev<td width="8%"></td>
1800dcb9ef1SAndrey Kiselev<td width="91%">
1810dcb9ef1SAndrey Kiselev<p>Writing subsampled YCbCR data does not work correctly
1820dcb9ef1SAndrey Kiselevbecause, for <i>PlanarConfiguration</i>=2 the size of a
1830dcb9ef1SAndrey Kiselevscanline is not calculated on a per-sample basis, and for
18487c5da6fSAndrey Kiselev<i>PlanarConfiguration</i>=1 the library does not pack the
18587c5da6fSAndrey Kiselevblock-interleaved samples.</p>
1860dcb9ef1SAndrey Kiselev</td>
1870dcb9ef1SAndrey Kiselev</table>
18887c5da6fSAndrey Kiselev<a name="SEE ALSO"></a>
18987c5da6fSAndrey Kiselev<h2>SEE ALSO</h2>
1900dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
1910dcb9ef1SAndrey Kiselev<table width="100%" border=0 rules="none" frame="void"
1920dcb9ef1SAndrey Kiselev       cols="2" cellspacing="0" cellpadding="0">
1930dcb9ef1SAndrey Kiselev<tr valign="top" align="left">
1940dcb9ef1SAndrey Kiselev<td width="8%"></td>
1950dcb9ef1SAndrey Kiselev<td width="91%">
1960dcb9ef1SAndrey Kiselev<p><b>TIFFOpen</b>(3TIFF),
1970776b32dSAndrey Kiselev<b>TIFFWriteEncodedStrip</b>(3TIFF),
1980776b32dSAndrey Kiselev<b>TIFFWriteRawStrip</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
1990dcb9ef1SAndrey Kiselev<!-- INDENTATION -->
2000dcb9ef1SAndrey Kiselev<p>Libtiff library home page:
201*d4dd6cccSBob Friesenhahn<b>http://www.simplesystems.org/libtiff/</b></p>
2020dcb9ef1SAndrey Kiselev</td>
2030dcb9ef1SAndrey Kiselev</table>
20487c5da6fSAndrey Kiselev<hr>
20587c5da6fSAndrey Kiselev</body>
20687c5da6fSAndrey Kiselev</html>
207