diff options
author | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-10 15:40:11 +0000 |
---|---|---|
committer | randomguy3 <randomguy3@7c02a99a-9b00-45e3-bf44-6f3dd7fddb64> | 2012-01-10 15:40:11 +0000 |
commit | 87294b7ebc03156f223052ca2a6c70463df568f0 (patch) | |
tree | 7200a2cb348b18c8d255931058ffab260f4225c3 /tikzit/src/common | |
parent | c372b719b84a320f6fb7cab6dc0d1ab94beacd78 (diff) |
GTK: Edge style support
git-svn-id: https://tikzit.svn.sourceforge.net/svnroot/tikzit/trunk@375 7c02a99a-9b00-45e3-bf44-6f3dd7fddb64
Diffstat (limited to 'tikzit/src/common')
-rw-r--r-- | tikzit/src/common/Graph.m | 19 | ||||
-rw-r--r-- | tikzit/src/common/GraphChange.h | 27 | ||||
-rw-r--r-- | tikzit/src/common/GraphChange.m | 34 |
3 files changed, 76 insertions, 4 deletions
diff --git a/tikzit/src/common/Graph.m b/tikzit/src/common/Graph.m index 62774f5..4250f7f 100644 --- a/tikzit/src/common/Graph.m +++ b/tikzit/src/common/Graph.m @@ -425,15 +425,26 @@ [[ch nodeRef] setPropertiesFromNode:[ch nwNode]]; break; case NodesPropertyChange: - en = [[ch nwNodeTable] keyEnumerator]; - Node *key; - while ((key = [en nextObject])) { - [key setPropertiesFromNode:[[ch nwNodeTable] objectForKey:key]]; + { + en = [[ch nwNodeTable] keyEnumerator]; + Node *key; + while ((key = [en nextObject])) { + [key setPropertiesFromNode:[[ch nwNodeTable] objectForKey:key]]; + } } break; case EdgePropertyChange: [[ch edgeRef] setPropertiesFromEdge:[ch nwEdge]]; break; + case EdgesPropertyChange: + { + en = [[ch nwEdgeTable] keyEnumerator]; + Edge *key; + while ((key = [en nextObject])) { + [key setPropertiesFromEdge:[[ch nwEdgeTable] objectForKey:key]]; + } + } + break; case NodesShift: en = [[ch affectedNodes] objectEnumerator]; NSPoint newLoc; diff --git a/tikzit/src/common/GraphChange.h b/tikzit/src/common/GraphChange.h index 0ad0c97..63bdfad 100644 --- a/tikzit/src/common/GraphChange.h +++ b/tikzit/src/common/GraphChange.h @@ -31,6 +31,7 @@ typedef enum { NodePropertyChange, EdgePropertyChange, NodesPropertyChange, + EdgesPropertyChange, NodesShift, NodesFlip, BoundingBoxChange, @@ -63,6 +64,7 @@ typedef enum { Node *oldNode, *nwNode; Edge *oldEdge, *nwEdge; BasicMapTable *oldNodeTable, *nwNodeTable; + BasicMapTable *oldEdgeTable, *nwEdgeTable; NSRect oldBoundingBox, nwBoundingBox; GraphElementData *oldGraphData, *nwGraphData; } @@ -146,6 +148,18 @@ typedef enum { @property (retain) BasicMapTable *nwNodeTable; /*! + @property oldEdgeTable + @brief A a table containing copies of a set of edges pre-change. + */ +@property (retain) BasicMapTable *oldEdgeTable; + +/*! + @property nwEdgeTable + @brief A a table containing copies of a set of edges post-change. + */ +@property (retain) BasicMapTable *nwEdgeTable; + +/*! @property oldBoundingBox @brief The old bounding box. */ @@ -227,6 +241,19 @@ typedef enum { + (GraphChange*)propertyChangeOfNodesFromOldCopies:(BasicMapTable*)oldC toNewCopies:(BasicMapTable*)newC; +/*! + @brief Construct a property change of set of edges. + @details Construct a property change of set of edges. oldC and newC should be + constructed using the class method [Graph edgeTableForEdges:] before + and after the property change, respectively. The affected edges are + keys(oldC) = keys(newC). + @param oldC a table of copies of edges pre-change + @param newC a table of copies of edges post-change + @result A property change of a set of edges. + */ ++ (GraphChange*)propertyChangeOfEdgesFromOldCopies:(BasicMapTable*)oldC + toNewCopies:(BasicMapTable*)newC; + /*! @brief Construct a shift of a set of nodes by a given point. diff --git a/tikzit/src/common/GraphChange.m b/tikzit/src/common/GraphChange.m index d09e732..3635383 100644 --- a/tikzit/src/common/GraphChange.m +++ b/tikzit/src/common/GraphChange.m @@ -142,6 +142,24 @@ } } +- (BasicMapTable*)oldEdgeTable { return oldEdgeTable; } + +- (void)setOldEdgeTable:(BasicMapTable*)tab { + if (oldEdgeTable != tab) { + [oldEdgeTable release]; + oldEdgeTable = [tab retain]; + } +} + +- (BasicMapTable*)nwEdgeTable { return nwEdgeTable; } + +- (void)setNwEdgeTable:(BasicMapTable*)tab { + if (nwEdgeTable != tab) { + [nwEdgeTable release]; + nwEdgeTable = [tab retain]; + } +} + - (NSRect)oldBoundingBox { return oldBoundingBox; } - (void)setOldBoundingBox:(NSRect)bbox { @@ -204,6 +222,11 @@ [inverse setOldEdge:[self nwEdge]]; [inverse setNwEdge:[self oldEdge]]; break; + case EdgesPropertyChange: + [inverse setChangeType:EdgesPropertyChange]; + [inverse setOldEdgeTable:[self nwEdgeTable]]; + [inverse setNwEdgeTable:[self oldEdgeTable]]; + break; case NodesShift: [inverse setChangeType:NodesShift]; [inverse setAffectedNodes:[self affectedNodes]]; @@ -240,6 +263,8 @@ [oldEdge release]; [oldNodeTable release]; [nwNodeTable release]; + [oldEdgeTable release]; + [nwEdgeTable release]; [super dealloc]; } @@ -287,6 +312,15 @@ return [gc autorelease]; } ++ (GraphChange*)propertyChangeOfEdgesFromOldCopies:(BasicMapTable*)oldC + toNewCopies:(BasicMapTable*)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]; |