protected virtual GraphCluster AllocCluster() { var cluster = new GraphCluster(_global_cluster_index); _global_cluster_index++; return(cluster); }
protected virtual void ParseChilds(ref GraphCluster cluster, ref List <GraphObject> objects, ref List <GraphRelation> relations, ref List <GraphCluster> clusters, Node myFocusNode, Node focusNode, IList <Node> childs) { foreach (var c in childs) { var obj = AllocObject(); obj.Label = c.ShortName; obj.Shape = GraphShapeEnum.Circle; obj.Rect = c.Rect.CloneType(); if (c == focusNode) { obj.FillColor = GraphColor.Red; } if (c == myFocusNode) { obj.Color = GraphColor.Red; } cluster.Objects.Add(obj); var result = ParseNode(c); if (result.Element is GraphCluster) { var cc = result.Element as GraphCluster; relations.Add(new GraphRelation(obj, cc.RelateToCluster, relateFromObj2Cluster: cc)); clusters.Add(cc); } else { objects.Add(result.Element as GraphObject); } relations.AddRange(result.Relations); clusters.AddRange(result.Clusters); } }
public GraphRelation(GraphObject obj1, GraphObject obj2, GraphCluster relateFromObj1Cluster = null, GraphCluster relateFromObj2Cluster = null) : this(obj1, obj2) { this.RelateFromObj1Cluster = relateFromObj1Cluster; this.RelateFromObj2Cluster = relateFromObj2Cluster; }