Code refactoring

This commit is contained in:
Jaex 2023-12-27 10:27:54 +03:00
parent aa6f127825
commit 40bd40c52e
2 changed files with 17 additions and 18 deletions

View file

@ -35,9 +35,9 @@ internal class ImageEditorHistory : IDisposable
public bool CanUndo => undoMementoStack.Count > 0; public bool CanUndo => undoMementoStack.Count > 0;
public bool CanRedo => redoMementoStack.Count > 0; public bool CanRedo => redoMementoStack.Count > 0;
private readonly ShapeManager shapeManager;
private Stack<ImageEditorMemento> undoMementoStack = new Stack<ImageEditorMemento>(); private Stack<ImageEditorMemento> undoMementoStack = new Stack<ImageEditorMemento>();
private Stack<ImageEditorMemento> redoMementoStack = new Stack<ImageEditorMemento>(); private Stack<ImageEditorMemento> redoMementoStack = new Stack<ImageEditorMemento>();
private readonly ShapeManager shapeManager;
public ImageEditorHistory(ShapeManager shapeManager) public ImageEditorHistory(ShapeManager shapeManager)
{ {
@ -50,7 +50,7 @@ private void AddMemento(ImageEditorMemento memento)
foreach (ImageEditorMemento redoMemento in redoMementoStack) foreach (ImageEditorMemento redoMemento in redoMementoStack)
{ {
redoMemento.Dispose(); redoMemento?.Dispose();
} }
redoMementoStack.Clear(); redoMementoStack.Clear();
@ -85,24 +85,23 @@ public void Undo()
{ {
if (CanUndo) if (CanUndo)
{ {
ImageEditorMemento redoMemento; ImageEditorMemento undoMemento = undoMementoStack.Pop();
ImageEditorMemento memento = undoMementoStack.Pop();
if (memento.Shapes != null) if (undoMemento.Shapes != null)
{ {
if (memento.Canvas == null) if (undoMemento.Canvas == null)
{ {
redoMemento = GetMementoFromShapes(); ImageEditorMemento redoMemento = GetMementoFromShapes();
redoMementoStack.Push(redoMemento); redoMementoStack.Push(redoMemento);
shapeManager.RestoreState(memento); shapeManager.RestoreState(undoMemento);
} }
else else
{ {
redoMemento = GetMementoFromCanvas(); ImageEditorMemento redoMemento = GetMementoFromCanvas();
redoMementoStack.Push(redoMemento); redoMementoStack.Push(redoMemento);
shapeManager.RestoreState(memento); shapeManager.RestoreState(undoMemento);
} }
} }
} }
@ -118,15 +117,15 @@ public void Redo()
{ {
if (redoMemento.Canvas == null) if (redoMemento.Canvas == null)
{ {
ImageEditorMemento memento = GetMementoFromShapes(); ImageEditorMemento undoMemento = GetMementoFromShapes();
undoMementoStack.Push(memento); undoMementoStack.Push(undoMemento);
shapeManager.RestoreState(redoMemento); shapeManager.RestoreState(redoMemento);
} }
else else
{ {
ImageEditorMemento memento = GetMementoFromCanvas(); ImageEditorMemento undoMemento = GetMementoFromCanvas();
undoMementoStack.Push(memento); undoMementoStack.Push(undoMemento);
shapeManager.RestoreState(redoMemento); shapeManager.RestoreState(redoMemento);
} }
@ -136,16 +135,16 @@ public void Redo()
public void Dispose() public void Dispose()
{ {
foreach (ImageEditorMemento memento in undoMementoStack) foreach (ImageEditorMemento undoMemento in undoMementoStack)
{ {
memento.Dispose(); undoMemento?.Dispose();
} }
undoMementoStack.Clear(); undoMementoStack.Clear();
foreach (ImageEditorMemento redoMemento in redoMementoStack) foreach (ImageEditorMemento redoMemento in redoMementoStack)
{ {
redoMemento.Dispose(); redoMemento?.Dispose();
} }
redoMementoStack.Clear(); redoMementoStack.Clear();

View file

@ -49,7 +49,7 @@ public void Dispose()
{ {
foreach (BaseShape shape in Shapes) foreach (BaseShape shape in Shapes)
{ {
shape.Dispose(); shape?.Dispose();
} }
Shapes.Clear(); Shapes.Clear();