Ejemplo n.º 1
0
        public static ICoreUIWindow DomExample(this ICoreUIWindow window)
        {
            var root = new Div(d =>
            {
                var solidColoredBorder = new BorderStyle
                {
                    Paint = Color.Black,
                    Width = 1,
                };
                d.Style.Width               = 50f.Percent();
                d.Style.Height              = 400f.Px();
                d.Style.Border              = new BorderBox(solidColoredBorder);
                d.Style.Margin              = new Box(20, 40);
                d.Style.Padding             = new Box(6);
                d.Style.Background          = Color.AliceBlue;
                d.Style.FontStyles.FontSize = 18;
            });

            return(window.Renderer(context =>
            {
                var document = new CoreUIDomDocument(context, root);

                var drawboxCalculator = new DrawBoxCalculator();

                drawboxCalculator.CalculateDrawBoxesForTree(document.Body);


                var drawBox = document.Body.DrawBox;
                var style = document.Body.Style;

                context.Clear();

                context.FillStyle = style.Background;
                context.BeginPath();

                context.StrokeStyle = style.Border.Top.Paint;
                context.LineWidth = (int)style.Border.Top.Width.Value;
                context.MoveTo(drawBox.BorderBox.Location).LineTo(new Point(drawBox.BorderBox.Right, drawBox.BorderBox.Location.Y));

                context.StrokeStyle = style.Border.Right.Paint;
                context.LineWidth = (int)style.Border.Right.Width.Value;
                context.LineTo(new Point(drawBox.BorderBox.Right, drawBox.BorderBox.Bottom));

                context.StrokeStyle = style.Border.Bottom.Paint;
                context.LineWidth = (int)style.Border.Bottom.Width.Value;
                context.LineTo(new Point(drawBox.BorderBox.Location.X, drawBox.BorderBox.Bottom));

                context.StrokeStyle = style.Border.Left.Paint;
                context.LineWidth = (int)style.Border.Left.Width.Value;
                context.ClosePath();

                context.Fill().Stroke();

                DrawText(context, "This is text contained into a div, it is a veeeery long one, so, it should be split into several lines depending on the container's size.", root);
            }));
        }
Ejemplo n.º 2
0
        internal DrawableNode CalculateDrawableDom(CoreUIDomDocument document)
        {
            var documentNode = new DrawableNode
            {
                PartialDrawBox = new PartialDrawBox(document.DrawBox),
                OriginalNode   = document,
            };
            var drawableNode = PrecalculateMeasures(document.Body, documentNode);

            drawableNode = CompleteMeasures(drawableNode);
            drawableNode = CalculatePositions(drawableNode);
            drawableNode = Reflow(drawableNode);

            return(drawableNode);
        }