Просмотр исходного кода

simplified AspectRatio code, better exception handling for QuestPdf.Examples, fixed Placeholder image

Marcin Ziąbek 4 лет назад
Родитель
Сommit
08126b2fa4

+ 32 - 0
QuestPDF.Examples/ElementExamples.cs

@@ -134,5 +134,37 @@ namespace QuestPDF.Examples
                         .Height(150);
                 });
         }
+        
+        //[ShowResult]
+        [ImageSize(300, 200)]
+        public void Debug(IContainer container)
+        {
+            container
+                .Padding(25)
+                .Debug()
+                .Padding(-5)
+                .Row(row =>
+                {
+                    row.RelativeColumn().Padding(5).Extend().Placeholder();
+                    row.RelativeColumn().Padding(5).Extend().Placeholder();
+                });
+        }
+        
+        [ShowResult]
+        [ImageSize(300, 200)]
+        public void ElementEnd(IContainer container)
+        {
+            var text = "";
+            
+            container
+                .Padding(10)
+                .Element(x =>
+                {
+                    if (string.IsNullOrWhiteSpace(text))
+                        x.Height(10).Width(50).Background("#DDD");
+                    else
+                        x.Text(text);
+                });
+        }
     }
 }

+ 11 - 4
QuestPDF.Examples/Engine/ExampleTestBase.cs

@@ -62,10 +62,17 @@ namespace QuestPDF.Examples.Engine
             methodInfo.Invoke(this, new object[] {container});
 
             Func<int, string> fileNameSchema = i => $"{fileName.ToLower()}-${i}.png";
-            
-            var document = new SimpleDocument(container, size);
-            document.GenerateImages(fileNameSchema);
-            
+
+            try
+            {
+                var document = new SimpleDocument(container, size);
+                document.GenerateImages(fileNameSchema);
+            }
+            catch (Exception e)
+            {
+                throw new Exception($"Cannot perform test ${fileName}", e);
+            }
+
             if (showResult)
                 Process.Start("explorer", fileNameSchema(0));
         }

+ 1 - 1
QuestPDF.Examples/Engine/SimpleDocument.cs

@@ -27,7 +27,7 @@ namespace QuestPDF.Examples.Engine
 
         public void Compose(IContainer container)
         {
-            container.Element(Container.Child);
+            container.Background("#FFF").Element(Container.Child);
         }
     }
 }

+ 1 - 5
QuestPDF/Elements/AspectRatio.cs

@@ -31,11 +31,7 @@ namespace QuestPDF.Elements
                 return;
             
             var size = GetTargetSize(availableSpace);
-            
-            if (size.Height > availableSpace.Height)
-                return;
-
-            Child.Draw(canvas, size);
+            Child?.Draw(canvas, size);
         }
         
         private Size GetTargetSize(Size availableSpace)

+ 2 - 0
QuestPDF/Elements/Debug.cs

@@ -15,6 +15,8 @@ namespace QuestPDF.Elements
                 
             void DrawBoundingBox()
             {
+                // TODO: when layer element is done, move this code into fluent API
+                
                 var container = new Container();
 
                 container

+ 3 - 1
QuestPDF/Elements/Placeholder.cs

@@ -14,12 +14,14 @@ namespace QuestPDF.Elements
 
         public void Compose(IContainer container)
         {
+            // TODO: consider moving this element into fluent API
+            
             container
                 .Background("CCC")
                 .AlignMiddle()
                 .AlignCenter()
                 .MaxHeight(32)
-                .Image(ImageData);
+                .Image(ImageData, ImageScaling.FitArea);
         }
     }
 }

+ 1 - 4
QuestPDF/Elements/RowElement.cs

@@ -8,10 +8,7 @@ namespace QuestPDF.Elements
         
         internal override void Draw(ICanvas canvas, Size availableSpace)
         {
-            if (Child == null)
-                return;
-            
-            Child.Draw(canvas, availableSpace);
+            Child?.Draw(canvas, availableSpace);
         }
     }