private void readRGN(System.IO.BinaryReader ehs, bool mainh, int tileIdx, int tpIdx)
{
int comp; // ROI component
//int i; // loop variable
//int tempComp; // Component for
HeaderInfo.RGN ms = hi.NewRGN;
// Lrgn (marker length)
ms.lrgn = ehs.ReadUInt16();
// Read component
ms.crgn = comp = (nComp < 257)?ehs.ReadByte():ehs.ReadUInt16();
if (comp >= nComp)
{
throw new CorruptedCodestreamException("Invalid component " + "index in RGN marker" + comp);
}
// Read type of RGN.(Srgn)
ms.srgn = ehs.ReadByte();
// Check that we can handle it.
if (ms.srgn != CSJ2K.j2k.codestream.Markers.SRGN_IMPLICIT)
throw new CorruptedCodestreamException("Unknown or unsupported " + "Srgn parameter in ROI " + "marker");
if (decSpec.rois == null)
{
// No maxshift spec defined
// Create needed ModuleSpec
decSpec.rois = new MaxShiftSpec(nTiles, nComp, ModuleSpec.SPEC_TYPE_TILE_COMP);
}
// SPrgn
ms.sprgn = ehs.ReadByte();
if (mainh)
{
hi.rgnValue["main_c" + comp] = ms;
decSpec.rois.setCompDef(comp, (System.Object) ms.sprgn);
}
else
{
hi.rgnValue["t" + tileIdx + "_c" + comp] = ms;
decSpec.rois.setTileCompVal(tileIdx, comp, (System.Object) ms.sprgn);
}
// Check marker length
checkMarkerLength(ehs, "RGN marker");
}