123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- using ChunkyImageLib;
- using ChunkyImageLib.DataHolders;
- using PixiEditor.DrawingApi.Core.Bridge;
- using PixiEditor.DrawingApi.Core.ColorsImpl;
- using PixiEditor.DrawingApi.Core.Numerics;
- using PixiEditor.DrawingApi.Core.Surfaces;
- using PixiEditor.DrawingApi.Skia;
- using PixiEditor.Numerics;
- using Xunit;
- using static PixiEditor.DrawingApi.Core.Surface;
- namespace ChunkyImageLibTest;
- public class ChunkyImageTests
- {
- public ChunkyImageTests()
- {
- try
- {
- DrawingBackendApi.SetupBackend(new SkiaDrawingBackend());
- }
- catch { }
- }
- [Fact]
- public void Dispose_ComplexImage_ReturnsAllChunks()
- {
- ChunkyImage image = new ChunkyImage(new(ChunkyImage.FullChunkSize, ChunkyImage.FullChunkSize));
- image.EnqueueDrawRectangle(new(new(5, 5), new(80, 80), 0, 2, Colors.AliceBlue, Colors.Snow));
- using (Chunk target = Chunk.Create())
- {
- image.DrawMostUpToDateChunkOn(new(0, 0), ChunkResolution.Full, target.Surface.DrawingSurface, VecI.Zero);
- image.CancelChanges();
- image.EnqueueResize(new(ChunkyImage.FullChunkSize * 4, ChunkyImage.FullChunkSize * 4));
- image.EnqueueDrawRectangle(new(VecD.Zero, image.CommittedSize, 0, 2, Colors.AliceBlue, Colors.Snow, BlendMode.Multiply));
- image.CommitChanges();
- image.SetBlendMode(BlendMode.Overlay);
- image.EnqueueDrawRectangle(new(VecD.Zero, image.CommittedSize, 0, 2, Colors.AliceBlue, Colors.Snow, BlendMode.Multiply));
- image.EnqueueDrawRectangle(new(VecD.Zero, image.CommittedSize, 0, 2, Colors.AliceBlue, Colors.Snow));
- image.CommitChanges();
- image.SetBlendMode(BlendMode.Screen);
- image.EnqueueDrawRectangle(new(VecD.Zero, image.CommittedSize, 0, 2, Colors.AliceBlue, Colors.Snow));
- image.CancelChanges();
- image.SetBlendMode(BlendMode.SrcOver);
- image.EnqueueDrawRectangle(new(VecD.Zero, image.CommittedSize, 0, 2, Colors.AliceBlue, Colors.Snow));
- }
- image.Dispose();
- Assert.Equal(0, Chunk.ChunkCounter);
- }
- [Fact]
- public void GetCommittedPixel_RedImage_ReturnsRedPixel()
- {
- const int chunkSize = ChunkyImage.FullChunkSize;
- ChunkyImage image = new ChunkyImage(new VecI(chunkSize * 2));
- image.EnqueueDrawRectangle
- (new ShapeData(new VecD(chunkSize), new VecD(chunkSize * 2), 0, 0, Colors.Transparent, Colors.Red));
- image.CommitChanges();
- Assert.Equal(Colors.Red, image.GetCommittedPixel(new VecI(chunkSize + chunkSize / 2)));
- image.Dispose();
- Assert.Equal(0, Chunk.ChunkCounter);
- }
- [Fact]
- public void GetMostUpToDatePixel_BlendModeSrc_ReturnsCorrectPixel()
- {
- const int chunkSize = ChunkyImage.FullChunkSize;
- ChunkyImage image = new ChunkyImage(new VecI(chunkSize * 2));
- image.EnqueueDrawRectangle
- (new ShapeData(new VecD(chunkSize), new VecD(chunkSize * 2), 0, 0, Colors.Transparent, Colors.Red));
- Assert.Equal(Colors.Red, image.GetMostUpToDatePixel(new VecI(chunkSize + chunkSize / 2)));
- image.Dispose();
- Assert.Equal(0, Chunk.ChunkCounter);
- }
-
- [Fact]
- public void GetMostUpToDatePixel_BlendModeSrcOver_ReturnsCorrectPixel()
- {
- const int chunkSize = ChunkyImage.FullChunkSize;
- ChunkyImage image = new ChunkyImage(new VecI(chunkSize * 2));
- image.EnqueueDrawRectangle
- (new ShapeData(new VecD(chunkSize), new VecD(chunkSize * 2), 0, 0, Colors.Transparent, Colors.Red));
- image.CommitChanges();
- image.SetBlendMode(BlendMode.SrcOver);
- image.EnqueueDrawRectangle(new ShapeData(
- new VecD(chunkSize),
- new VecD(chunkSize * 2),
- 0,
- 0,
- Colors.Transparent,
- new Color(0, 255, 0, 128)));
- Assert.Equal(new Color(127, 128, 0), image.GetMostUpToDatePixel(new VecI(chunkSize + chunkSize / 2)));
- image.Dispose();
- Assert.Equal(0, Chunk.ChunkCounter);
- }
- [Fact]
- public void EnqueueDrawRectangle_OutsideOfImage_PartsAreNotDrawn()
- {
- const int chunkSize = ChunkyImage.FullChunkSize;
- using ChunkyImage image = new(new VecI(chunkSize));
- image.EnqueueDrawRectangle(new ShapeData(
- VecD.Zero,
- new VecD(chunkSize * 10),
- 0,
- 0,
- Colors.Transparent,
- Colors.Red));
- image.CommitChanges();
- Assert.Collection(
- image.FindAllChunks(),
- elem => Assert.Equal(VecI.Zero, elem));
- }
- }
|