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;
}