ImageBlendTests.cs 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System.IO;
  2. using System.Runtime.CompilerServices;
  3. using System.Threading.Tasks;
  4. using Avalonia.Controls;
  5. using Avalonia.Media;
  6. using Avalonia.Media.Imaging;
  7. using Xunit;
  8. namespace Avalonia.Skia.RenderTests
  9. {
  10. public class ImageBlendTests : TestBase
  11. {
  12. private readonly Bitmap _bitmapBase;
  13. private readonly Bitmap _bitmapOver;
  14. public ImageBlendTests()
  15. : base(@"Controls\Image\blend")
  16. {
  17. _bitmapBase = new Bitmap(Path.Combine(OutputPath, "Cat.jpg"));
  18. _bitmapOver = new Bitmap(Path.Combine(OutputPath, "ColourShading - by Stib.png"));
  19. }
  20. [Fact]
  21. public async Task Image_Blend_Nothing() => await TestBlendMode(BitmapBlendingMode.Unspecified);
  22. [Fact]
  23. public async Task Image_Blend_Plus() => await TestBlendMode(BitmapBlendingMode.Plus);
  24. [Fact]
  25. public async Task Image_Blend_Screen() => await TestBlendMode(BitmapBlendingMode.Screen);
  26. [Fact]
  27. public async Task Image_Blend_Overlay() => await TestBlendMode(BitmapBlendingMode.Overlay);
  28. [Fact]
  29. public async Task Image_Blend_Darken() => await TestBlendMode(BitmapBlendingMode.Darken);
  30. [Fact]
  31. public async Task Image_Blend_Lighten() => await TestBlendMode(BitmapBlendingMode.Lighten);
  32. [Fact]
  33. public async Task Image_Blend_ColorDodge() => await TestBlendMode(BitmapBlendingMode.ColorDodge);
  34. [Fact]
  35. public async Task Image_Blend_ColorBurn() => await TestBlendMode(BitmapBlendingMode.ColorBurn);
  36. [Fact]
  37. public async Task Image_Blend_HardLight() => await TestBlendMode(BitmapBlendingMode.HardLight);
  38. [Fact]
  39. public async Task Image_Blend_SoftLight() => await TestBlendMode(BitmapBlendingMode.SoftLight);
  40. [Fact]
  41. public async Task Image_Blend_Difference() => await TestBlendMode(BitmapBlendingMode.Difference);
  42. [Fact]
  43. public async Task Image_Blend_Exclusion() => await TestBlendMode(BitmapBlendingMode.Exclusion);
  44. [Fact]
  45. public async Task Image_Blend_Multiply() => await TestBlendMode(BitmapBlendingMode.Multiply);
  46. [Fact]
  47. public async Task Image_Blend_Hue() => await TestBlendMode(BitmapBlendingMode.Hue);
  48. [Fact]
  49. public async Task Image_Blend_Saturation() => await TestBlendMode(BitmapBlendingMode.Saturation);
  50. [Fact]
  51. public async Task Image_Blend_Color() => await TestBlendMode(BitmapBlendingMode.Color);
  52. [Fact]
  53. public async Task Image_Blend_Luminosity() => await TestBlendMode(BitmapBlendingMode.Luminosity);
  54. private async Task TestBlendMode(BitmapBlendingMode blendMode, [CallerMemberName] string testName = "")
  55. {
  56. var panel = new Panel();
  57. panel.Children.Add(new Image() { Source = _bitmapBase });
  58. panel.Children.Add(new Image() { Source = _bitmapOver, BlendMode = blendMode });
  59. var target = new Decorator
  60. {
  61. Width = 512,
  62. Height = 512,
  63. Child = new Border
  64. {
  65. Background = Brushes.Red,
  66. Child = panel
  67. }
  68. };
  69. await RenderToFile(target,testName);
  70. CompareImages(testName);
  71. }
  72. }
  73. }