5 // Created by 柳 on 09/09/24.
6 // Copyright 2009 __MyCompanyName__. All rights reserved.
9 #import "ElisUndoManager.h"
12 @implementation ElisUndoManager
16 undoStack = [[NSMutableArray alloc] init];
20 - (void)pushOperation:(ElisLayer*)layer
22 NSMutableData* data = [[NSMutableData alloc] init];
23 NSKeyedArchiver* encoder = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
25 [layer saveToEncoder:encoder];
26 [encoder finishEncoding];
28 // [undoStack addObject:layer];
29 // [undoStack addObject:data];
30 [undoStack removeObjectsInRange:NSMakeRange(index, [undoStack count] - index)];
33 if([data isEqualToData:[undoStack objectAtIndex:index-1]])
36 [undoStack insertObject:layer atIndex:index];
37 [undoStack insertObject:data atIndex:index+1];
41 - (ElisLayer*)popOperation
43 NSData* data = [undoStack objectAtIndex:index-1];
44 ElisLayer* layer = [undoStack objectAtIndex:index-2];
46 NSKeyedUnarchiver* decoder = [[NSKeyedUnarchiver alloc] initForReadingWithData:data];
47 [layer loadFromDecoder:decoder];
48 [decoder finishDecoding];
64 return [undoStack count] != 0;
69 return index+2 < [undoStack count];