Пример #1
0
        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);
        }
Пример #2
0
        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);
                }
            }
        }
Пример #3
0
 public EllipseConnector(EllipseItem end1, EllipseItem end2)
 {
     EllipseEnd1 = end1;
     EllipseEnd2 = end2;
 }