/* * Copyright (c) 1991-1997 Sam Leffler * Copyright (c) 1991-1997 Silicon Graphics, Inc. * * Permission to use, copy, modify, distribute, and sell this software and * its documentation for any purpose is hereby granted without fee, provided * that (i) the above copyright notices and this permission notice appear in * all copies of the software and related documentation, and (ii) the names of * Sam Leffler and Silicon Graphics may not be used in any advertising or * publicity relating to the software without the specific, prior written * permission of Sam Leffler and Silicon Graphics. * * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. * * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE * OF THIS SOFTWARE. */ /* * TIFF Library. * * Strip-organized Image Support Routines. */ #include "tiffiop.h" /* * Compute which strip a (row,sample) value is in. */ uint32_t TIFFComputeStrip(TIFF *tif, uint32_t row, uint16_t sample) { … } /* * Compute how many strips are in an image. */ uint32_t TIFFNumberOfStrips(TIFF *tif) { … } /* * Compute the # bytes in a variable height, row-aligned strip. */ uint64_t TIFFVStripSize64(TIFF *tif, uint32_t nrows) { … } tmsize_t TIFFVStripSize(TIFF *tif, uint32_t nrows) { … } /* * Compute the # bytes in a raw strip. */ uint64_t TIFFRawStripSize64(TIFF *tif, uint32_t strip) { … } tmsize_t TIFFRawStripSize(TIFF *tif, uint32_t strip) { … } /* * Compute the # bytes in a (row-aligned) strip. * * Note that if RowsPerStrip is larger than the * recorded ImageLength, then the strip size is * truncated to reflect the actual space required * to hold the strip. */ uint64_t TIFFStripSize64(TIFF *tif) { … } tmsize_t TIFFStripSize(TIFF *tif) { … } /* * Compute a default strip size based on the image * characteristics and a requested value. If the * request is <1 then we choose a strip size according * to certain heuristics. */ uint32_t TIFFDefaultStripSize(TIFF *tif, uint32_t request) { … } uint32_t _TIFFDefaultStripSize(TIFF *tif, uint32_t s) { … } /* * Return the number of bytes to read/write in a call to * one of the scanline-oriented i/o routines. Note that * this number may be 1/samples-per-pixel if data is * stored as separate planes. * The ScanlineSize in case of YCbCrSubsampling is defined as the * strip size divided by the strip height, i.e. the size of a pack of vertical * subsampling lines divided by vertical subsampling. It should thus make * sense when multiplied by a multiple of vertical subsampling. */ uint64_t TIFFScanlineSize64(TIFF *tif) { … } tmsize_t TIFFScanlineSize(TIFF *tif) { … } /* * Return the number of bytes required to store a complete * decoded and packed raster scanline (as opposed to the * I/O size returned by TIFFScanlineSize which may be less * if data is store as separate planes). */ uint64_t TIFFRasterScanlineSize64(TIFF *tif) { … } tmsize_t TIFFRasterScanlineSize(TIFF *tif) { … }