Example #1
0
        internal override SpacePlan Measure(Size availableSpace)
        {
            var targetSpace = new Size(
                Math.Abs(availableSpace.Width / ScaleX),
                Math.Abs(availableSpace.Height / ScaleY));

            var measure = base.Measure(targetSpace);

            if (measure.Type == SpacePlanType.Wrap)
            {
                return(SpacePlan.Wrap());
            }

            var targetSize = new Size(
                Math.Abs(measure.Width * ScaleX),
                Math.Abs(measure.Height * ScaleY));

            if (measure.Type == SpacePlanType.PartialRender)
            {
                return(SpacePlan.PartialRender(targetSize));
            }

            if (measure.Type == SpacePlanType.FullRender)
            {
                return(SpacePlan.FullRender(targetSize));
            }

            throw new ArgumentException();
        }
Example #2
0
 public void Measure_NotEnoughHeight()
 {
     TestPlan
     .For(GetPadding)
     .MeasureElement(new Size(20, 300))
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #3
0
        internal override SpacePlan Measure(Size availableSpace)
        {
            if (NormalizedTurnCount == 0 || NormalizedTurnCount == 2)
            {
                return(base.Measure(availableSpace));
            }

            availableSpace = new Size(availableSpace.Height, availableSpace.Width);
            var childSpace = base.Measure(availableSpace);

            if (childSpace.Type == SpacePlanType.Wrap)
            {
                return(SpacePlan.Wrap());
            }

            var targetSpace = new Size(childSpace.Height, childSpace.Width);

            if (childSpace.Type == SpacePlanType.FullRender)
            {
                return(SpacePlan.FullRender(targetSpace));
            }

            if (childSpace.Type == SpacePlanType.PartialRender)
            {
                return(SpacePlan.PartialRender(targetSpace));
            }

            throw new ArgumentException();
        }
Example #4
0
        internal override SpacePlan Measure(Size availableSpace)
        {
            if (!RenderingQueue.Any())
            {
                return(SpacePlan.FullRender(Size.Zero));
            }

            var lines = DivideTextItemsIntoLines(availableSpace.Width, availableSpace.Height).ToList();

            if (!lines.Any())
            {
                return(SpacePlan.Wrap());
            }

            var width  = lines.Max(x => x.Width);
            var height = lines.Sum(x => x.LineHeight);

            if (width > availableSpace.Width + Size.Epsilon || height > availableSpace.Height + Size.Epsilon)
            {
                return(SpacePlan.Wrap());
            }

            var fullyRenderedItemsCount = lines
                                          .SelectMany(x => x.Elements)
                                          .GroupBy(x => x.Item)
                                          .Count(x => x.Any(y => y.Measurement.IsLast));

            if (fullyRenderedItemsCount == RenderingQueue.Count)
            {
                return(SpacePlan.FullRender(width, height));
            }

            return(SpacePlan.PartialRender(width, height));
        }
Example #5
0
        internal override SpacePlan Measure(Size availableSpace)
        {
            if (!Cells.Any())
            {
                return(SpacePlan.FullRender(Size.Zero));
            }

            UpdateColumnsWidth(availableSpace.Width);
            var renderingCommands = PlanLayout(availableSpace);

            if (!renderingCommands.Any())
            {
                return(SpacePlan.Wrap());
            }

            var width     = Columns.Sum(x => x.Width);
            var height    = renderingCommands.Max(x => x.Offset.Y + x.Size.Height);
            var tableSize = new Size(width, height);

            if (tableSize.Width > availableSpace.Width + Size.Epsilon)
            {
                return(SpacePlan.Wrap());
            }

            return(FindLastRenderedRow(renderingCommands) == StartingRowsCount
                ? SpacePlan.FullRender(tableSize)
                : SpacePlan.PartialRender(tableSize));
        }
Example #6
0
 public void Measure_Wrap()
 {
     TestPlan
     .For(GetLayers)
     .MeasureElement(new Size(800, 600))
     .ExpectChildMeasure(MainLayer, new Size(800, 600), SpacePlan.Wrap())
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #7
0
 public void Measure_ReturnsWrap_WhenFirstChildWraps()
 {
     TestPlan
     .For(CreateColumnWithTwoItems)
     .MeasureElement(new Size(400, 300))
     .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap())
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #8
0
 public void Draw_WhenFirstChildWraps()
 {
     TestPlan
     .For(CreateColumnWithTwoItems)
     .DrawElement(new Size(400, 300))
     .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap())
     .CheckDrawResult();
 }
Example #9
0
 public void Measure_AcceptsWrap()
 {
     TestPlan
     .For(GetPadding)
     .MeasureElement(new Size(400, 300))
     .ExpectChildMeasure(new Size(340, 260), SpacePlan.Wrap())
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #10
0
 internal override SpacePlan Measure(Size availableSpace)
 {
     return(Type switch
     {
         LineType.Vertical when availableSpace.Width + Infrastructure.Size.Epsilon >= Size => SpacePlan.FullRender(Size, 0),
         LineType.Horizontal when availableSpace.Height + Infrastructure.Size.Epsilon >= Size => SpacePlan.FullRender(0, Size),
         _ => SpacePlan.Wrap()
     });
Example #11
0
 public void Measure_ReturnsPartialRender_WhenSecondChildWraps()
 {
     TestPlan
     .For(CreateColumnWithTwoItems)
     .MeasureElement(new Size(400, 300))
     .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
     .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.Wrap())
     .CheckMeasureResult(SpacePlan.PartialRender(200, 100));
 }
Example #12
0
 public void Measure_MinWidth_ExpectWrap()
 {
     TestPlan
     .For(x => new Constrained
     {
         MinWidth = 100
     })
     .MeasureElement(new Size(50, 400))
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #13
0
 public void Measure_MinHeight_ExpectWrap()
 {
     TestPlan
     .For(x => new Constrained
     {
         MinHeight = 100
     })
     .MeasureElement(new Size(400, 50))
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #14
0
 public void Measure_ReturnsWrap_WhenAfterReturnsPartialRender()
 {
     TestPlan
     .For(CreateDecoration)
     .MeasureElement(new Size(400, 300))
     .ExpectChildMeasure("before", new Size(400, 300), SpacePlan.FullRender(100, 50))
     .ExpectChildMeasure("after", new Size(400, 300), SpacePlan.PartialRender(100, 50))
     .ExpectChildMeasure("content", new Size(400, 250), SpacePlan.FullRender(100, 100))
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #15
0
        internal override SpacePlan Measure(Size availableSpace)
        {
            var measurement = base.Measure(availableSpace);

            if (measurement.Type == SpacePlanType.PartialRender && availableSpace.Height < MinHeight)
            {
                return(SpacePlan.Wrap());
            }

            return(measurement);
        }
Example #16
0
 private static void Measure_Wrap <TElement>() where TElement : Element, IContainer, new()
 {
     TestPlan
     .For(x => new TElement
     {
         Child = x.CreateChild()
     })
     .MeasureElement(new Size(400, 300))
     .ExpectChildMeasure(new Size(400, 300), SpacePlan.Wrap())
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #17
0
 public void Measure_ReturnsWrap_WhenChildReturnsWrap()
 {
     TestPlan
     .For(x => new Extend
     {
         Child = x.CreateChild()
     })
     .MeasureElement(new Size(400, 200))
     .ExpectChildMeasure(new Size(400, 200), SpacePlan.Wrap())
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #18
0
 public void Measure_ReturnsWrap_WhenElementReturnsPartialRender()
 {
     TestPlan
     .For(x => new ShowEntire
     {
         Child = x.CreateChild()
     })
     .MeasureElement(new Size(400, 300))
     .ExpectChildMeasure(new Size(400, 300), SpacePlan.PartialRender(300, 200))
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #19
0
 public void Draw_Wrap()
 {
     TestPlan
     .For(x => new MinimalBox
     {
         Child = x.CreateChild()
     })
     .DrawElement(new Size(400, 300))
     .ExpectChildMeasure(expectedInput: new Size(400, 300), returns: SpacePlan.Wrap())
     .CheckDrawResult();
 }
Example #20
0
        internal override SpacePlan Measure(Size availableSpace)
        {
            var childMeasurement = base.Measure(availableSpace);

            if (childMeasurement.Type == SpacePlanType.FullRender)
            {
                return(childMeasurement);
            }

            return(SpacePlan.Wrap());
        }
Example #21
0
 public void Measure_Wrap()
 {
     TestPlan
     .For(x => new Unconstrained
     {
         Child = x.CreateChild()
     })
     .MeasureElement(new Size(900, 800))
     .ExpectChildMeasure(Size.Max, SpacePlan.Wrap())
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #22
0
 public void Draw_SkipWhenChildWraps()
 {
     TestPlan
     .For(x => new Unconstrained
     {
         Child = x.CreateChild()
     })
     .DrawElement(new Size(900, 800))
     .ExpectChildMeasure(Size.Max, SpacePlan.Wrap())
     .CheckDrawResult();
 }
Example #23
0
 public void Measure_MaxHeight_ExpectWrap()
 {
     TestPlan
     .For(x => new Constrained
     {
         MaxHeight = 100,
         Child     = x.CreateChild()
     })
     .MeasureElement(new Size(400, 200))
     .ExpectChildMeasure(new Size(400, 100), SpacePlan.Wrap())
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #24
0
 public void Draw_WhenFirstChildFullyRenders_AndSecondChildWraps()
 {
     TestPlan
     .For(CreateColumnWithTwoItems)
     .DrawElement(new Size(400, 300))
     .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.FullRender(200, 100))
     .ExpectChildMeasure("second", new Size(400, 200), SpacePlan.Wrap())
     .ExpectCanvasTranslate(0, 0)
     .ExpectChildDraw("first", new Size(400, 100))
     .ExpectCanvasTranslate(0, 0)
     .CheckDrawResult();
 }
Example #25
0
 public void Measure_FitWidth_NotEnoughSpace()
 {
     TestPlan
     .For(x => new AspectRatio
     {
         Child  = x.CreateChild(),
         Option = AspectRatioOption.FitWidth,
         Ratio  = 2f
     })
     .MeasureElement(new Size(400, 199))
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #26
0
 public void Measure_ReturnsWrap_WhenChildReturnsPartialRender_AndNotEnoughSpace()
 {
     TestPlan
     .For(x => new EnsureSpace
     {
         Child     = x.CreateChild(),
         MinHeight = 200
     })
     .MeasureElement(new Size(400, 100))
     .ExpectChildMeasure(new Size(400, 100), SpacePlan.PartialRender(300, 50))
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #27
0
 public void Measure_Wrap()
 {
     TestPlan
     .For(x => new SimpleRotate
     {
         Child     = x.CreateChild(),
         TurnCount = 0
     })
     .MeasureElement(new Size(400, 300))
     .ExpectChildMeasure(new Size(400, 300), SpacePlan.Wrap())
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #28
0
 public void Measure_FitWidth_EnoughSpace_Wrap()
 {
     TestPlan
     .For(x => new AspectRatio
     {
         Child  = x.CreateChild(),
         Option = AspectRatioOption.FitArea,
         Ratio  = 2f
     })
     .MeasureElement(new Size(400, 201))
     .ExpectChildMeasure(new Size(400, 200), SpacePlan.Wrap())
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #29
0
 public void Measure_Wrap()
 {
     TestPlan
     .For(x => new Scale
     {
         Child  = x.CreateChild(),
         ScaleX = 3,
         ScaleY = 2
     })
     .MeasureElement(new Size(900, 800))
     .ExpectChildMeasure(new Size(300, 400), SpacePlan.Wrap())
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Example #30
0
        public void Draw_WhenSecondaryLayerReturnsWrap_SkipThatLayer_1()
        {
            TestPlan
            .For(GetLayers)
            .MeasureElement(new Size(800, 600))

            .ExpectChildMeasure(BackgroundLayer, new Size(800, 600), SpacePlan.PartialRender(100, 200))
            .ExpectChildMeasure(MainLayer, new Size(800, 600), SpacePlan.PartialRender(200, 300))
            .ExpectChildMeasure(ForegroundLayer, new Size(800, 600), SpacePlan.Wrap())

            .ExpectChildDraw(BackgroundLayer, new Size(800, 600))
            .ExpectChildDraw(MainLayer, new Size(800, 600))

            .CheckDrawResult();
        }