asciipumper- mspaint style program to create irc ascii art |
git clone git://git.acid.vegas/asciipumper.git |
Log | Files | Refs | Archive | README |
KeypressAction.cs (1290B)
1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 5 namespace AsciiPumper 6 { 7 public class KeypressAction : IUndoableAction 8 { 9 10 private struct CharChangeInfo 11 { 12 public int x; 13 public int y; 14 public char origchar; 15 public char newchar; 16 17 } 18 private List<CharChangeInfo> ChangedCharacters = new List<CharChangeInfo>(); 19 20 public void AddCharacter(int x, int y, char origchar, char newchar) 21 { 22 foreach (CharChangeInfo info in ChangedCharacters) 23 { 24 if (info.x == x && info.y == y) 25 { 26 ChangedCharacters.Remove(info); 27 break; 28 } 29 } 30 CharChangeInfo newinfo = new CharChangeInfo(); 31 newinfo.x = x; 32 newinfo.y = y; 33 newinfo.origchar = origchar; 34 newinfo.newchar = newchar; 35 ChangedCharacters.Add(newinfo); 36 } 37 38 #region IUndoableAction Members 39 40 public void Undo(PaintCanvas canvas) 41 { 42 foreach (CharChangeInfo info in ChangedCharacters) 43 { 44 canvas.CellRows[info.y][info.x].Character = info.origchar; 45 } 46 canvas.CompleteRepaint(); 47 } 48 49 public void Redo(PaintCanvas canvas) 50 { 51 foreach (CharChangeInfo info in ChangedCharacters) 52 { 53 canvas.CellRows[info.y][info.x].Character = info.newchar; 54 } 55 canvas.CompleteRepaint(); 56 } 57 58 #endregion 59 } 60 }