Stuart.EditGroup.GetRegionMask C# (CSharp) Method

GetRegionMask() public method

public GetRegionMask ( ) : ICanvasImage
return ICanvasImage
        public ICanvasImage GetRegionMask()
        {
            // Do we already have a cached version of this mask?
            ICanvasImage mask = cachedRegionMask.Get(regionFeather, regionDilate);

            if (mask == null)
            {
                mask = regionMask;

                // Expand or contract the selection?
                if (regionDilate != 0)
                {
                    mask = new MorphologyEffect
                    {
                        Source = new BorderEffect { Source = mask },
                        Mode = (regionDilate > 0) ? MorphologyEffectMode.Dilate : MorphologyEffectMode.Erode,
                        Height = Math.Abs(regionDilate),
                        Width = Math.Abs(regionDilate)
                    };
                }

                // Feather the selection?
                if (regionFeather > 0)
                {
                    mask = new GaussianBlurEffect
                    {
                        Source = mask,
                        BlurAmount = regionFeather,
                        BorderMode = EffectBorderMode.Hard
                    };
                }

                // If this mask was expensive to compute, cache it now.
                if (mask != regionMask)
                {
                    mask = cachedRegionMask.Cache(Parent, mask, regionFeather, regionDilate);
                }
            }

            return mask;
        }