public EncodedRectangle Build(QuadNode node, VncHost.Encoding encoding) { int[] pixels = node.NodeData; EncodedRectangle e; switch (encoding) { case VncHost.Encoding.RawEncoding: e = new RawRectangle(rfb, framebuffer, pixels, node.Bounds); break; case VncHost.Encoding.CopyRectEncoding: e = new CopyRectRectangle(rfb, framebuffer, node.Bounds); break; case VncHost.Encoding.RreEncoding: e = new RreRectangle(rfb, framebuffer, pixels, node.Bounds); break; case VncHost.Encoding.CoRreEncoding: e = new CoRreRectangle(rfb, framebuffer, pixels, node.Bounds); break; case VncHost.Encoding.HextileEncoding: e = new HextileRectangle(rfb, framebuffer, pixels, node.Bounds); break; case VncHost.Encoding.ZrleEncoding: e = new ZrleRectangle(rfb, framebuffer, pixels, node.Bounds); break; case VncHost.Encoding.ZlibEncoding: e = new ZlibRectangle(rfb, framebuffer, pixels, node.Bounds); break; default: // Sanity check throw new Exception("Unsupported Encoding Format received: " + encoding + "."); } return e; }
/// <summary> /// Creates an object type derived from EncodedRectangle, based on the value of encoding. /// </summary> /// <param name="rectangle">A Rectangle object defining the bounds of the rectangle to be created</param> /// <param name="encoding">An Integer indicating the encoding type to be used for this rectangle. Used to determine the type of EncodedRectangle to create.</param> /// <returns></returns> public EncodedRectangle Build(Rectangle rectangle, RfbProtocol.Encoding encoding) { EncodedRectangle e = null; int[] pixels = null; //Bitmap bmp = PixelGrabber.CreateScreenCapture(rectangle); if (framebuffer.ProcessFrameRaw != null) { pixels = framebuffer.ProcessFrameRaw(); } else { Bitmap bmp = new Bitmap(rectangle.Width, rectangle.Height); Graphics g = Graphics.FromImage(bmp); if (framebuffer.ProcessFrame != null) { framebuffer.ProcessFrame(bmp); } else { g.CopyFromScreen(rectangle.X, rectangle.Y, 0, 0, new Size(rectangle.Width, rectangle.Height)); } pixels = PixelGrabber.GrabPixels(bmp, rectangle.X, rectangle.Y, rectangle.Width, rectangle.Height, bmp.PixelFormat); } switch (encoding) { case RfbProtocol.Encoding.RAW_ENCODING: e = new RawRectangle(rfb, framebuffer, pixels, rectangle); break; case RfbProtocol.Encoding.COPYRECT_ENCODING: e = new CopyRectRectangle(rfb, framebuffer, pixels, rectangle); break; case RfbProtocol.Encoding.RRE_ENCODING: e = new RreRectangle(rfb, framebuffer, pixels, rectangle); break; case RfbProtocol.Encoding.CORRE_ENCODING: e = new CoRreRectangle(rfb, framebuffer, pixels, rectangle); break; case RfbProtocol.Encoding.HEXTILE_ENCODING: e = new HextileRectangle(rfb, framebuffer, pixels, rectangle); break; case RfbProtocol.Encoding.ZRLE_ENCODING: e = new ZrleRectangle(rfb, framebuffer, pixels, rectangle); break; case RfbProtocol.Encoding.ZLIB_ENCODING: e = new ZlibRectangle(rfb, framebuffer, pixels, rectangle); break; default: // Sanity check throw new VncProtocolException("Unsupported Encoding Format received: " + encoding.ToString() + "."); } return e; }
public EncodedRectangle Build(Bitmap bmp,int x, int y, RfbProtocol.Encoding encoding) { EncodedRectangle e = null; int[] pixels = PixelGrabber.GrabPixels(bmp, 0, 0, bmp.Width, bmp.Height, bmp.PixelFormat); Rectangle rect = new Rectangle(x, y, bmp.Width, bmp.Height); switch (encoding) { case RfbProtocol.Encoding.RAW_ENCODING: e = new RawRectangle(rfb, framebuffer, pixels, rect); break; case RfbProtocol.Encoding.COPYRECT_ENCODING: e = new CopyRectRectangle(rfb, framebuffer, pixels, rect); break; case RfbProtocol.Encoding.RRE_ENCODING: e = new RreRectangle(rfb, framebuffer, pixels, rect); break; case RfbProtocol.Encoding.CORRE_ENCODING: e = new CoRreRectangle(rfb, framebuffer, pixels, rect); break; case RfbProtocol.Encoding.HEXTILE_ENCODING: e = new HextileRectangle(rfb, framebuffer, pixels, rect); break; case RfbProtocol.Encoding.ZRLE_ENCODING: e = new ZrleRectangle(rfb, framebuffer, pixels, rect); break; case RfbProtocol.Encoding.ZLIB_ENCODING: e = new ZlibRectangle(rfb, framebuffer, pixels, rect); break; default: // Sanity check throw new VncProtocolException("Unsupported Encoding Format received: " + encoding.ToString() + "."); } return e; }