private EllipseItem CreateEllipseItem(GmpFactorTreeNode node, object value, double width, double height, double x, double y) { EllipseItem result = new EllipseItem(node); result.Value = value; result.Width = width; result.Height = height; result.Y = y; result.X = x; return(result); }
private void CalculateFactorTree() { if (this.m_FactorTree != null) { if (m_EllipseItems == null) { m_EllipseItems = new Dictionary <GmpFactorTreeNode, EllipseItem>(); } GmpFactorTreeNode root = FactorTree.Root; double y = ItemSize / 2; double xRoot = 80; EllipseItem item; if (m_EllipseItems.ContainsKey(root)) { item = m_EllipseItems[root]; } else { item = CreateEllipseItem(root, root.Value, ItemSize, ItemSize, xRoot, y); } item.IsRoot = true; EllipseItem parent = item; item.IsPrime = root.IsPrime; GmpFactorTreeNode node = root.LeftChild; double xleft = 10; double xright = 100; bool even = true; while (node != null) { EllipseItem i = null; if (m_EllipseItems.ContainsKey(node)) { i = m_EllipseItems[node]; } else { i = new EllipseItem(node); } i.Parent = parent; i.Allign = EllipseAllign.Right; double xItem = xright; if (even) { i.Allign = EllipseAllign.Left; xItem = xleft; y += ItemSize + item.Height / 2; } else { //y += ItemSize/2; } i.Value = node.Value; i.Height = ItemSize; i.Width = ItemSize; i.X = xItem; i.Y = y; i.IsPrime = node.IsPrime; if (!m_EllipseItems.ContainsKey(node)) { m_EllipseItems.Add(node, i); } even = !even; xright += 10; xleft += 10; if (node.RightSibling != null) { i.IsPrime = true; node = node.RightSibling; continue; } parent = i; node = node.LeftChild; } if (!m_EllipseItems.ContainsKey(root)) { m_EllipseItems.Add(root, item); } } }
public EllipseConnector(EllipseItem end1, EllipseItem end2) { EllipseEnd1 = end1; EllipseEnd2 = end2; }