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

writeRationalArray() private method

Setup a directory entry of an array of RATIONAL or SRATIONAL and write the associated indirect values.
private writeRationalArray ( TiffDirEntry &dir, float v ) : bool
dir TiffDirEntry
v float
return bool
        private bool writeRationalArray(ref TiffDirEntry dir, float[] v)
        {
            int[] t = new int [2 * dir.tdir_count];
            for (int i = 0; i < dir.tdir_count; i++)
            {
                int sign = 1;
                float fv = v[i];
                if (fv < 0)
                {
                    if (dir.tdir_type == TiffType.RATIONAL)
                    {
                        WarningExt(this, m_clientdata, m_name,
                            "\"{0}\": Information lost writing value ({1:G}) as (unsigned) RATIONAL",
                            FieldWithTag(dir.tdir_tag).Name, fv);
                        fv = 0;
                    }
                    else
                    {
                        fv = -fv;
                        sign = -1;
                    }
                }

                int den = 1;
                if (fv > 0)
                {
                    while (fv < (1L << (31 - 3)) && den < (1L << (31 - 3)))
                    {
                        fv *= 1 << 3;
                        den *= 1 << 3;
                    }
                }

                t[2 * i + 0] = (int)(sign * (fv + 0.5));
                t[2 * i + 1] = den;
            }

            return writeData(ref dir, t, 2 * dir.tdir_count);
        }
Tiff