flabbet 11 months ago
parent
commit
c02a8b6600

+ 2 - 2
src/PixiEditor.ChangeableDocument/Changeables/Graph/Nodes/StructureNode.cs

@@ -150,8 +150,8 @@ public abstract class StructureNode : Node, IReadOnlyStructureNode, IBackgroundI
         int width = (int)(chunkSize);
         int width = (int)(chunkSize);
         int height = (int)(chunkSize);
         int height = (int)(chunkSize);
 
 
-        x = Math.Max(0, x);
-        y = Math.Max(0, y);
+        x = Math.Clamp(x, 0, Math.Max(sourceSize.X - width, 0));
+        y = Math.Clamp(y, 0, Math.Max(sourceSize.Y - height, 0));
         
         
         return new RectI(x, y, width, height);
         return new RectI(x, y, width, height);
     }
     }

+ 23 - 19
src/PixiEditor.ChangeableDocument/Changeables/Graph/Nodes/VectorLayerNode.cs

@@ -25,7 +25,7 @@ public class VectorLayerNode : LayerNode, ITransformableObject, IReadOnlyVectorN
             {
             {
                 return;
                 return;
             }
             }
-            
+
             ShapeData.TransformationMatrix = value;
             ShapeData.TransformationMatrix = value;
         }
         }
     }
     }
@@ -36,18 +36,13 @@ public class VectorLayerNode : LayerNode, ITransformableObject, IReadOnlyVectorN
     protected override bool AffectedByChunkResolution => true;
     protected override bool AffectedByChunkResolution => true;
 
 
     private int lastCacheHash;
     private int lastCacheHash;
-    
+
     protected override Texture? OnExecute(RenderingContext context)
     protected override Texture? OnExecute(RenderingContext context)
     {
     {
-        if (ShapeData == null)
-        {
-            Output.Value = null;
-            return null;
-        }
-        
         var rendered = base.OnExecute(context);
         var rendered = base.OnExecute(context);
+
         Output.Value = rendered;
         Output.Value = rendered;
-        
+
         return rendered;
         return rendered;
     }
     }
 
 
@@ -56,23 +51,34 @@ public class VectorLayerNode : LayerNode, ITransformableObject, IReadOnlyVectorN
         return ctx.DocumentSize;
         return ctx.DocumentSize;
     }
     }
 
 
-    protected override void DrawWithoutFilters(RenderingContext ctx, Texture workingSurface, bool shouldClear, Paint paint)
+    protected override void DrawWithoutFilters(RenderingContext ctx, Texture workingSurface, bool shouldClear,
+        Paint paint)
     {
     {
-        if(shouldClear)
+        if (ShapeData == null)
+        {
+            return;
+        }
+
+        if (shouldClear)
         {
         {
             workingSurface.DrawingSurface.Canvas.Clear();
             workingSurface.DrawingSurface.Canvas.Clear();
         }
         }
-        
+
         Rasterize(workingSurface.DrawingSurface, ctx.ChunkResolution, paint);
         Rasterize(workingSurface.DrawingSurface, ctx.ChunkResolution, paint);
     }
     }
 
 
     protected override void DrawWithFilters(RenderingContext ctx, Texture workingSurface, bool shouldClear, Paint paint)
     protected override void DrawWithFilters(RenderingContext ctx, Texture workingSurface, bool shouldClear, Paint paint)
     {
     {
-        if(shouldClear)
+        if (ShapeData == null)
+        {
+            return;
+        }
+
+        if (shouldClear)
         {
         {
             workingSurface.DrawingSurface.Canvas.Clear();
             workingSurface.DrawingSurface.Canvas.Clear();
         }
         }
-        
+
         Rasterize(workingSurface.DrawingSurface, ctx.ChunkResolution, paint);
         Rasterize(workingSurface.DrawingSurface, ctx.ChunkResolution, paint);
     }
     }
 
 
@@ -82,7 +88,8 @@ public class VectorLayerNode : LayerNode, ITransformableObject, IReadOnlyVectorN
         additionalData["ShapeData"] = ShapeData;
         additionalData["ShapeData"] = ShapeData;
     }
     }
 
 
-    internal override OneOf<None, IChangeInfo, List<IChangeInfo>> DeserializeAdditionalData(IReadOnlyDocument target, IReadOnlyDictionary<string, object> data)
+    internal override OneOf<None, IChangeInfo, List<IChangeInfo>> DeserializeAdditionalData(IReadOnlyDocument target,
+        IReadOnlyDictionary<string, object> data)
     {
     {
         base.DeserializeAdditionalData(target, data);
         base.DeserializeAdditionalData(target, data);
         ShapeData = (ShapeVectorData)data["ShapeData"];
         ShapeData = (ShapeVectorData)data["ShapeData"];
@@ -117,9 +124,6 @@ public class VectorLayerNode : LayerNode, ITransformableObject, IReadOnlyVectorN
 
 
     public override Node CreateCopy()
     public override Node CreateCopy()
     {
     {
-        return new VectorLayerNode()
-        {
-            ShapeData = (ShapeVectorData?)ShapeData?.Clone(),
-        };
+        return new VectorLayerNode() { ShapeData = (ShapeVectorData?)ShapeData?.Clone(), };
     }
     }
 }
 }