Browse Source

Save layer image in undo

Equbuxu 3 years ago
parent
commit
70a745cb44
2 changed files with 16 additions and 1 deletions
  1. 2 1
      src/ChangeableDocument/Changeables/Layer.cs
  2. 14 0
      src/ChunkyImageLib/ChunkyImage.cs

+ 2 - 1
src/ChangeableDocument/Changeables/Layer.cs

@@ -15,7 +15,8 @@ namespace ChangeableDocument.Changeables
                 GuidValue = GuidValue,
                 GuidValue = GuidValue,
                 IsVisible = IsVisible,
                 IsVisible = IsVisible,
                 Name = Name,
                 Name = Name,
-                Opacity = Opacity
+                Opacity = Opacity,
+                LayerImage = LayerImage.Clone()
             };
             };
         }
         }
     }
     }

+ 14 - 0
src/ChunkyImageLib/ChunkyImage.cs

@@ -16,6 +16,20 @@ namespace ChunkyImageLib
 
 
         public static int ChunkSize => ChunkPool.ChunkSize;
         public static int ChunkSize => ChunkPool.ChunkSize;
 
 
+        public ChunkyImage Clone()
+        {
+            ChunkyImage output = new();
+            var chunks = FindAllChunks();
+            foreach (var chunk in chunks)
+            {
+                var image = GetChunk(chunk);
+                if (image != null)
+                    output.DrawImage(chunk * ChunkSize, image.Surface);
+            }
+            output.CommitChanges();
+            return output;
+        }
+
         public Chunk? GetChunk(Vector2i pos)
         public Chunk? GetChunk(Vector2i pos)
         {
         {
             if (queuedOperations.Count == 0)
             if (queuedOperations.Count == 0)