|
@@ -1,25 +1,28 @@
|
|
|
using Drawie.Backend.Core.Numerics;
|
|
|
+using Drawie.Backend.Core.Vector;
|
|
|
using Drawie.Numerics;
|
|
|
|
|
|
namespace PixiEditor.ChangeableDocument.Changes.Drawing;
|
|
|
internal class ClearSelectedArea_Change : Change
|
|
|
{
|
|
|
+ private VectorPath clearArea;
|
|
|
private readonly Guid memberGuid;
|
|
|
private readonly bool drawOnMask;
|
|
|
private CommittedChunkStorage? savedChunks;
|
|
|
private int frame;
|
|
|
|
|
|
[GenerateMakeChangeAction]
|
|
|
- public ClearSelectedArea_Change(Guid memberGuid, bool drawOnMask, int frame)
|
|
|
+ public ClearSelectedArea_Change(Guid memberGuid, VectorPath clearArea, bool drawOnMask, int frame)
|
|
|
{
|
|
|
this.memberGuid = memberGuid;
|
|
|
this.drawOnMask = drawOnMask;
|
|
|
+ this.clearArea = clearArea;
|
|
|
this.frame = frame;
|
|
|
}
|
|
|
|
|
|
public override bool InitializeAndValidate(Document target)
|
|
|
{
|
|
|
- return !target.Selection.SelectionPath.IsEmpty && DrawingChangeHelper.IsValidForDrawing(target, memberGuid, drawOnMask);
|
|
|
+ return clearArea is { IsEmpty: false } && DrawingChangeHelper.IsValidForDrawing(target, memberGuid, drawOnMask);
|
|
|
}
|
|
|
|
|
|
public override OneOf<None, IChangeInfo, List<IChangeInfo>> Apply(Document target, bool firstApply, out bool ignoreInUndo)
|
|
@@ -29,10 +32,10 @@ internal class ClearSelectedArea_Change : Change
|
|
|
|
|
|
var image = DrawingChangeHelper.GetTargetImageOrThrow(target, memberGuid, drawOnMask, frame);
|
|
|
|
|
|
- RectD bounds = target.Selection.SelectionPath.Bounds;
|
|
|
+ RectD bounds = clearArea.Bounds;
|
|
|
RectI intBounds = (RectI)bounds.Intersect(new RectD(0, 0, target.Size.X, target.Size.Y)).RoundOutwards();
|
|
|
|
|
|
- image.EnqueueClearPath(target.Selection.SelectionPath, intBounds);
|
|
|
+ image.EnqueueClearPath(clearArea, intBounds);
|
|
|
var affArea = image.FindAffectedArea();
|
|
|
savedChunks = new(image, affArea.Chunks);
|
|
|
image.CommitChanges();
|