Used to read the appropriate number of bytes from the server based on the width of pixels and convert to a GDI+ colour value (i.e., BGRA).
Esempio n. 1
0
		public EncodedRectangle(RfbProtocol rfb, Framebuffer framebuffer, Rectangle rectangle, int encoding)
		{
			this.rfb = rfb;
			this.framebuffer = framebuffer;
			this.rectangle = rectangle;

			//Select appropriate reader
			BinaryReader reader = (encoding == RfbProtocol.ZRLE_ENCODING) ? rfb.ZrleReader : rfb.Reader;

			// Create the appropriate PixelReader depending on screen size and encoding
			switch (framebuffer.BitsPerPixel)
			{
				case 32:
					if (encoding == RfbProtocol.ZRLE_ENCODING)
					{
						preader = new CPixelReader(reader, framebuffer);
					}
					else
					{
						preader = new PixelReader32(reader, framebuffer);
					}
					break;
				case 16:
					preader = new PixelReader16(reader, framebuffer);
					break;
				case 8:
					preader = new PixelReader8(reader, framebuffer, rfb);
					break;
				default:
					throw new ArgumentOutOfRangeException("BitsPerPixel", framebuffer.BitsPerPixel, "Valid VNC Pixel Widths are 8, 16 or 32 bits.");
			}
		}
Esempio n. 2
0
        public EncodedRectangle(RfbProtocol rfb, Framebuffer framebuffer, Rectangle rectangle, int encoding)
        {
            this.rfb         = rfb;
            this.framebuffer = framebuffer;
            this.rectangle   = rectangle;

            //Select appropriate reader
            BinaryReader reader = (encoding == RfbProtocol.ZRLE_ENCODING) ? rfb.ZrleReader : rfb.Reader;

            // Create the appropriate PixelReader depending on screen size and encoding
            switch (framebuffer.BitsPerPixel)
            {
            case 32:
                if (encoding == RfbProtocol.ZRLE_ENCODING)
                {
                    preader = new CPixelReader(reader, framebuffer);
                }
                else
                {
                    preader = new PixelReader32(reader, framebuffer);
                }
                break;

            case 16:
                preader = new PixelReader16(reader, framebuffer);
                break;

            case 8:
                preader = new PixelReader8(reader, framebuffer, rfb);
                break;

            default:
                throw new ArgumentOutOfRangeException("BitsPerPixel", framebuffer.BitsPerPixel, "Valid VNC Pixel Widths are 8, 16 or 32 bits.");
            }
        }