Exemplo n.º 1
0
        private void DrawElementAndItsChildren(BuildingElement element, CanvasContext context)
        {
            //rootElement.DrawSelf(graphics, context);
            element.DrawSelf(graphics, context);
            //CanvasContext context = GetCanvasForChildren(rootContext);
            //DrawChildren(rootElement, )
            List <BuildingElement> childElements = element.GetChildren();

            // Are there any children at all?
            if (childElements.Count > 0)
            {
                CanvasContext contextForChildren = element.GetContextForChildren(context);
                LayoutType    layoutForChildren  = element.GetLayoutForChildren();
                double        sizeRecalcRatio    = GetSizeRecalculationRatio(childElements, contextForChildren, layoutForChildren);
                //int childLeft = contextForChildren.Left;
                //int childTop = contextForChildren.Top;
                //int childLeft = GetChildLeftStart(childElements, sizeRecalcRatio, contextForChildren, layoutForChildren);
                //int childTop = GetChildTopStart(childElements, sizeRecalcRatio, contextForChildren, layoutForChildren);
                int childLeft = GetChildLeftStart(contextForChildren, layoutForChildren);
                int childTop  = GetChildTopStart(contextForChildren, layoutForChildren);
                foreach (BuildingElement childElement in childElements)
                {
                    //int childWidth = CalculateWidth(childLeft, childElement.GetRealWidth(), sizeRecalcRatio, contextForChildren, layoutForChildren);
                    //int childHeight = CalculateHeight(childTop, childElement.GetRealHeight(), sizeRecalcRatio, contextForChildren, layoutForChildren);
                    int childWidth  = CalculateWidth(childElement.GetRealWidth(), sizeRecalcRatio, contextForChildren, layoutForChildren);
                    int childHeight = CalculateHeight(childElement.GetRealHeight(), sizeRecalcRatio, contextForChildren, layoutForChildren);
                    // ***
                    childLeft -= GetWidthDecrement(childWidth, layoutForChildren);
                    childTop  -= GetHeightDecrement(childHeight, layoutForChildren);
                    // ***
                    CanvasContext childContext = GenerateChildContext(childLeft, childTop, childWidth, childHeight);
                    DrawElementAndItsChildren(childElement, childContext);
                    //childLeft += childWidth;
                    //childTop += childHeight;
                    childLeft += GetWidthIncrement(childWidth, layoutForChildren);
                    childTop  += GetHeightIncrement(childHeight, layoutForChildren);
                }
            }
        }