public static SwfMatrix ReadMatrix(this ISwfStreamReader reader) { var matrix = SwfMatrix.Identity; var hasScale = reader.ReadBit(); if (hasScale) { var bits = (byte)reader.ReadUnsignedBits(5); matrix.ScaleX = reader.ReadFixedPoint16(bits); matrix.ScaleY = reader.ReadFixedPoint16(bits); } var hasRotate = reader.ReadBit(); if (hasRotate) { var bits = (byte)reader.ReadUnsignedBits(5); matrix.RotateSkew0 = reader.ReadFixedPoint16(bits); matrix.RotateSkew1 = reader.ReadFixedPoint16(bits); } var translateBits = (byte)reader.ReadUnsignedBits(5); matrix.TranslateX = reader.ReadSignedBits(translateBits); matrix.TranslateY = reader.ReadSignedBits(translateBits); reader.AlignToByte(); return(matrix); }