BitMiracle.LibTiff.Classic.Tiff.newScanlineSize C# (CSharp) Method

newScanlineSize() private method

private newScanlineSize ( ) : int
return int
        internal int newScanlineSize()
        {
            int scanline;
            if (m_dir.td_planarconfig == PlanarConfig.CONTIG)
            {
                if (m_dir.td_photometric == Photometric.YCBCR && !IsUpSampled())
                {
                    FieldValue[] result = GetField(TiffTag.YCBCRSUBSAMPLING);
                    ushort ycbcrsubsampling0 = result[0].ToUShort();
                    ushort ycbcrsubsampling1 = result[1].ToUShort();

                    if (ycbcrsubsampling0 * ycbcrsubsampling1 == 0)
                    {
                        ErrorExt(this, m_clientdata, m_name, "Invalid YCbCr subsampling");
                        return 0;
                    }

                    return ((((m_dir.td_imagewidth + ycbcrsubsampling0 - 1) / ycbcrsubsampling0) * (ycbcrsubsampling0 * ycbcrsubsampling1 + 2) * m_dir.td_bitspersample + 7) / 8) / ycbcrsubsampling1;
                }
                else
                {
                    scanline = multiply(m_dir.td_imagewidth, m_dir.td_samplesperpixel, "TIFFScanlineSize");
                }
            }
            else
            {
                scanline = m_dir.td_imagewidth;
            }

            return howMany8(multiply(scanline, m_dir.td_bitspersample, "TIFFScanlineSize"));
        }
Tiff