private short fetchDirectory(uint diroff, out TiffDirEntry[] pdir, out uint nextdiroff)
{
const string module = "fetchDirectory";
m_diroff = diroff;
nextdiroff = 0;
short dircount;
TiffDirEntry[] dir = null;
pdir = null;
if (!seekOK(m_diroff))
{
ErrorExt(this, m_clientdata, module,
"{0}: Seek error accessing TIFF directory", m_name);
return 0;
}
if (!readShortOK(out dircount))
{
ErrorExt(this, m_clientdata, module,
"{0}: Can not read TIFF directory count", m_name);
return 0;
}
if ((m_flags & TiffFlags.SWAB) == TiffFlags.SWAB)
SwabShort(ref dircount);
dir = new TiffDirEntry [dircount];
if (!readDirEntryOk(dir, dircount))
{
ErrorExt(this, m_clientdata, module, "{0}: Can not read TIFF directory", m_name);
return 0;
}
// Read offset to next directory for sequential scans.
int temp;
readIntOK(out temp);
nextdiroff = (uint)temp;
if ((m_flags & TiffFlags.SWAB) == TiffFlags.SWAB)
{
temp = (int)nextdiroff;
SwabLong(ref temp);
nextdiroff = (uint)temp;
}
pdir = dir;
return dircount;
}