Browse Source

Implemented the PreventPaging element

Marcin Ziąbek 4 years ago
parent
commit
648a359d15
2 changed files with 30 additions and 0 deletions
  1. 25 0
      QuestPDF/Elements/PreventPaging.cs
  2. 5 0
      QuestPDF/Fluent/ElementExtensions.cs

+ 25 - 0
QuestPDF/Elements/PreventPaging.cs

@@ -0,0 +1,25 @@
+using System;
+using QuestPDF.Drawing;
+using QuestPDF.Infrastructure;
+
+namespace QuestPDF.Elements
+{
+    internal class PreventPaging : ContainerElement
+    {
+        internal override SpacePlan Measure(Size availableSpace)
+        {
+            if (Child == null)
+                return SpacePlan.FullRender(Size.Zero);
+
+            var measurement = Child.Measure(availableSpace);
+
+            return measurement.Type switch
+            {
+                SpacePlanType.Wrap => SpacePlan.FullRender(Size.Zero),
+                SpacePlanType.PartialRender => SpacePlan.FullRender(measurement),
+                SpacePlanType.FullRender => measurement,
+                _ => throw new ArgumentOutOfRangeException()
+            };
+        }
+    }
+}

+ 5 - 0
QuestPDF/Fluent/ElementExtensions.cs

@@ -160,5 +160,10 @@ namespace QuestPDF.Fluent
                 TextStyle = textStyle
             });
         }
+        
+        public static IContainer PreventPaging(this IContainer element)
+        {
+            return element.Element(new PreventPaging());
+        }
     }
 }