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 }