diff options
Diffstat (limited to 'tikzit/src/common/GraphChange.m')
-rw-r--r-- | tikzit/src/common/GraphChange.m | 252 |
1 files changed, 0 insertions, 252 deletions
diff --git a/tikzit/src/common/GraphChange.m b/tikzit/src/common/GraphChange.m deleted file mode 100644 index 239ae23..0000000 --- a/tikzit/src/common/GraphChange.m +++ /dev/null @@ -1,252 +0,0 @@ -// -// GraphChange.m -// TikZiT -// -// Copyright 2010 Aleks Kissinger. All rights reserved. -// -// -// This file is part of TikZiT. -// -// TikZiT is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// TikZiT is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with TikZiT. If not, see <http://www.gnu.org/licenses/>. -// - - -// GraphChange : store the data associated to a single, undo-able change -// to a graph. An undo manager should maintain a stack of such changes -// and undo/redo them on request using [graph applyGraphChange:...]. - -#import "GraphChange.h" - - -@implementation GraphChange - -- (id)init { - return [super init]; -} - -- (void)dealloc { - [affectedNodes release]; - [affectedEdges release]; - [nodeRef release]; - [edgeRef release]; - [oldNode release]; - [nwNode release]; - [oldEdge release]; - [nwEdge release]; - [oldNodeTable release]; - [nwNodeTable release]; - [oldEdgeTable release]; - [nwEdgeTable release]; - [oldGraphData release]; - [nwGraphData release]; - [oldNodeOrder release]; - [nwNodeOrder release]; - [oldEdgeOrder release]; - [nwEdgeOrder release]; - - [super dealloc]; -} - -@synthesize changeType; -@synthesize shiftPoint, horizontal; -@synthesize affectedEdges, affectedNodes; -@synthesize edgeRef, nodeRef; -@synthesize nwNode, oldNode; -@synthesize nwEdge, oldEdge; -@synthesize oldNodeTable, nwNodeTable; -@synthesize oldEdgeTable, nwEdgeTable; -@synthesize oldBoundingBox, nwBoundingBox; -@synthesize oldGraphData, nwGraphData; -@synthesize oldNodeOrder, nwNodeOrder; -@synthesize oldEdgeOrder, nwEdgeOrder; - -- (GraphChange*)invert { - GraphChange *inverse = [[GraphChange alloc] init]; - [inverse setChangeType:[self changeType]]; - switch ([self changeType]) { - case GraphAddition: - [inverse setChangeType:GraphDeletion]; - inverse->affectedNodes = [affectedNodes retain]; - inverse->affectedEdges = [affectedEdges retain]; - break; - case GraphDeletion: - [inverse setChangeType:GraphAddition]; - inverse->affectedNodes = [affectedNodes retain]; - inverse->affectedEdges = [affectedEdges retain]; - break; - case NodePropertyChange: - inverse->nodeRef = [nodeRef retain]; - inverse->oldNode = [nwNode retain]; - inverse->nwNode = [oldNode retain]; - break; - case NodesPropertyChange: - inverse->oldNodeTable = [nwNodeTable retain]; - inverse->nwNodeTable = [oldNodeTable retain]; - break; - case EdgePropertyChange: - inverse->edgeRef = [edgeRef retain]; - inverse->oldEdge = [nwEdge retain]; - inverse->nwEdge = [oldEdge retain]; - break; - case EdgesPropertyChange: - inverse->oldEdgeTable = [nwEdgeTable retain]; - inverse->nwEdgeTable = [oldEdgeTable retain]; - break; - case NodesShift: - inverse->affectedNodes = [affectedNodes retain]; - [inverse setShiftPoint:NSMakePoint(-[self shiftPoint].x, - -[self shiftPoint].y)]; - break; - case NodesFlip: - inverse->affectedNodes = [affectedNodes retain]; - [inverse setHorizontal:[self horizontal]]; - break; - case EdgesReverse: - inverse->affectedEdges = [affectedEdges retain]; - break; - case BoundingBoxChange: - inverse->oldBoundingBox = nwBoundingBox; - inverse->nwBoundingBox = oldBoundingBox; - break; - case GraphPropertyChange: - inverse->oldGraphData = [nwGraphData retain]; - inverse->nwGraphData = [oldGraphData retain]; - break; - case NodeOrderChange: - inverse->affectedNodes = [affectedNodes retain]; - inverse->oldNodeOrder = [nwNodeOrder retain]; - inverse->nwNodeOrder = [oldNodeOrder retain]; - break; - case EdgeOrderChange: - inverse->affectedEdges = [affectedEdges retain]; - inverse->oldEdgeOrder = [nwEdgeOrder retain]; - inverse->nwEdgeOrder = [oldEdgeOrder retain]; - break; - } - - return [inverse autorelease]; -} - -+ (GraphChange*)graphAdditionWithNodes:(NSSet *)ns edges:(NSSet *)es { - GraphChange *gc = [[GraphChange alloc] init]; - [gc setChangeType:GraphAddition]; - [gc setAffectedNodes:ns]; - [gc setAffectedEdges:es]; - return [gc autorelease]; -} - -+ (GraphChange*)graphDeletionWithNodes:(NSSet *)ns edges:(NSSet *)es { - GraphChange *gc = [[GraphChange alloc] init]; - [gc setChangeType:GraphDeletion]; - [gc setAffectedNodes:ns]; - [gc setAffectedEdges:es]; - return [gc autorelease]; -} - -+ (GraphChange*)propertyChangeOfNode:(Node*)nd fromOld:(Node*)old toNew:(Node*)nw { - GraphChange *gc = [[GraphChange alloc] init]; - [gc setChangeType:NodePropertyChange]; - [gc setNodeRef:nd]; - [gc setOldNode:old]; - [gc setNwNode:nw]; - return [gc autorelease]; -} - -+ (GraphChange*)propertyChangeOfNodesFromOldCopies:(NSMapTable*)oldC - toNewCopies:(NSMapTable*)newC { - GraphChange *gc = [[GraphChange alloc] init]; - [gc setChangeType:NodesPropertyChange]; - [gc setOldNodeTable:oldC]; - [gc setNwNodeTable:newC]; - return [gc autorelease]; -} - -+ (GraphChange*)propertyChangeOfEdge:(Edge*)e fromOld:(Edge *)old toNew:(Edge *)nw { - GraphChange *gc = [[GraphChange alloc] init]; - [gc setChangeType:EdgePropertyChange]; - [gc setEdgeRef:e]; - [gc setOldEdge:old]; - [gc setNwEdge:nw]; - return [gc autorelease]; -} - -+ (GraphChange*)propertyChangeOfEdgesFromOldCopies:(NSMapTable*)oldC - toNewCopies:(NSMapTable*)newC { - GraphChange *gc = [[GraphChange alloc] init]; - [gc setChangeType:EdgesPropertyChange]; - [gc setOldEdgeTable:oldC]; - [gc setNwEdgeTable:newC]; - return [gc autorelease]; -} - -+ (GraphChange*)shiftNodes:(NSSet*)ns byPoint:(NSPoint)p { - GraphChange *gc = [[GraphChange alloc] init]; - [gc setChangeType:NodesShift]; - [gc setAffectedNodes:ns]; - [gc setShiftPoint:p]; - return [gc autorelease]; -} - -+ (GraphChange*)flipNodes:(NSSet*)ns horizontal:(BOOL)b { - GraphChange *gc = [[GraphChange alloc] init]; - [gc setChangeType:NodesFlip]; - [gc setAffectedNodes:ns]; - [gc setHorizontal:b]; - return [gc autorelease]; -} - -+ (GraphChange*)reverseEdges:(NSSet*)es { - GraphChange *gc = [[GraphChange alloc] init]; - [gc setChangeType:EdgesReverse]; - [gc setAffectedEdges:es]; - return [gc autorelease]; -} - -+ (GraphChange*)changeBoundingBoxFrom:(NSRect)oldBB to:(NSRect)newBB { - GraphChange *gc = [[GraphChange alloc] init]; - [gc setChangeType:BoundingBoxChange]; - [gc setOldBoundingBox:oldBB]; - [gc setNwBoundingBox:newBB]; - return [gc autorelease]; -} - -+ (GraphChange*)propertyChangeOfGraphFrom:(GraphElementData*)oldData to:(GraphElementData*)newData { - GraphChange *gc = [[GraphChange alloc] init]; - [gc setChangeType:GraphPropertyChange]; - [gc setOldGraphData:oldData]; - [gc setNwGraphData:newData]; - return [gc autorelease]; -} - -+ (GraphChange*)nodeOrderChangeFrom:(NSArray*)old to:(NSArray*)new moved:(NSSet*)affected { - GraphChange *gc = [[GraphChange alloc] init]; - [gc setChangeType:NodeOrderChange]; - [gc setAffectedNodes:affected]; - [gc setOldNodeOrder:old]; - [gc setNwNodeOrder:new]; - return [gc autorelease]; -} - -+ (GraphChange*)edgeOrderChangeFrom:(NSArray*)old to:(NSArray*)new moved:(NSSet*)affected { - GraphChange *gc = [[GraphChange alloc] init]; - [gc setChangeType:EdgeOrderChange]; - [gc setAffectedEdges:affected]; - [gc setOldEdgeOrder:old]; - [gc setNwEdgeOrder:new]; - return [gc autorelease]; -} - -@end - -// vi:ft=objc:ts=4:noet:sts=4:sw=4 |