private bool fetchPerSampleLongs(TiffDirEntry dir, out int pl)
{
pl = 0;
short samples = m_dir.td_samplesperpixel;
bool status = false;
if (checkDirCount(dir, samples))
{
int[] v = new int [dir.tdir_count];
if (fetchLongArray(dir, v))
{
int check_count = dir.tdir_count;
if (samples < check_count)
check_count = samples;
bool failed = false;
for (ushort i = 1; i < check_count; i++)
{
if (v[i] != v[0])
{
ErrorExt(this, m_clientdata, m_name,
"Cannot handle different per-sample values for field \"{0}\"",
FieldWithTag(dir.tdir_tag).Name);
failed = true;
break;
}
}
if (!failed)
{
pl = (int)v[0];
status = true;
}
}
}
return status;
}