Parcourir la source

Layout Debugging Wrap Reason: code refactoring

Marcin Ziąbek il y a 1 an
Parent
commit
01e3cd2cdf

+ 1 - 1
Source/QuestPDF/Drawing/Proxy/OverflowDebuggingProxy.cs

@@ -16,7 +16,7 @@ internal class OverflowDebuggingProxy : ElementProxy
 
 
     internal override SpacePlan Measure(Size availableSpace)
     internal override SpacePlan Measure(Size availableSpace)
     {
     {
-        var spacePlan = Child.Measure(availableSpace);
+        var spacePlan = base.Measure(availableSpace);
 
 
         if (IsMeasuring)
         if (IsMeasuring)
         {
         {

+ 1 - 9
Source/QuestPDF/Drawing/SpacePlan.cs

@@ -19,7 +19,7 @@ namespace QuestPDF.Drawing
 
 
         internal static SpacePlan Empty() => new(SpacePlanType.Empty, 0, 0);
         internal static SpacePlan Empty() => new(SpacePlanType.Empty, 0, 0);
         
         
-        internal static SpacePlan Wrap(string reason = null) => new(SpacePlanType.Wrap, 0, 0, reason);
+        internal static SpacePlan Wrap(string reason) => new(SpacePlanType.Wrap, 0, 0, reason);
         
         
         internal static SpacePlan PartialRender(float width, float height) => new(SpacePlanType.PartialRender, width, height);
         internal static SpacePlan PartialRender(float width, float height) => new(SpacePlanType.PartialRender, width, height);
 
 
@@ -28,14 +28,6 @@ namespace QuestPDF.Drawing
         internal static SpacePlan FullRender(float width, float height) => new(SpacePlanType.FullRender, width, height);
         internal static SpacePlan FullRender(float width, float height) => new(SpacePlanType.FullRender, width, height);
 
 
         internal static SpacePlan FullRender(Size size) => FullRender(size.Width, size.Height);
         internal static SpacePlan FullRender(Size size) => FullRender(size.Width, size.Height);
-
-        internal SpacePlan Forward()
-        {
-            if (Type == SpacePlanType.Wrap)
-                return Wrap("Forwarded from child");
-            
-            return new SpacePlan(Type, Width, Height);
-        }
         
         
         public override string ToString()
         public override string ToString()
         {
         {

+ 1 - 1
Source/QuestPDF/Elements/AspectRatio.cs

@@ -31,7 +31,7 @@ namespace QuestPDF.Elements
             var childSize = base.Measure(targetSize);
             var childSize = base.Measure(targetSize);
 
 
             if (childSize.Type == SpacePlanType.Wrap)
             if (childSize.Type == SpacePlanType.Wrap)
-                return childSize.Forward();
+                return childSize;
 
 
             if (childSize.Type == SpacePlanType.PartialRender)
             if (childSize.Type == SpacePlanType.PartialRender)
                 return SpacePlan.PartialRender(targetSize);
                 return SpacePlan.PartialRender(targetSize);

+ 1 - 1
Source/QuestPDF/Elements/Constrained.cs

@@ -35,7 +35,7 @@ namespace QuestPDF.Elements
             var measurement = base.Measure(available);
             var measurement = base.Measure(available);
 
 
             if (measurement.Type == SpacePlanType.Wrap)
             if (measurement.Type == SpacePlanType.Wrap)
-                return measurement.Forward();
+                return measurement;
             
             
             var actualSize = new Size(
             var actualSize = new Size(
                 Max(MinWidth, measurement.Width),
                 Max(MinWidth, measurement.Width),

+ 1 - 1
Source/QuestPDF/Elements/EnsureSpace.cs

@@ -15,7 +15,7 @@ namespace QuestPDF.Elements
             if (measurement.Type == SpacePlanType.PartialRender && availableSpace.Height < MinHeight)
             if (measurement.Type == SpacePlanType.PartialRender && availableSpace.Height < MinHeight)
                 return SpacePlan.Wrap("The available vertical space is smaller than requested in the constraint.");
                 return SpacePlan.Wrap("The available vertical space is smaller than requested in the constraint.");
 
 
-            return measurement.Forward();
+            return measurement;
         }
         }
     }
     }
 }
 }

+ 1 - 1
Source/QuestPDF/Elements/Extend.cs

@@ -14,7 +14,7 @@ namespace QuestPDF.Elements
             var childSize = base.Measure(availableSpace);
             var childSize = base.Measure(availableSpace);
 
 
             if (childSize.Type is SpacePlanType.Empty or SpacePlanType.Wrap)
             if (childSize.Type is SpacePlanType.Empty or SpacePlanType.Wrap)
-                return childSize.Forward();
+                return childSize;
             
             
             var targetSize = GetTargetSize(availableSpace, childSize);
             var targetSize = GetTargetSize(availableSpace, childSize);
             
             

+ 1 - 1
Source/QuestPDF/Elements/Padding.cs

@@ -22,7 +22,7 @@ namespace QuestPDF.Elements
             var measure = base.Measure(internalSpace);
             var measure = base.Measure(internalSpace);
 
 
             if (measure.Type is SpacePlanType.Empty or SpacePlanType.Wrap)
             if (measure.Type is SpacePlanType.Empty or SpacePlanType.Wrap)
-                return measure.Forward();
+                return measure;
 
 
             var newSize = new Size(
             var newSize = new Size(
                 measure.Width + Left + Right,
                 measure.Width + Left + Right,

+ 1 - 1
Source/QuestPDF/Elements/Scale.cs

@@ -18,7 +18,7 @@ namespace QuestPDF.Elements
             var measure = base.Measure(targetSpace);
             var measure = base.Measure(targetSpace);
 
 
             if (measure.Type is SpacePlanType.Empty or SpacePlanType.Wrap)
             if (measure.Type is SpacePlanType.Empty or SpacePlanType.Wrap)
-                return measure.Forward();
+                return measure;
 
 
             var targetSize = new Size(
             var targetSize = new Size(
                 Math.Abs(measure.Width * ScaleX), 
                 Math.Abs(measure.Width * ScaleX), 

+ 5 - 5
Source/QuestPDF/Elements/ScaleToFit.cs

@@ -8,20 +8,20 @@ namespace QuestPDF.Elements
     {
     {
         internal override SpacePlan Measure(Size availableSpace)
         internal override SpacePlan Measure(Size availableSpace)
         {
         {
-            var perfectScale = FindPerfectScale(Child, availableSpace);
+            var perfectScale = FindPerfectScale(availableSpace);
 
 
             if (perfectScale == null)
             if (perfectScale == null)
                 return SpacePlan.Wrap("Cannot find the perfect scale to fit the child element in the available space.");
                 return SpacePlan.Wrap("Cannot find the perfect scale to fit the child element in the available space.");
 
 
             var scaledSpace = ScaleSize(availableSpace, 1 / perfectScale.Value);
             var scaledSpace = ScaleSize(availableSpace, 1 / perfectScale.Value);
-            var childSizeInScale = Child.Measure(scaledSpace);
+            var childSizeInScale = base.Measure(scaledSpace);
             var childSizeInOriginalScale = ScaleSize(childSizeInScale, perfectScale.Value);
             var childSizeInOriginalScale = ScaleSize(childSizeInScale, perfectScale.Value);
             return SpacePlan.FullRender(childSizeInOriginalScale);
             return SpacePlan.FullRender(childSizeInOriginalScale);
         }
         }
         
         
         internal override void Draw(Size availableSpace)
         internal override void Draw(Size availableSpace)
         {
         {
-            var perfectScale = FindPerfectScale(Child, availableSpace);
+            var perfectScale = FindPerfectScale(availableSpace);
             
             
             if (!perfectScale.HasValue)
             if (!perfectScale.HasValue)
                 return;
                 return;
@@ -39,7 +39,7 @@ namespace QuestPDF.Elements
             return new Size(size.Width * factor, size.Height * factor);
             return new Size(size.Width * factor, size.Height * factor);
         }
         }
         
         
-        private static float? FindPerfectScale(Element child, Size availableSpace)
+        private float? FindPerfectScale(Size availableSpace)
         {
         {
             if (ChildFits(1))
             if (ChildFits(1))
                 return 1;
                 return 1;
@@ -69,7 +69,7 @@ namespace QuestPDF.Elements
             bool ChildFits(float scale)
             bool ChildFits(float scale)
             {
             {
                 var scaledSpace = ScaleSize(availableSpace, 1 / scale);
                 var scaledSpace = ScaleSize(availableSpace, 1 / scale);
-                return child.Measure(scaledSpace).Type is SpacePlanType.Empty or SpacePlanType.FullRender;
+                return base.Measure(scaledSpace).Type is SpacePlanType.Empty or SpacePlanType.FullRender;
             }
             }
         }
         }
     }
     }

+ 1 - 1
Source/QuestPDF/Elements/ShowIf.cs

@@ -19,7 +19,7 @@ internal class ShowIf : ContainerElement
         if (!CheckVisibility())
         if (!CheckVisibility())
             return SpacePlan.Empty();
             return SpacePlan.Empty();
 
 
-        return base.Measure(availableSpace).Forward();
+        return base.Measure(availableSpace);
     }
     }
     
     
     internal override void Draw(Size availableSpace)
     internal override void Draw(Size availableSpace)

+ 1 - 1
Source/QuestPDF/Elements/ShowOnce.cs

@@ -18,7 +18,7 @@ namespace QuestPDF.Elements
             if (IsRendered)
             if (IsRendered)
                 return SpacePlan.Empty();
                 return SpacePlan.Empty();
             
             
-            return base.Measure(availableSpace).Forward();
+            return base.Measure(availableSpace);
         }
         }
 
 
         internal override void Draw(Size availableSpace)
         internal override void Draw(Size availableSpace)

+ 1 - 1
Source/QuestPDF/Elements/SimpleRotate.cs

@@ -18,7 +18,7 @@ namespace QuestPDF.Elements
             var childSpace = base.Measure(availableSpace);
             var childSpace = base.Measure(availableSpace);
 
 
             if (childSpace.Type is SpacePlanType.Empty or SpacePlanType.Wrap)
             if (childSpace.Type is SpacePlanType.Empty or SpacePlanType.Wrap)
-                return childSpace.Forward();
+                return childSpace;
 
 
             var targetSpace = new Size(childSpace.Height, childSpace.Width);
             var targetSpace = new Size(childSpace.Height, childSpace.Width);
 
 

+ 1 - 1
Source/QuestPDF/Elements/SkipOnce.cs

@@ -18,7 +18,7 @@ namespace QuestPDF.Elements
             if (!FirstPageWasSkipped)
             if (!FirstPageWasSkipped)
                 return SpacePlan.Empty();
                 return SpacePlan.Empty();
 
 
-            return Child.Measure(availableSpace).Forward();
+            return base.Measure(availableSpace);
         }
         }
 
 
         internal override void Draw(Size availableSpace)
         internal override void Draw(Size availableSpace)

+ 1 - 1
Source/QuestPDF/Elements/StopPaging.cs

@@ -8,7 +8,7 @@ namespace QuestPDF.Elements
     {
     {
         internal override SpacePlan Measure(Size availableSpace)
         internal override SpacePlan Measure(Size availableSpace)
         {
         {
-            var measurement = Child.Measure(availableSpace);
+            var measurement = base.Measure(availableSpace);
 
 
             return measurement.Type switch
             return measurement.Type switch
             {
             {

+ 1 - 1
Source/QuestPDF/Elements/Unconstrained.cs

@@ -17,7 +17,7 @@ namespace QuestPDF.Elements
             if (childSize.Type == SpacePlanType.FullRender)
             if (childSize.Type == SpacePlanType.FullRender)
                 return SpacePlan.FullRender(0, 0);
                 return SpacePlan.FullRender(0, 0);
             
             
-            return childSize.Forward();
+            return childSize;
         }
         }
 
 
         internal override void Draw(Size availableSpace)
         internal override void Draw(Size availableSpace)

+ 6 - 1
Source/QuestPDF/Infrastructure/ContainerElement.cs

@@ -27,7 +27,12 @@ namespace QuestPDF.Infrastructure
 
 
         internal override SpacePlan Measure(Size availableSpace)
         internal override SpacePlan Measure(Size availableSpace)
         {
         {
-            return Child.Measure(availableSpace).Forward();
+            var measurement = Child.Measure(availableSpace);
+            
+            if (measurement.Type == SpacePlanType.Wrap)
+                return SpacePlan.Wrap("Forwarded from child");
+
+            return measurement;
         }
         }
         
         
         internal override void Draw(Size availableSpace)
         internal override void Draw(Size availableSpace)