Esempio n. 1
0
    private void ArrangeNodeHorizontally(RPNode node, Size finalSize)
    {
        if (node == null)
        {
            return;
        }

        if (!node.IsArrangedHorizontally())
        {
            // We must resolve dependencies first.
            ArrangeNodeHorizontally(node.m_leftOfNode, finalSize);
            ArrangeNodeHorizontally(node.m_aboveNode, finalSize);
            ArrangeNodeHorizontally(node.m_rightOfNode, finalSize);
            ArrangeNodeHorizontally(node.m_belowNode, finalSize);
            ArrangeNodeHorizontally(node.m_alignLeftWithNode, finalSize);
            ArrangeNodeHorizontally(node.m_alignTopWithNode, finalSize);
            ArrangeNodeHorizontally(node.m_alignRightWithNode, finalSize);
            ArrangeNodeHorizontally(node.m_alignBottomWithNode, finalSize);
            ArrangeNodeHorizontally(node.m_alignHorizontalCenterWithNode, finalSize);
            ArrangeNodeHorizontally(node.m_alignVerticalCenterWithNode, finalSize);

            double nodeMeasureRectX, nodeMeasureRectWidth;
            CalculateMeasureRectHorizontally(node, finalSize, out nodeMeasureRectX, out nodeMeasureRectWidth);
            node.m_measureRect.X     = nodeMeasureRectX;
            node.m_measureRect.Width = nodeMeasureRectWidth;
            double nodeArrangeRectX, nodeArrangeRectWidth;
            CalculateArrangeRectHorizontally(node, out nodeArrangeRectX, out nodeArrangeRectWidth);
            node.m_arrangeRect.X     = nodeArrangeRectX;
            node.m_arrangeRect.Width = nodeArrangeRectWidth;
            node.SetArrangedHorizontally(true);
        }
    }