Пример #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();
        }
Пример #2
0
 public void Measure_NotEnoughHeight()
 {
     TestPlan
     .For(GetPadding)
     .MeasureElement(new Size(20, 300))
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Пример #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();
        }
Пример #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));
        }
Пример #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));
        }
Пример #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());
 }
Пример #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());
 }
Пример #8
0
 public void Draw_WhenFirstChildWraps()
 {
     TestPlan
     .For(CreateColumnWithTwoItems)
     .DrawElement(new Size(400, 300))
     .ExpectChildMeasure("first", new Size(400, 300), SpacePlan.Wrap())
     .CheckDrawResult();
 }
Пример #9
0
 public void Measure_AcceptsWrap()
 {
     TestPlan
     .For(GetPadding)
     .MeasureElement(new Size(400, 300))
     .ExpectChildMeasure(new Size(340, 260), SpacePlan.Wrap())
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Пример #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()
     });
Пример #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));
 }
Пример #12
0
 public void Measure_MinWidth_ExpectWrap()
 {
     TestPlan
     .For(x => new Constrained
     {
         MinWidth = 100
     })
     .MeasureElement(new Size(50, 400))
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Пример #13
0
 public void Measure_MinHeight_ExpectWrap()
 {
     TestPlan
     .For(x => new Constrained
     {
         MinHeight = 100
     })
     .MeasureElement(new Size(400, 50))
     .CheckMeasureResult(SpacePlan.Wrap());
 }
Пример #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());
 }
Пример #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);
        }
Пример #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());
 }
Пример #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());
 }
Пример #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());
 }
Пример #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();
 }
Пример #20
0
        internal override SpacePlan Measure(Size availableSpace)
        {
            var childMeasurement = base.Measure(availableSpace);

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

            return(SpacePlan.Wrap());
        }
Пример #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());
 }
Пример #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();
 }
Пример #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());
 }
Пример #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();
 }
Пример #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());
 }
Пример #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());
 }
Пример #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());
 }
Пример #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());
 }
Пример #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());
 }
Пример #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();
        }