Browse Source

Returned to chunk render result

flabbet 1 year ago
parent
commit
f9a9e3c571

+ 7 - 7
src/PixiEditor.ChangeableDocument/Rendering/DocumentRenderer.cs

@@ -17,7 +17,7 @@ public class DocumentRenderer
 
     private IReadOnlyDocument Document { get; }
 
-    public OneOf<Texture, EmptyChunk> RenderChunk(VecI chunkPos, ChunkResolution resolution, KeyFrameTime frameTime,
+    public OneOf<Chunk, EmptyChunk> RenderChunk(VecI chunkPos, ChunkResolution resolution, KeyFrameTime frameTime,
         RectI? globalClippingRect = null)
     {
         RenderingContext context = new(frameTime, chunkPos, resolution, Document.Size);
@@ -31,14 +31,14 @@ public class DocumentRenderer
                 return new EmptyChunk();
             }
 
-            Texture chunk = new Texture(new VecI(resolution.PixelSize()));
+            Chunk chunk = Chunk.Create(resolution);
 
-            chunk.DrawingSurface.Canvas.Save();
-            chunk.DrawingSurface.Canvas.Clear();
+            chunk.Surface.DrawingSurface.Canvas.Save();
+            chunk.Surface.DrawingSurface.Canvas.Clear();
 
             if (transformedClippingRect is not null)
             {
-                chunk.DrawingSurface.Canvas.ClipRect((RectD)transformedClippingRect);
+                chunk.Surface.DrawingSurface.Canvas.ClipRect((RectD)transformedClippingRect);
             }
 
             VecD pos = chunkPos;
@@ -63,9 +63,9 @@ public class DocumentRenderer
             
             if(context.IsDisposed) return new EmptyChunk();
 
-            chunk.DrawingSurface.Canvas.DrawImage(chunkSnapshot, 0, 0, context.ReplacingPaintWithOpacity);
+            chunk.Surface.DrawingSurface.Canvas.DrawImage(chunkSnapshot, 0, 0, context.ReplacingPaintWithOpacity);
 
-            chunk.DrawingSurface.Canvas.Restore();
+            chunk.Surface.DrawingSurface.Canvas.Restore();
 
             return chunk;
         }

+ 2 - 2
src/PixiEditor/Models/Rendering/CanvasUpdater.cs

@@ -224,7 +224,7 @@ internal class CanvasUpdater
 
         doc.Renderer.RenderChunk(chunkPos, resolution, doc.AnimationHandler.ActiveFrameTime, globalClippingRectangle)
             .Switch(
-                (Texture chunk) =>
+                (Chunk chunk) =>
                 {
                     if (screenSurface.IsDisposed) return;
 
@@ -235,7 +235,7 @@ internal class CanvasUpdater
                     }
 
                     screenSurface.DrawingSurface.Canvas.DrawSurface(
-                        chunk.DrawingSurface,
+                        chunk.Surface.DrawingSurface,
                         chunkPos.Multiply(new VecI(resolution.PixelSize())), ReplacingPaint);
                     chunk.Dispose();
 

+ 1 - 3
src/PixiEditor/Models/Rendering/MemberPreviewUpdater.cs

@@ -448,9 +448,7 @@ internal class MemberPreviewUpdater
             else if (rendered.IsT0)
             {
                 using var renderedChunk = rendered.AsT0;
-                
-                //TODO: Check if this is correct
-                doc.PreviewSurface.DrawingSurface.Canvas.DrawSurface(renderedChunk.DrawingSurface, pos, SmoothReplacingPaint);
+                renderedChunk.DrawChunkOn(doc.PreviewSurface.DrawingSurface, pos, SmoothReplacingPaint);
             }
 
             doc.PreviewSurface.DrawingSurface.Canvas.Restore();

+ 3 - 3
src/PixiEditor/ViewModels/Document/DocumentViewModel.cs

@@ -510,9 +510,9 @@ internal partial class DocumentViewModel : PixiObservableObject, IDocument
                     var maybeChunk = Renderer.RenderChunk(new(i, j), ChunkResolution.Full, frameTime);
                     if (maybeChunk.IsT1)
                         continue;
-                    using Texture chunk = maybeChunk.AsT0;
+                    using Chunk chunk = maybeChunk.AsT0;
                     finalSurface.DrawingSurface.Canvas.DrawSurface(
-                        chunk.DrawingSurface,
+                        chunk.Surface.DrawingSurface,
                         i * ChunkyImage.FullChunkSize, j * ChunkyImage.FullChunkSize);
                 }
             }
@@ -656,7 +656,7 @@ internal partial class DocumentViewModel : PixiObservableObject, IDocument
                         chunk =>
                         {
                             VecI posOnChunk = pos - chunkPos * ChunkyImage.FullChunkSize;
-                            var color = chunk.GetSRGBPixel(posOnChunk);
+                            var color = chunk.Surface.GetSRGBPixel(posOnChunk);
                             chunk.Dispose();
                             return color;
                         },