protected unsafe override void RenderLine(ISurface src, ISurface dest, Rectangle roi)
        {
            blur_effect.Render(src, dest, roi);
            contrast_effect.Render(dest, dest, roi);

            for (var y = roi.Top; y <= roi.Bottom; ++y)
            {
                var dstPtr = dest.GetPointAddress(roi.Left, y);
                var srcPtr = src.GetPointAddress(roi.Left, y);

                screen_op.Apply(srcPtr, dstPtr, dstPtr, roi.Width);
            }
        }
        public void ScreenBlendOp2()
        {
            var lhs = GetSourceImage("blend1.png");
            var rhs = GetSourceImage("blend2.png");

            var lhs_wrap = new BitmapWrapper(lhs);
            var rhs_wrap = new BitmapWrapper(rhs);

            var op = new ScreenBlendOp();

            op.Apply(rhs_wrap, lhs_wrap);

            Compare(lhs, "screenblend2.png");
        }