Beispiel #1
0
        private void _InternalRender(IVertexSource vertexSource, RGBA_Bytes color)
        {
            if (_clipBuffer != null)
            {
                // DEBUG_saveImageBuffer(_clipBuffer);
                // DEBUG_saveImageBuffer(this.imb);

                IAlphaMask         alphaMask              = new AlphaMaskByteClipped(_clipBuffer, 1, 0);
                AlphaMaskAdaptor   imageAlphaMaskAdaptor  = new AlphaMaskAdaptor(aggGc.DestImage, alphaMask);
                ImageClippingProxy alphaMaskClippingProxy = new ImageClippingProxy(imageAlphaMaskAdaptor);

                var scanlineRenderer = new ScanlineRenderer();
                var rasterizer       = new ScanlineRasterizer();
                var scanlineCache    = new ScanlineCachePacked8();


                VertexSourceApplyTransform trans = new VertexSourceApplyTransform(vertexSource, aggGc.GetTransform());
                rasterizer.add_path(trans);

                scanlineRenderer.render_scanlines_aa_solid(alphaMaskClippingProxy, rasterizer, scanlineCache, color);
                aggGc.DestImage.MarkImageChanged();
            }
            else
            {
                aggGc.Render(vertexSource, color);
            }
        }