CraftSynth.ImageEditor – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 using System.Collections.Generic;
2  
3 namespace CraftSynth.ImageEditor
4 {
5 /// <summary>
6 /// Delete command
7 /// </summary>
8 internal class CommandDelete : Command
9 {
10 private List<DrawObject> cloneList; // contains selected items which are deleted
11  
12 // Create this command BEFORE applying Delete All function.
13 public CommandDelete(Layers list)
14 {
15 cloneList = new List<DrawObject>();
16  
17 // Make clone of the list selection.
18  
19 foreach (DrawObject o in list[list.ActiveLayerIndex].Graphics.Selection)
20 {
21 cloneList.Add(o.Clone());
22 }
23 }
24  
25 public override void Undo(Layers list)
26 {
27 list[list.ActiveLayerIndex].Graphics.UnselectAll();
28  
29 // Add all objects from cloneList to list.
30 foreach (DrawObject o in cloneList)
31 {
32 list[list.ActiveLayerIndex].Graphics.Add(o);
33 }
34 }
35  
36 public override void Redo(Layers list)
37 {
38 // Delete from list all objects kept in cloneList
39  
40 int n = list[list.ActiveLayerIndex].Graphics.Count;
41  
42 for (int i = n - 1; i >= 0; i--)
43 {
44 bool toDelete = false;
45 DrawObject objectToDelete = list[list.ActiveLayerIndex].Graphics[i];
46  
47 foreach (DrawObject o in cloneList)
48 {
49 if (objectToDelete.ID ==
50 o.ID)
51 {
52 toDelete = true;
53 break;
54 }
55 }
56  
57 if (toDelete)
58 {
59 list[list.ActiveLayerIndex].Graphics.RemoveAt(i);
60 }
61 }
62 }
63  
64 #region Destruction
65 // Flag: Has Dispose already been called?
66 bool _disposed = false;
67  
68 // Protected implementation of Dispose pattern.
69 public override void Dispose(bool disposing)
70 {
71 if (!this._disposed)
72 {
73  
74 if (disposing)
75 {
76 // Free any managed objects here.
77 //
78 if (this.cloneList != null)
79 {
80 foreach (DrawObject drawObject in cloneList)
81 {
82 if (drawObject != null)
83 {
84 drawObject.Dispose();
85 }
86 }
87 }
88 }
89  
90 // Free any unmanaged objects here.
91 //
92  
93 this._disposed = true;
94 }
95 }
96  
97 ~CommandDelete()
98 {
99 this.Dispose(false);
100 }
101 #endregion
102 }
103 }