Esempio n. 1
0
        private void ParseCopyFilter(int streamId, TightDecoder decoder)
        {
            var size = rectangle.Width * rectangle.Height * 3;

            if (size == 0)
            {
                return;
            }
            var data = ReadBasicData(size, streamId, decoder);

            var tile = new int[rectangle.Width * rectangle.Height];
            var j    = 0;

            for (var y = 0; y < rectangle.Height; y++)
            {
                for (var x = 0; x < rectangle.Width; x++)
                {
                    tile[y * rectangle.Width + x] =
                        (data[j + 2] & 0xFF) | (data[j + 1] << 8) | (data[j] << 16) | (0xFF << 24);
                    j += 3;
                }
            }

            FillRectangle(rectangle, tile);
        }
Esempio n. 2
0
        private byte[] ReadBasicData(int size, int streamId, TightDecoder decoder)
        {
            byte[] data;
            if (size < 12)
            {
                data = rfb.ReadBytes(size);
            }
            else
            {
                data = ReadCompactData();
                decoder.Streams[streamId].SetData(data);
                data = decoder.Streams[streamId].Inflate(size);
            }

            return(data);
        }
Esempio n. 3
0
        private void ParsePaletteFilter(int streamId, TightDecoder decoder)
        {
            var numColors = rfb.ReadByte() + 1;
            var palette   = Array.ConvertAll(rfb.ReadBytes(numColors * 3), Convert.ToInt32);
            var size      = numColors == 2
                ? rectangle.Height * ((rectangle.Width + 7) / 8)
                : rectangle.Width * rectangle.Height;

            if (size == 0)
            {
                return;
            }
            var data = ReadBasicData(size, streamId, decoder);

            if (numColors == 2)
            {
                MonoRect(data, palette);
            }
            else
            {
                PaletteRect(data, palette);
            }
        }
Esempio n. 4
0
 private void ParseGradientFilter(int streamId, TightDecoder decoder)
 {
 }