private bool writeTransferFunction(ref TiffDirEntry dir)
{
// Check if the table can be written as a single column, or if it
// must be written as 3 columns. Note that we write a 3-column tag
// if there are 2 samples/pixel and a single column of data
// won't suffice--hmm.
int u = m_dir.td_samplesperpixel - m_dir.td_extrasamples;
int ncols = 1;
bool reCheck = false;
int n = 1 << m_dir.td_bitspersample;
if (u < 0 || u > 2)
{
if (Compare(m_dir.td_transferfunction[0], m_dir.td_transferfunction[2], n) != 0)
ncols = 3;
else
reCheck = true;
}
if (u == 2 || reCheck)
{
if (Compare(m_dir.td_transferfunction[0], m_dir.td_transferfunction[1], n) != 0)
ncols = 3;
}
return writeShortTable(TiffTag.TRANSFERFUNCTION, ref dir, ncols, m_dir.td_transferfunction);
}