Browse Source

Reduced allocations: Padding Fluent API

Marcin Ziąbek 2 years ago
parent
commit
5673c87bcc
1 changed files with 20 additions and 15 deletions
  1. 20 15
      Source/QuestPDF/Fluent/PaddingExtensions.cs

+ 20 - 15
Source/QuestPDF/Fluent/PaddingExtensions.cs

@@ -6,10 +6,14 @@ namespace QuestPDF.Fluent
 {
     public static class PaddingExtensions
     { 
-        private static IContainer Padding(this IContainer element, Action<Padding> handler)
+        private static IContainer Padding(this IContainer element, float top = 0, float bottom = 0, float left = 0, float right = 0)
         {
             var padding = element as Padding ?? new Padding();
-            handler(padding);
+
+            padding.Top += top;
+            padding.Bottom += bottom;
+            padding.Left += left;
+            padding.Right += right;
             
             return element.Element(padding);
         }
@@ -22,9 +26,8 @@ namespace QuestPDF.Fluent
         /// </summary>
         public static IContainer Padding(this IContainer element, float value, Unit unit = Unit.Point)
         {
-            return element
-                .PaddingVertical(value, unit)
-                .PaddingHorizontal(value, unit);
+            value = value.ToPoints(unit);
+            return element.Padding(top: value, bottom: value, left: value, right: value);
         }
         
         /// <summary>
@@ -35,9 +38,8 @@ namespace QuestPDF.Fluent
         /// </summary>
         public static IContainer PaddingHorizontal(this IContainer element, float value, Unit unit = Unit.Point)
         {
-            return element
-                .PaddingLeft(value, unit)
-                .PaddingRight(value, unit);
+            value = value.ToPoints(unit);
+            return element.Padding(left: value, right: value);
         }
 
         /// <summary>
@@ -48,9 +50,8 @@ namespace QuestPDF.Fluent
         /// </summary>
         public static IContainer PaddingVertical(this IContainer element, float value, Unit unit = Unit.Point)
         {
-            return element
-                .PaddingTop(value, unit)
-                .PaddingBottom(value, unit);
+            value = value.ToPoints(unit);
+            return element.Padding(top: value, bottom: value);
         }
         
         /// <summary>
@@ -61,7 +62,8 @@ namespace QuestPDF.Fluent
         /// </summary>
         public static IContainer PaddingTop(this IContainer element, float value, Unit unit = Unit.Point)
         {
-            return element.Padding(x => x.Top += value.ToPoints(unit));
+            value = value.ToPoints(unit);
+            return element.Padding(top: value);
         }
         
         /// <summary>
@@ -72,7 +74,8 @@ namespace QuestPDF.Fluent
         /// </summary>
         public static IContainer PaddingBottom(this IContainer element, float value, Unit unit = Unit.Point)
         {
-            return element.Padding(x => x.Bottom += value.ToPoints(unit));
+            value = value.ToPoints(unit);
+            return element.Padding(bottom: value);
         }
         
         /// <summary>
@@ -83,7 +86,8 @@ namespace QuestPDF.Fluent
         /// </summary>
         public static IContainer PaddingLeft(this IContainer element, float value, Unit unit = Unit.Point)
         {
-            return element.Padding(x => x.Left += value.ToPoints(unit));
+            value = value.ToPoints(unit);
+            return element.Padding(left: value);
         }
         
         /// <summary>
@@ -94,7 +98,8 @@ namespace QuestPDF.Fluent
         /// </summary>
         public static IContainer PaddingRight(this IContainer element, float value, Unit unit = Unit.Point)
         {
-            return element.Padding(x => x.Right += value.ToPoints(unit));
+            value = value.ToPoints(unit);
+            return element.Padding(right: value);
         }
     }
 }