コード例 #1
0
        private static Rectangle[] readEncodedDeltaRects(RdpPacket data, int DeltaEntries)
        {
            Rectangle[] rectangleArray = new Rectangle[DeltaEntries];
            int         num            = data.ReadLittleEndian16();
            long        position       = data.Position;
            BitStream   stream         = new BitStream(true);

            stream.Write(data, (DeltaEntries + 1) >> 1);
            Rectangle rectangle = new Rectangle(0, 0, 0, 0);

            for (int i = 0; i < DeltaEntries; i++)
            {
                if (stream.ReadNextBit() == 0)
                {
                    rectangle.X += data.ReadEncodedSignedExtended16();
                }
                if (stream.ReadNextBit() == 0)
                {
                    rectangle.Y += data.ReadEncodedSignedExtended16();
                }
                if (stream.ReadNextBit() == 0)
                {
                    rectangle.Width = data.ReadEncodedSignedExtended16();
                }
                if (stream.ReadNextBit() == 0)
                {
                    rectangle.Height = data.ReadEncodedSignedExtended16();
                }
                rectangleArray[i] = rectangle.Clone();
            }

            long num5 = data.Position - position;

            if (num5 != num)
            {
                throw new Exception("Invalid Encoded Delta Rects!");
            }

            return(rectangleArray);
        }