internal void FillBetween(int layerId, byte?paletteId, byte?imageId, Point start, Point end) { CellPainter cellPainter = CellPainterFactory.GetCellPainter(start, end); PaintActionList paintActions = cellPainter.Paint(layerId, paletteId, imageId, this); _undoLog.Push(paintActions); }
internal void Redo() { if (_redoLog.Count > 0) { PaintActionList paintActions = _redoLog.Pop(); PaintActionList undoActionList = new PaintActionList(); // undo that action foreach (PaintAction paintAction in paintActions) { CellPainter cellPainter = CellPainterFactory.GetCellPainter(new Point(paintAction.X, paintAction.Y), new Point(paintAction.X, paintAction.Y)); PaintActionList paintActionList = cellPainter.Paint(paintAction.Layer, paintAction.PaletteId, paintAction.ImageId, this); undoActionList.Add(paintActionList); } _undoLog.Push(undoActionList); } }
internal void Undo() { // pop most recent action off stack if (_undoLog.Count > 0) { PaintActionList paintActions = _undoLog.Pop(); PaintActionList redoActionList = new PaintActionList(); // undo that action foreach (PaintAction paintAction in paintActions) { CellPainter cellPainter = CellPainterFactory.GetCellPainter(new Point(paintAction.X, paintAction.Y), new Point(paintAction.X, paintAction.Y)); PaintActionList paintActionList = cellPainter.Paint(paintAction.Layer, paintAction.PaletteId, paintAction.ImageId, this); redoActionList.Add(paintActionList); } _redoLog.Push(redoActionList); } }