static List<PicturePatternDrawLocation> ReadPositions(Stream stream, PictureOpcode opcode, PicturePatternFlags patternFlags, ref byte patternNumber)
{
List<PicturePatternDrawLocation> list = new List<PicturePatternDrawLocation>();
Vector2i position;
ReadPatternNumber(stream, patternFlags, ref patternNumber);
position = ReadAbsoluteCoordinates(stream);
list.Add(new PicturePatternDrawLocation(patternNumber, position));
while (PeekContinue(stream)) {
ReadPatternNumber(stream, patternFlags, ref patternNumber);
switch (opcode) {
case PictureOpcode.DrawRelativePatterns: position = ReadShortRelativeCoordinates(stream, position); break;
case PictureOpcode.DrawAbsolutePatterns: position = ReadAbsoluteCoordinates(stream); break;
case PictureOpcode.DrawRelativeMediumPatterns: position = ReadMediumRelativeCoordinates(stream, position); break;
default: throw new NotSupportedException();
}
list.Add(new PicturePatternDrawLocation(patternNumber, position));
}
return list;
}