public PatriarchsViewerWin(IBaseWindow baseWin, int minGens) { InitializeComponent(); fBase = baseWin; fTipShow = false; using (Graph graph = PatriarchsMan.GetPatriarchsGraph(fBase.Context, minGens, false, true)) { ArborSystem sys = fArborViewer.Sys; foreach (Vertex vtx in graph.Vertices) { var arbNode = sys.addNode(vtx.Sign) as ArborNodeEx; PGNode pgNode = (PGNode)vtx.Value; arbNode.Color = (pgNode.Type == PGNodeType.Intersection) ? Colors.BlueViolet : Colors.Navy; arbNode.Mass = pgNode.Size; } foreach (Edge edge in graph.Edges) { sys.addEdge(edge.Source.Sign, edge.Target.Sign); } } fArborViewer.NodesDragging = true; }
public void CreateArborGraph(IBaseWindow baseWin, int minGens, bool loneSuppress) { fBase = baseWin; try { fSys = new ArborSystem(1000, 1000, 0.1, null); //(10000, 1000, 0.1, this); fSys.setScreenSize(50, 50); fSys.OnStop += OnArborStop; using (ExtList <PatriarchObj> patList = PatriarchsMan.GetPatriarchsLinks( baseWin.Context, minGens, false, loneSuppress)) { int num = patList.Count; for (int i = 0; i < num; i++) { PatriarchObj pObj = patList[i]; if (!loneSuppress || pObj.HasLinks) { ArborNode node = fSys.addNode(pObj.IRec.XRef); node.Data = pObj; } } for (int i = 0; i < num; i++) { PatriarchObj pat1 = patList[i]; foreach (PatriarchObj pat2 in pat1.Links) { fSys.addEdge(pat1.IRec.XRef, pat2.IRec.XRef); } } } z = -50; fSys.start(); } catch (Exception ex) { Logger.LogWrite("TreeVizControl.CreateArborGraph(): " + ex.Message); } }