public void ErrorDitherEquality() { IDither dither = KnownDitherings.FloydSteinberg; ErrorDither dither2 = ErrorDither.FloydSteinberg; ErrorDither dither3 = ErrorDither.FloydSteinberg; Assert.True(dither == dither2); Assert.True(dither2 == dither); Assert.False(dither != dither2); Assert.False(dither2 != dither); Assert.Equal(dither, dither2); Assert.Equal(dither, (object)dither2); Assert.Equal(dither.GetHashCode(), dither2.GetHashCode()); dither = null; Assert.False(dither == dither2); Assert.False(dither2 == dither); Assert.True(dither != dither2); Assert.True(dither2 != dither); Assert.NotEqual(dither, dither2); Assert.NotEqual(dither, (object)dither2); Assert.NotEqual(dither?.GetHashCode(), dither2.GetHashCode()); Assert.True(dither2 == dither3); Assert.True(dither3 == dither2); Assert.False(dither2 != dither3); Assert.False(dither3 != dither2); Assert.Equal(dither2, dither3); Assert.Equal(dither2, (object)dither3); Assert.Equal(dither2.GetHashCode(), dither3.GetHashCode()); }
/// <summary> /// This method pre-seeds the default dithering engine (FloydSteinbergDiffuser) in the AoT compiler for iOS. /// </summary> /// <typeparam name="TPixel">The pixel format.</typeparam> private static void AotCompileDithering <TPixel>() where TPixel : unmanaged, IPixel <TPixel> { ErrorDither errorDither = ErrorDither.FloydSteinberg; OrderedDither orderedDither = OrderedDither.Bayer2x2; TPixel pixel = default; using (var image = new ImageFrame <TPixel>(Configuration.Default, 1, 1)) { errorDither.Dither(image, image.Bounds(), pixel, pixel, 0, 0, 0); orderedDither.Dither(pixel, 0, 0, 0, 0); } }