Stuart.EditGroup.GetMagicWandMask C# (CSharp) Method

GetMagicWandMask() private method

private GetMagicWandMask ( List points, float zoomFactor ) : ICanvasImage
points List
zoomFactor float
return ICanvasImage
        ICanvasImage GetMagicWandMask(List<Vector2> points, float zoomFactor)
        {
            // What color did the user click on?
            Vector2 clickPoint = Vector2.Clamp(points.First(), Vector2.Zero, SourceBitmap.Size.ToVector2() - Vector2.One);

            Color clickColor = SourceBitmap.GetPixelColors((int)clickPoint.X, (int)clickPoint.Y, 1, 1).Single();

            // How far they have dragged = selection tolerance.
            float dragDistance = Vector2.Distance(points.First(), points.Last());

            float chromaTolerance = Math.Min(dragDistance / 512 * zoomFactor, 1);

            return new ColorMatrixEffect
            {
                Source = new ChromaKeyEffect
                {
                    Source = SourceBitmap,
                    Color = clickColor,
                    Tolerance = chromaTolerance,
                    InvertAlpha = true
                },

                ColorMatrix = new Matrix5x4
                {
                    // Preserve alpha.
                    M44 = 1,

                    // Set RGB = white.
                    M51 = 1,
                    M52 = 1,
                    M53 = 1,
                }
            };
        }