public override ColorBgra Apply(ColorBgra color)
        {
            // Adjust saturation
            var intensity = color.GetIntensityByte();

            color.R = Utility.ClampToByte((intensity * 1024 + (color.R - intensity) * sat_factor) >> 10);
            color.G = Utility.ClampToByte((intensity * 1024 + (color.G - intensity) * sat_factor) >> 10);
            color.B = Utility.ClampToByte((intensity * 1024 + (color.B - intensity) * sat_factor) >> 10);

            var hsvColor = (new RgbColor(color.R, color.G, color.B)).ToHsv();
            int hue      = hsvColor.Hue;

            hue += hue_delta;

            while (hue < 0)
            {
                hue += 360;
            }

            while (hue > 360)
            {
                hue -= 360;
            }

            hsvColor.Hue = hue;

            var rgbColor = hsvColor.ToRgb();
            var newColor = ColorBgra.FromBgr((byte)rgbColor.Blue, (byte)rgbColor.Green, (byte)rgbColor.Red);

            newColor   = blend_op.Apply(newColor);
            newColor.A = color.A;

            return(newColor);
        }
Пример #2
0
        public override void Render(EffectConfigToken parameters, RenderArgs dstArgs, RenderArgs srcArgs, Rectangle[] rois, int startIndex, int length)
        {
            if (parameters is CurvesEffectConfigToken token)
            {
                UnaryPixelOp uop = token.Uop;

                for (int i = startIndex; i < startIndex + length; ++i)
                {
                    uop.Apply(dstArgs.Surface, srcArgs.Surface, rois[i]);
                }
            }
        }
Пример #3
0
        public override void Render(ImageSurface src, ImageSurface dest, Gdk.Rectangle[] rois)
        {
            if (Data.ControlPoints == null)
            {
                return;
            }

            if (op == null)
            {
                op = MakeUop();
            }

            op.Apply(dest, src, rois);
        }
Пример #4
0
        public override void Render(EffectConfigToken parameters, RenderArgs dstArgs, RenderArgs srcArgs, Rectangle[] rois, int startIndex, int length)
        {
            ConfigToken token = parameters as ConfigToken;

            if (token.Gradient.Count == 0)
            {
                return;
            }

            UnaryPixelOp uop = token.Uop;

            for (int i = startIndex; i < startIndex + length; ++i)
            {
                uop.Apply(dstArgs.Surface, srcArgs.Surface, rois[i]);
            }
        }
Пример #5
0
 public override void Render(ImageSurface src, ImageSurface dest, Gdk.Rectangle[] rois)
 {
     op.Apply(dest, src, rois);
 }
 protected override void RenderLine(ISurface src, ISurface dest, Rectangle roi)
 {
     op.Apply(src, dest, roi);
 }
Пример #7
0
 public override void Render(Surface src, Surface dst, Rectangle[] rois, int start, int len)
 {
     _op.Apply(dst, src, rois, start, len);
 }
Пример #8
0
 public override void Render(Surface src, Surface dest, Rectangle[] rois, int startIndex, int length)
 {
     _desaturate.Apply(dest, src, rois, startIndex, length);
     _levels.Apply(dest, dest, rois, startIndex, length);
 }