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

writeAnyArray() private method

Writes an array of "type" values for a specified tag (i.e. this is a tag which is allowed to have different types, e.g. SMaxSampleType). Internally the data values are represented as double since a double can hold any of the TIFF tag types (yes, this should really be an abstract type tany_t for portability). The data is converted into the specified type in a temporary buffer and then handed off to the appropriate array writer.
private writeAnyArray ( TiffType type, TiffTag tag, TiffDirEntry &dir, int n, double v ) : bool
type TiffType
tag TiffTag
dir TiffDirEntry
n int
v double
return bool
        private bool writeAnyArray(TiffType type, TiffTag tag, ref TiffDirEntry dir, int n, double[] v)
        {
            dir.tdir_tag = tag;
            dir.tdir_type = type;
            dir.tdir_count = n;

            bool failed = false;
            switch (type)
            {
                case TiffType.BYTE:
                case TiffType.SBYTE:
                    {
                        byte[] bp = new byte [n];
                        for (int i = 0; i < n; i++)
                            bp[i] = (byte)v[i];

                        if (!writeByteArray(ref dir, bp))
                            failed = true;
                    }
                    break;
                case TiffType.SHORT:
                case TiffType.SSHORT:
                    {
                        short[] bp = new short [n];
                        for (int i = 0; i < n; i++)
                            bp[i] = (short)v[i];

                        if (!writeShortArray(ref dir, bp))
                            failed = true;
                    }
                    break;
                case TiffType.LONG:
                case TiffType.SLONG:
                    {
                        int[] bp = new int [n];
                        for (int i = 0; i < n; i++)
                            bp[i] = (int)v[i];

                        if (!writeLongArray(ref dir, bp))
                            failed = true;
                    }
                    break;
                case TiffType.FLOAT:
                    {
                        float[] bp = new float [n];
                        for (int i = 0; i < n; i++)
                            bp[i] = (float)v[i];

                        if (!writeFloatArray(ref dir, bp))
                            failed = true;
                    }
                    break;
                case TiffType.DOUBLE:
                    if (!writeDoubleArray(ref dir, v))
                        failed = true;

                    break;

                default:
                    // NOTYPE
                    // ASCII
                    // UNDEFINED
                    // RATIONAL
                    // SRATIONAL
                    failed = true;
                    break;
            }

            return !failed;
        }
Tiff