public virtual void TryParseShapeRecords(MemoryStream input, TagTypes caller)
{
BitStream bits = new BitStream(input);
this._shapeRecords = new List<ShapeRecord>();
StyleChangeRecord tempSCR = new StyleChangeRecord(this._SwfVersion);
StraightEdgeRecord tempSER = new StraightEdgeRecord(this._SwfVersion);
CurvedEdgeRecord tempCER = new CurvedEdgeRecord(this._SwfVersion);
byte fiveBits = 0;
bool endShapeRecordSeen = false;
int numberOfStyleChanges = 0;
UInt16 localNumFillBits = this._numFillBits;
UInt16 localNumLineBits = this._numLineBits;
do
{
bool typeFlag = (0 != bits.GetBits(1)) ? true : false;
if (typeFlag)
{
bool straightFlag = Convert.ToBoolean(bits.GetBits(1));
if (straightFlag)
{
tempSER = new StraightEdgeRecord(this._SwfVersion);
tempSER.Parse(input, bits);
this._shapeRecords.Add(tempSER);
}
else
{
tempCER = new CurvedEdgeRecord(this._SwfVersion);
tempCER.Parse(input, bits);
this._shapeRecords.Add(tempCER);
}
}
else
{
fiveBits = (byte)bits.GetBits(5);
if (0 == fiveBits)
{
endShapeRecordSeen = true;
}
else
{
tempSCR = new StyleChangeRecord(this._SwfVersion);
tempSCR.Parse(input, bits, fiveBits, caller, ref localNumFillBits, ref localNumLineBits, 0 == numberOfStyleChanges ? true : false);
numberOfStyleChanges += 1;
this._shapeRecords.Add(tempSCR);
}
}
}
while (!endShapeRecordSeen);
bits.Reset();
}