/// <summary>
 /// Clones the graphic options and applies changes required to force clearing.
 /// </summary>
 /// <param name="options">The options to clone</param>
 /// <returns>A clone of option with ColorBlendingMode, AlphaCompositionMode, and BlendPercentage set</returns>
 internal static GraphicsOptions CloneForClearOperation(this GraphicsOptions options)
 {
     options = options.DeepClone();
     options.ColorBlendingMode    = PixelFormats.PixelColorBlendingMode.Normal;
     options.AlphaCompositionMode = PixelFormats.PixelAlphaCompositionMode.Src;
     options.BlendPercentage      = 1;
     return(options);
 }
        public void CloneIsDeep()
        {
            var             expected = new GraphicsOptions();
            GraphicsOptions actual   = expected.DeepClone();

            actual.AlphaCompositionMode   = PixelAlphaCompositionMode.DestAtop;
            actual.Antialias              = false;
            actual.AntialiasSubpixelDepth = 23;
            actual.BlendPercentage        = .25F;
            actual.ColorBlendingMode      = PixelColorBlendingMode.HardLight;

            Assert.NotEqual(expected, actual, graphicsOptionsComparer);
        }
        public void NonDefaultClone()
        {
            var expected = new GraphicsOptions
            {
                AlphaCompositionMode   = PixelAlphaCompositionMode.DestAtop,
                Antialias              = false,
                AntialiasSubpixelDepth = 23,
                BlendPercentage        = .25F,
                ColorBlendingMode      = PixelColorBlendingMode.HardLight,
            };

            GraphicsOptions actual = expected.DeepClone();

            Assert.Equal(expected, actual, graphicsOptionsComparer);
        }