| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- using Avalonia.Headless.XUnit;
- using Drawie.Backend.Core.ColorsImpl;
- using Drawie.Backend.Core.Surfaces.ImageData;
- using Drawie.Numerics;
- using PixiEditor.ChangeableDocument.Changes.Drawing.FloodFill;
- using PixiEditor.ChangeableDocument.Enums;
- using PixiEditor.Tests;
- using PixiEditor.ViewModels.Document;
- namespace PixiEditor.Backend.Tests;
- public class FloodFillTests : FullPixiEditorTest
- {
- [AvaloniaTheory]
- [InlineData(0, 64)]
- [InlineData(130, 64)]
- [InlineData(255, 64)]
- [InlineData(0, 512)]
- [InlineData(130, 512)]
- [InlineData(255, 512)]
- [InlineData(0, 2048)]
- [InlineData(130, 2048)]
- [InlineData(255, 2048)]
- public void TestThatFloodFillHelperFinishesLinearCs(byte alpha, int imgSize)
- {
- var doc = DocumentViewModel.Build(b => b.WithSize(imgSize, imgSize)
- .WithGraph(g =>
- g.WithImageLayerNode(
- "layer", new VecI(imgSize), ColorSpace.CreateSrgbLinear(), out var id)
- .WithOutputNode(id, "Output")));
- var color = Color.FromHsv(0f, 59.3f, 82.6f, alpha);
- var dict = FloodFillHelper.FloodFill([doc.NodeGraph.StructureTree.Members[0].Id],
- doc.AccessInternalReadOnlyDocument(),
- null, VecI.Zero, color, 0, 0, false, FloodFillMode.Replace);
- Assert.NotNull(dict);
- foreach (var kvp in dict)
- {
- Assert.NotNull(kvp.Value);
- var srgbPixel = kvp.Value.Surface.GetSrgbPixel(VecI.Zero);
- if (alpha == 0)
- Assert.Equal(Color.FromRgba(0, 0, 0, 0), srgbPixel);
- else
- Assert.Equal(color, srgbPixel);
- }
- }
- [AvaloniaTheory]
- [InlineData(0, 64)]
- [InlineData(130, 64)]
- [InlineData(255, 64)]
- [InlineData(0, 512)]
- [InlineData(130, 512)]
- [InlineData(255, 512)]
- [InlineData(0, 2048)]
- [InlineData(130, 2048)]
- [InlineData(255, 2048)]
- public void TestThatFloodFillHelperFinishesSrgbCs(byte alpha, int imgSize)
- {
- var doc = DocumentViewModel.Build(b => b.WithSize(imgSize, imgSize)
- .WithGraph(g =>
- g.WithImageLayerNode(
- "layer", new VecI(imgSize), ColorSpace.CreateSrgb(), out var id).WithOutputNode(id, "Output")));
- FloodFillHelper.FloodFill([doc.NodeGraph.StructureTree.Members[0].Id], doc.AccessInternalReadOnlyDocument(),
- null, VecI.Zero,
- Color.FromHsv(0f, 59.3f, 82.6f, alpha), 0, 0, false, FloodFillMode.Replace);
- var color = Color.FromHsv(0f, 59.3f, 82.6f, alpha);
- var dict = FloodFillHelper.FloodFill([doc.NodeGraph.StructureTree.Members[0].Id],
- doc.AccessInternalReadOnlyDocument(),
- null, VecI.Zero, color, 0, 0, false, FloodFillMode.Replace);
- Assert.NotNull(dict);
- foreach (var kvp in dict)
- {
- Assert.NotNull(kvp.Value);
- var srgbPixel = kvp.Value.Surface.GetSrgbPixel(VecI.Zero);
- if (alpha == 0)
- Assert.Equal(Color.FromRgba(0, 0, 0, 0), srgbPixel);
- else
- Assert.Equal(color, srgbPixel);
- }
- }
- }
|