Skip to content

Commit

Permalink
Fixed removed and restored layer bug
Browse files Browse the repository at this point in the history
  • Loading branch information
flabbet committed Dec 16, 2021
1 parent f98fd1a commit f8bb5d0
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions PixiEditor/Models/Undo/StorageBasedChange.cs
Original file line number Diff line number Diff line change
Expand Up @@ -330,15 +330,26 @@ public static void BasicUndoProcess(Layer[] layers, UndoLayer[] data, object[] a

private static void ApplyChunkToLayer(Layer layer, UndoLayer layerData, Surface chunk)
{
Surface targetSizeSurface = new Surface(layerData.Width, layerData.Height);
bool widthBigger = layer.Width < chunk.Width;
bool heightBigger = layer.Height < chunk.Height;
int targetWidth = widthBigger ? chunk.Width : layer.Width;
int targetHeight = heightBigger ? chunk.Height : layer.Height;

int offsetDiffX = layerData.OffsetX - layer.OffsetX;
int offsetDiffY = layerData.OffsetY - layer.OffsetY;

int targetOffsetX = layerData.OffsetX == 0 && widthBigger ? layerData.SerializedRect.Left : layerData.OffsetX;
int targetOffsetY = layerData.OffsetY == 0 && heightBigger ? layerData.SerializedRect.Top : layerData.OffsetY;

Surface targetSizeSurface = new Surface(targetWidth, targetHeight);
using var foundLayerSnapshot = layer.LayerBitmap.SkiaSurface.Snapshot();
targetSizeSurface.SkiaSurface.Canvas.DrawImage(
foundLayerSnapshot,
SKRect.Create(layerData.OffsetX - layer.OffsetX, layerData.OffsetY - layer.OffsetY, layerData.Width, layerData.Height),
SKRect.Create(0, 0, layerData.Width, layerData.Height),
SKRect.Create(offsetDiffX, offsetDiffY, layer.Width, layer.Height),
SKRect.Create(0, 0, targetWidth, targetHeight),
Surface.ReplacingPaint);

layer.Offset = new Thickness(layerData.OffsetX, layerData.OffsetY, 0, 0);
layer.Offset = new Thickness(targetOffsetX, targetOffsetY, 0, 0);

SKRect finalRect = SKRect.Create(
layerData.SerializedRect.Left - layer.OffsetX,
Expand Down

0 comments on commit f8bb5d0

Please sign in to comment.