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 − 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 <tiffio.h></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 −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 "ImageWidth" before writing 1460dcb9ef1SAndrey Kiselevdata</b>. The image’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 "PlanarConfiguration" 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 "ImageLength" 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