summaryrefslogtreecommitdiff
path: root/doc/functions/TIFFWriteScanline.rst
diff options
context:
space:
mode:
Diffstat (limited to 'doc/functions/TIFFWriteScanline.rst')
-rw-r--r--doc/functions/TIFFWriteScanline.rst124
1 files changed, 124 insertions, 0 deletions
diff --git a/doc/functions/TIFFWriteScanline.rst b/doc/functions/TIFFWriteScanline.rst
new file mode 100644
index 00000000..3ae180b8
--- /dev/null
+++ b/doc/functions/TIFFWriteScanline.rst
@@ -0,0 +1,124 @@
+TIFFWriteScanline
+=================
+
+Synopsis
+--------
+
+.. highlight:: c
+
+::
+
+ #include <tiffio.h>
+
+.. c:function:: int TIFFWriteScanline(TIFF* tif, tdata_t buf, uint32_t row, tsample_t sample)
+
+Description
+-----------
+
+Write data to a file at the specified row. The *sample* parameter is
+used only if data are organized in separate planes
+(``PlanarConfiguration`` = 2).
+The data are assumed to be uncompressed and in the native bit- and
+byte-order of the host machine. The data written to the file is
+compressed according to the compression scheme of the current
+TIFF directory (see further below). If the current scanline is past the
+end of the current subfile, the ``ImageLength`` field is automatically
+increased to include the scanline (except for ``PlanarConfiguration`` = 2,
+where the ``ImageLength`` cannot be changed once the first data are
+written). If the ``ImageLength`` is increased, the ``StripOffsets``
+and ``StripByteCounts`` fields are similarly enlarged to reflect data
+written past the previous end of image.
+
+Notes
+-----
+
+The library writes encoded data using the native machine byte order.
+Correctly implemented TIFF readers are expected to do any necessary
+byte-swapping to correctly process image data with ``BitsPerSample``
+greater than 8. The library attempts to hide bit-ordering differences
+between the image and the native machine by converting data from the
+native machine order.
+
+In C++ the *sample* parameter defaults to 0.
+
+Once data are written to a file for the current directory, the values of
+certain tags may not be altered; see :c:func:`TIFFSetField` for more
+information.
+
+It is not possible to write scanlines to a file that uses a tiled
+organization. The routine :c:func:`TIFFIsTiled` can be used to
+determine if the file is organized as tiles or strips.
+
+Return values
+-------------
+
+:c:func:`TIFFWriteScanline` returns -1 if it immediately detects an
+error and 1 for a successful write.
+
+Diagnostics
+-----------
+
+All error messages are directed to the :c:func:`TIFFError` routine.
+
+``%s: File not open for writing``:
+
+ The file was opened for reading, not writing.
+
+``"Can not write scanlines to a tiled image"``:
+
+ An attempt was made to write a scanline to a tiled image. The image
+ is assumed to be organized in tiles because the ``TileWidth`` and
+ ``TileLength`` tags have been set with :c:func:`TIFFSetField`.
+
+``"Compression algorithm does not support random access"``:
+
+ Data was written in a non-sequential order to a file that uses a
+ compression algorithm and that has ``RowsPerStrip`` greater than one.
+ That is, data in the image is to be stored in a compressed form, and
+ with multiple rows packed into a strip. In this case, the library
+ does not support random access to the data. The data should either be
+ written as entire strips, sequentially by rows, or the value of
+ ``RowsPerStrip`` should be set to one.
+
+``%s: Must set "ImageWidth" before writing data``:
+
+ The image's width has not be set before the first write.
+ See :c:func:`TIFFSetField` for information on how to do this.
+
+``%s: Must set "PlanarConfiguration" before writing data``:
+
+ The organization of data has not be defined before the first write.
+ See :c:func:`TIFFSetField` for information on how to do this.
+
+``Can not change "ImageLength" when using separate planes``:
+
+ Separate image planes are being used (``PlanarConfiguration`` = 2),
+ but the number of rows has not been specified before the first write.
+ The library supports the dynamic growth of an image only when data
+ are organized in a contiguous manner (``PlanarConfiguration`` = 1).
+
+``"%d: Sample out of range, max %d"``:
+
+ The *sample* parameter was greater than the value of the
+ ``SamplesPerPixel`` tag.
+
+``%s: No space for strip arrays``:
+
+ There was not enough space for the arrays that hold strip offsets and
+ byte counts.
+
+Bugs
+----
+
+Writing subsampled YCbCR data does not work correctly because, for
+``PlanarConfiguration`` = 2 the size of a scanline is not calculated on
+a per-sample basis, and for ``PlanarConfiguration`` = 1 the library
+does not pack the block-interleaved samples.
+
+See also
+--------
+
+:doc:`TIFFOpen` (3tiff),
+:doc:`TIFFWriteEncodedStrip` (3tiff),
+:doc:`TIFFWriteRawStrip` (3tiff),
+:doc:`libtiff` (3tiff)