//
// Copyright (c) James Jackson-South and contributors.
// Licensed under the Apache License, Version 2.0.
//
namespace ImageSharp.Tests.PixelFormats
{
using System;
using System.Collections.Generic;
using System.Text;
using ImageSharp.PixelFormats;
using ImageSharp.PixelFormats.PixelBlenders;
using ImageSharp.Tests.TestUtilities;
using Xunit;
public partial class PixelOperationsTests
{
public static TheoryData BlenderMappings = new TheoryData()
{
{ new TestPixel(), typeof(DefaultPixelBlenders.Normal), PixelBlenderMode.Normal },
{ new TestPixel(), typeof(DefaultPixelBlenders.Screen), PixelBlenderMode.Screen },
{ new TestPixel(), typeof(DefaultPixelBlenders.HardLight), PixelBlenderMode.HardLight },
{ new TestPixel(), typeof(DefaultPixelBlenders.Overlay), PixelBlenderMode.Overlay },
{ new TestPixel(), typeof(DefaultPixelBlenders.Darken), PixelBlenderMode.Darken },
{ new TestPixel(), typeof(DefaultPixelBlenders.Lighten), PixelBlenderMode.Lighten },
{ new TestPixel(), typeof(DefaultPixelBlenders.Add), PixelBlenderMode.Add },
{ new TestPixel(), typeof(DefaultPixelBlenders.Substract), PixelBlenderMode.Substract },
{ new TestPixel(), typeof(DefaultPixelBlenders.Multiply), PixelBlenderMode.Multiply },
{ new TestPixel(), typeof(DefaultPixelBlenders.Src), PixelBlenderMode.Src },
{ new TestPixel(), typeof(DefaultPixelBlenders.Atop), PixelBlenderMode.Atop },
{ new TestPixel(), typeof(DefaultPixelBlenders.Over), PixelBlenderMode.Over },
{ new TestPixel(), typeof(DefaultPixelBlenders.In), PixelBlenderMode.In },
{ new TestPixel(), typeof(DefaultPixelBlenders.Out), PixelBlenderMode.Out },
{ new TestPixel(), typeof(DefaultPixelBlenders.Dest), PixelBlenderMode.Dest },
{ new TestPixel(), typeof(DefaultPixelBlenders.DestAtop), PixelBlenderMode.DestAtop },
{ new TestPixel(), typeof(DefaultPixelBlenders.DestOver), PixelBlenderMode.DestOver },
{ new TestPixel(), typeof(DefaultPixelBlenders.DestIn), PixelBlenderMode.DestIn },
{ new TestPixel(), typeof(DefaultPixelBlenders.DestOut), PixelBlenderMode.DestOut },
{ new TestPixel(), typeof(DefaultPixelBlenders.Clear), PixelBlenderMode.Clear },
{ new TestPixel(), typeof(DefaultPixelBlenders.Xor), PixelBlenderMode.Xor },
{ new TestPixel(), typeof(DefaultPixelBlenders.Normal), PixelBlenderMode.Normal },
{ new TestPixel(), typeof(DefaultPixelBlenders.Screen), PixelBlenderMode.Screen },
{ new TestPixel(), typeof(DefaultPixelBlenders.HardLight), PixelBlenderMode.HardLight },
{ new TestPixel(), typeof(DefaultPixelBlenders.Overlay), PixelBlenderMode.Overlay },
{ new TestPixel(), typeof(DefaultPixelBlenders.Darken), PixelBlenderMode.Darken },
{ new TestPixel(), typeof(DefaultPixelBlenders.Lighten), PixelBlenderMode.Lighten },
{ new TestPixel(), typeof(DefaultPixelBlenders.Add), PixelBlenderMode.Add },
{ new TestPixel(), typeof(DefaultPixelBlenders.Substract), PixelBlenderMode.Substract },
{ new TestPixel(), typeof(DefaultPixelBlenders.Multiply), PixelBlenderMode.Multiply },
{ new TestPixel(), typeof(DefaultPixelBlenders.Src), PixelBlenderMode.Src },
{ new TestPixel(), typeof(DefaultPixelBlenders.Atop), PixelBlenderMode.Atop },
{ new TestPixel(), typeof(DefaultPixelBlenders.Over), PixelBlenderMode.Over },
{ new TestPixel(), typeof(DefaultPixelBlenders.In), PixelBlenderMode.In },
{ new TestPixel(), typeof(DefaultPixelBlenders.Out), PixelBlenderMode.Out },
{ new TestPixel(), typeof(DefaultPixelBlenders.Dest), PixelBlenderMode.Dest },
{ new TestPixel(), typeof(DefaultPixelBlenders.DestAtop), PixelBlenderMode.DestAtop },
{ new TestPixel(), typeof(DefaultPixelBlenders.DestOver), PixelBlenderMode.DestOver },
{ new TestPixel(), typeof(DefaultPixelBlenders.DestIn), PixelBlenderMode.DestIn },
{ new TestPixel(), typeof(DefaultPixelBlenders.DestOut), PixelBlenderMode.DestOut },
{ new TestPixel(), typeof(DefaultPixelBlenders.Clear), PixelBlenderMode.Clear },
{ new TestPixel(), typeof(DefaultPixelBlenders.Xor), PixelBlenderMode.Xor },
};
[Theory]
[MemberData(nameof(BlenderMappings))]
public void ReturnsCorrectBlender(TestPixel pixel, Type type, PixelBlenderMode mode)
where TPixel : struct, IPixel
{
PixelBlender blender = PixelOperations.Instance.GetPixelBlender(mode);
Assert.IsType(type, blender);
}
}
}