public static string GetShortString(this GroupNodeType op) { switch (op) { case GroupNodeType.AND: return("and"); case GroupNodeType.NAND: return("and not"); case GroupNodeType.NOR: return("or not"); case GroupNodeType.OR: return("or"); default: throw new ArgumentOutOfRangeException("op"); } }
private bool TryGroupNode(INode groupNode, IEdge edge, String srcName, String tgtName, GroupNodeType srcGroupNodeType, GroupNodeType tgtGroupNodeType, ref GroupMode grpMode) { if (groupNode == edge.Target) { grpMode = tgtGroupNodeType.GetEdgeGroupMode(edge.Type, edge.Source.Type); if ((grpMode & GroupMode.GroupIncomingNodes) != 0) { ycompStream.Write("moveNode \"n" + srcName + "\" \"n" + tgtName + "\"\n"); return(true); } } else if (groupNode == edge.Source) { grpMode = srcGroupNodeType.GetEdgeGroupMode(edge.Type, edge.Target.Type); if ((grpMode & GroupMode.GroupOutgoingNodes) != 0) { ycompStream.Write("moveNode \"n" + tgtName + "\" \"n" + srcName + "\"\n"); return(true); } } return(false); }
private bool TryGroupNode(INode groupNode, IEdge edge, String srcName, String tgtName, GroupNodeType srcGroupNodeType, GroupNodeType tgtGroupNodeType, ref GroupMode grpMode) { if(groupNode == edge.Target) { grpMode = tgtGroupNodeType.GetEdgeGroupMode(edge.Type, edge.Source.Type); if((grpMode & GroupMode.GroupIncomingNodes) != 0) { ycompStream.Write("moveNode \"n" + srcName + "\" \"n" + tgtName + "\"\n"); return true; } } else if(groupNode == edge.Source) { grpMode = srcGroupNodeType.GetEdgeGroupMode(edge.Type, edge.Target.Type); if((grpMode & GroupMode.GroupOutgoingNodes) != 0) { ycompStream.Write("moveNode \"n" + tgtName + "\" \"n" + srcName + "\"\n"); return true; } } return false; }
public GroupNode( GroupNodeType op ) { Op = op; UpdateLabel(); }
public void AddEdge(IEdge edge) { if (IsEdgeExcluded(edge)) { return; } String edgeRealizerName = edgeRealizerOverride ?? realizers.GetEdgeRealizer(edge.Type, dumpInfo); String edgeName = graph.GetElementName(edge); String srcName = graph.GetElementName(edge.Source); String tgtName = graph.GetElementName(edge.Target); if (edge.Source != edge.Target) { GroupNodeType srcGroupNodeType = dumpInfo.GetGroupNodeType(edge.Source.Type); GroupNodeType tgtGroupNodeType = dumpInfo.GetGroupNodeType(edge.Target.Type); INode groupNodeFirst = null, groupNodeSecond = null; if (tgtGroupNodeType != null) { groupNodeFirst = edge.Target; } if (srcGroupNodeType != null) { if (groupNodeFirst == null) { groupNodeFirst = edge.Source; } else if (srcGroupNodeType.Priority > tgtGroupNodeType.Priority) { groupNodeSecond = groupNodeFirst; groupNodeFirst = edge.Source; } else { groupNodeSecond = edge.Source; } } GroupMode grpMode = GroupMode.None; bool groupedNode = false; if (groupNodeFirst != null) { groupedNode = TryGroupNode(groupNodeFirst, edge, srcName, tgtName, srcGroupNodeType, tgtGroupNodeType, ref grpMode); if (!groupedNode && groupNodeSecond != null) { groupedNode = TryGroupNode(groupNodeSecond, edge, srcName, tgtName, srcGroupNodeType, tgtGroupNodeType, ref grpMode); } } // If no grouping rule applies, grpMode is GroupMode.None (= 0) if ((grpMode & GroupMode.Hidden) != 0) { hiddenEdges[edge] = true; isDirty = true; isLayoutDirty = true; return; } } ycompStream.Write("addEdge \"e" + edgeName + "\" \"n" + srcName + "\" \"n" + tgtName + "\" \"" + edgeRealizerName + "\" \"" + GetElemLabel(edge) + "\"\n"); foreach (AttributeType attrType in edge.Type.AttributeTypes) { string attrTypeString; string attrValueString; EncodeAttr(attrType, edge, out attrTypeString, out attrValueString); ycompStream.Write("changeEdgeAttr \"e" + edgeName + "\" \"" + attrType.OwnerType.Name + "::" + attrType.Name + " : " + attrTypeString + "\" \"" + attrValueString + "\"\n"); } isDirty = true; isLayoutDirty = true; }
public GroupNode(GroupNodeType op) { Op = op; UpdateLabel(); }