FramebufferExtensionTests.cs 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. using System.Runtime.CompilerServices;
  2. using System.Runtime.InteropServices;
  3. using Avalonia;
  4. using Avalonia.Media;
  5. using Avalonia.Media.Imaging;
  6. using Avalonia.Platform;
  7. using PixiEditor.AvaloniaUI.Helpers.Extensions;
  8. using PixiEditor.DrawingApi.Core.Numerics;
  9. using SkiaSharp;
  10. namespace PixiEditor.Tests;
  11. public class FramebufferExtensionTests
  12. {
  13. [Fact]
  14. public void TestThatExtractPixelsFromBitmapReturnsCorrectAmountOfPixels()
  15. {
  16. var bitmap = new WriteableBitmap(new PixelSize(10, 10), new Vector(96, 96), PixelFormats.Bgra8888);
  17. var pixels = bitmap.ExtractPixels();
  18. Assert.Equal(400, pixels.Length);
  19. }
  20. [Theory]
  21. [InlineData(255, 0, 0, 255)]
  22. [InlineData(0, 255, 0, 255)]
  23. [InlineData(0, 0, 255, 255)]
  24. [InlineData(255, 255, 255, 255)]
  25. [InlineData(0, 0, 0, 255)]
  26. [InlineData(255, 255, 255, 0)]
  27. [InlineData(0, 0, 0, 0)]
  28. public void TestThatWritePixelSetsCorrectColor(byte r, byte g, byte b, byte a)
  29. {
  30. var bitmap = new WriteableBitmap(new PixelSize(1, 1), new Vector(96, 96), PixelFormats.Bgra8888);
  31. using var framebuffer = bitmap.Lock();
  32. framebuffer.WritePixel(0, 0, Color.FromArgb(a, r, g, b));
  33. var pixels = framebuffer.GetPixels();
  34. Assert.Equal(r, pixels[2]);
  35. Assert.Equal(g, pixels[1]);
  36. Assert.Equal(b, pixels[0]);
  37. Assert.Equal(a, pixels[3]);
  38. }
  39. [Theory]
  40. [InlineData(255, 0, 0, 255)]
  41. [InlineData(0, 255, 0, 255)]
  42. [InlineData(0, 0, 255, 255)]
  43. [InlineData(255, 255, 255, 255)]
  44. [InlineData(0, 0, 0, 255)]
  45. [InlineData(255, 255, 255, 0)]
  46. [InlineData(0, 0, 0, 0)]
  47. public void TestThatGetPixelsReturnsCorrectColor(byte r, byte g, byte b, byte a)
  48. {
  49. WriteableBitmap bitmap = new WriteableBitmap(new PixelSize(1, 1), new Vector(96, 96), PixelFormats.Bgra8888, AlphaFormat.Premul);
  50. using var framebuffer = bitmap.Lock();
  51. framebuffer.WritePixel(0, 0, Color.FromArgb(a, r, g, b));
  52. var color = framebuffer.GetPixel(0, 0);
  53. Assert.Equal(r, color.R);
  54. Assert.Equal(g, color.G);
  55. Assert.Equal(b, color.B);
  56. Assert.Equal(a, color.A);
  57. }
  58. /*[Fact]
  59. public void TestThatExtractPixelsFromBitmapReturnsCorrectBgra8888ByteSequence()
  60. {
  61. var bitmap = new WriteableBitmap(new PixelSize(4, 1), new Vector(96, 96), PixelFormats.Bgra8888);
  62. using var framebuffer = bitmap.Lock();
  63. framebuffer.WritePixel();
  64. var pixels = bitmap.ExtractPixels();
  65. Assert.Equal(4, pixels.Length);
  66. Assert.Equal(0, pixels[0]);
  67. Assert.Equal(0, pixels[1]);
  68. }*/
  69. }