| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 | using Avalonia;using Avalonia.Media;using Avalonia.Media.Imaging;using Avalonia.Platform;using PixiEditor.AvaloniaUI.Helpers.Extensions;using PixiEditor.DrawingApi.Core.Numerics;using PixiEditor.Numerics;namespace PixiEditor.Tests;public class FramebufferExtensionTests{    [Fact]    public void TestThatExtractPixelsFromBitmapReturnsCorrectAmountOfPixels()    {        var bitmap = new WriteableBitmap(new PixelSize(10, 10), new Vector(96, 96), PixelFormats.Bgra8888);        var pixels = bitmap.ExtractPixels();        Assert.Equal(400, pixels.Length);    }    [Theory]    [InlineData(255, 0, 0, 255)]    [InlineData(0, 255, 0, 255)]    [InlineData(0, 0, 255, 255)]    [InlineData(255, 255, 255, 255)]    [InlineData(0, 0, 0, 255)]    [InlineData(255, 255, 255, 0)]    [InlineData(0, 0, 0, 0)]    public void TestThatWritePixelSetsCorrectColor(byte r, byte g, byte b, byte a)    {        var bitmap = new WriteableBitmap(new PixelSize(1, 1), new Vector(96, 96), PixelFormats.Bgra8888);        using var framebuffer = bitmap.Lock();        framebuffer.WritePixel(0, 0, Color.FromArgb(a, r, g, b));        var pixels = framebuffer.GetPixels();        Assert.Equal(r, pixels[2]);        Assert.Equal(g, pixels[1]);        Assert.Equal(b, pixels[0]);        Assert.Equal(a, pixels[3]);    }    [Theory]    [InlineData(255, 0, 0, 255)]    [InlineData(0, 255, 0, 255)]    [InlineData(0, 0, 255, 255)]    [InlineData(255, 255, 255, 255)]    [InlineData(0, 0, 0, 255)]    [InlineData(255, 255, 255, 0)]    [InlineData(0, 0, 0, 0)]    public void TestThatWritePixelsSetsCorrectColor(byte r, byte g, byte b, byte a)    {        var bitmap = new WriteableBitmap(new PixelSize(1, 1), new Vector(96, 96), PixelFormats.Bgra8888);        using var framebuffer = bitmap.Lock();        framebuffer.WritePixels(new RectI(0, 0, 1, 1), new byte[] { b, g, r, a });        var pixels = framebuffer.GetPixels();        Assert.Equal(r, pixels[2]);        Assert.Equal(g, pixels[1]);        Assert.Equal(b, pixels[0]);        Assert.Equal(a, pixels[3]);    }    [Theory]    [InlineData(255, 0, 0, 255)]    [InlineData(0, 255, 0, 255)]    [InlineData(0, 0, 255, 255)]    [InlineData(255, 255, 255, 255)]    [InlineData(0, 0, 0, 255)]    [InlineData(255, 255, 255, 0)]    [InlineData(0, 0, 0, 0)]    public void TestThatGetPixelsReturnsCorrectColor(byte r, byte g, byte b, byte a)    {        WriteableBitmap bitmap = new WriteableBitmap(new PixelSize(1, 1), new Vector(96, 96), PixelFormats.Bgra8888, AlphaFormat.Premul);        using var framebuffer = bitmap.Lock();        framebuffer.WritePixel(0, 0, Color.FromArgb(a, r, g, b));        var color = framebuffer.GetPixel(0, 0);        Assert.Equal(r, color.R);        Assert.Equal(g, color.G);        Assert.Equal(b, color.B);        Assert.Equal(a, color.A);    }    [Fact]    public void TestThatExtractPixelsFromBitmapReturnsCorrectBgra8888ByteSequence()    {        var bitmap = new WriteableBitmap(new PixelSize(4, 1), new Vector(96, 96), PixelFormats.Bgra8888);        using var framebuffer = bitmap.Lock();        framebuffer.WritePixel(0, 0, Color.FromArgb(255, 255, 0, 0)); //Red        framebuffer.WritePixel(1, 0, Color.FromArgb(255, 0, 255, 0)); //Green        framebuffer.WritePixel(2, 0, Color.FromArgb(255, 0, 0, 255)); //Blue        framebuffer.WritePixel(3, 0, Color.FromArgb(255, 255, 255, 255)); //White        var pixels = bitmap.ExtractPixels();        Assert.Equal(0, pixels[0]);        Assert.Equal(0, pixels[1]);        Assert.Equal(255, pixels[2]);        Assert.Equal(255, pixels[3]);        Assert.Equal(0, pixels[4]);        Assert.Equal(255, pixels[5]);        Assert.Equal(0, pixels[6]);        Assert.Equal(255, pixels[7]);        Assert.Equal(255, pixels[8]);        Assert.Equal(0, pixels[9]);        Assert.Equal(0, pixels[10]);        Assert.Equal(255, pixels[11]);        Assert.Equal(255, pixels[12]);        Assert.Equal(255, pixels[13]);        Assert.Equal(255, pixels[14]);        Assert.Equal(255, pixels[15]);    }}
 |