public EncodedRectangle Build(QuadNode node, VncHost.Encoding encoding)
        {
            var 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);
        }
        public EncodedRectangle Build(Rectangle2 rectangle, int[] pixels, VncHost.Encoding encoding)
        {
            EncodedRectangle e;

            switch (encoding)
            {
            case VncHost.Encoding.RawEncoding:
                e = new RawRectangle(rfb, framebuffer, pixels, rectangle);
                break;

            case VncHost.Encoding.CopyRectEncoding:
                e = new CopyRectRectangle(rfb, framebuffer, rectangle);
                break;

            case VncHost.Encoding.RreEncoding:
                e = new RreRectangle(rfb, framebuffer, pixels, rectangle);
                break;

            case VncHost.Encoding.CoRreEncoding:
                e = new CoRreRectangle(rfb, framebuffer, pixels, rectangle);
                break;

            case VncHost.Encoding.HextileEncoding:
                e = new HextileRectangle(rfb, framebuffer, pixels, rectangle);
                break;

            case VncHost.Encoding.ZrleEncoding:
                e = new ZrleRectangle(rfb, framebuffer, pixels, rectangle);
                break;

            case VncHost.Encoding.ZlibEncoding:
                e = new ZlibRectangle(rfb, framebuffer, pixels, rectangle);
                break;

            default:
                // Sanity check
                throw new Exception("Unsupported Encoding Format received: " + encoding + ".");
            }
            return(e);
        }