From 11f0809efc0e68a8381995ebc298a6fd5c44c24f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Zi=C4=85bek?= Date: Sat, 23 Oct 2021 02:59:29 +0200 Subject: [PATCH] Improved default text style --- QuestPDF.ReportSample/Layouts/StandardReport.cs | 3 ++- QuestPDF/Drawing/DocumentContainer.cs | 1 - QuestPDF/Drawing/DocumentGenerator.cs | 3 +-- QuestPDF/Elements/Page.cs | 10 +++++++++- QuestPDF/Fluent/PageExtensions.cs | 16 ++++++++++------ QuestPDF/Helpers/Placeholders.cs | 2 +- 6 files changed, 23 insertions(+), 12 deletions(-) diff --git a/QuestPDF.ReportSample/Layouts/StandardReport.cs b/QuestPDF.ReportSample/Layouts/StandardReport.cs index 61a9150..08ada55 100644 --- a/QuestPDF.ReportSample/Layouts/StandardReport.cs +++ b/QuestPDF.ReportSample/Layouts/StandardReport.cs @@ -25,9 +25,10 @@ namespace QuestPDF.ReportSample.Layouts public void Compose(IDocumentContainer container) { container - .DefaultTextStyle(Typography.Normal) .Page(page => { + page.DefaultTextStyle(Typography.Normal); + page.MarginVertical(40); page.MarginHorizontal(50); diff --git a/QuestPDF/Drawing/DocumentContainer.cs b/QuestPDF/Drawing/DocumentContainer.cs index 9f593e2..e813839 100644 --- a/QuestPDF/Drawing/DocumentContainer.cs +++ b/QuestPDF/Drawing/DocumentContainer.cs @@ -9,7 +9,6 @@ namespace QuestPDF.Drawing { internal class DocumentContainer : IDocumentContainer { - internal TextStyle DefaultTextStyle { get; set; } = TextStyle.Default; internal List Pages { get; set; } = new List(); internal Container Compose() diff --git a/QuestPDF/Drawing/DocumentGenerator.cs b/QuestPDF/Drawing/DocumentGenerator.cs index cd1718d..3d33328 100644 --- a/QuestPDF/Drawing/DocumentGenerator.cs +++ b/QuestPDF/Drawing/DocumentGenerator.cs @@ -39,7 +39,6 @@ namespace QuestPDF.Drawing var metadata = document.GetMetadata(); var pageContext = new PageContext(); - ApplyDefaultTextStyle(content, container.DefaultTextStyle); RenderPass(pageContext, new FreeCanvas(), content, metadata); RenderPass(pageContext, canvas, content, metadata); } @@ -103,7 +102,7 @@ namespace QuestPDF.Drawing } } - private static void ApplyDefaultTextStyle(Element content, TextStyle documentDefaultTextStyle) + internal static void ApplyDefaultTextStyle(this Element content, TextStyle documentDefaultTextStyle) { documentDefaultTextStyle.ApplyGlobalStyle(TextStyle.LibraryDefault); diff --git a/QuestPDF/Elements/Page.cs b/QuestPDF/Elements/Page.cs index 792638b..e47e285 100644 --- a/QuestPDF/Elements/Page.cs +++ b/QuestPDF/Elements/Page.cs @@ -1,4 +1,5 @@ using System; +using QuestPDF.Drawing; using QuestPDF.Fluent; using QuestPDF.Helpers; using QuestPDF.Infrastructure; @@ -7,6 +8,8 @@ namespace QuestPDF.Elements { internal class Page : IComponent { + public TextStyle DefaultTextStyle { get; set; } = new TextStyle(); + public Size MinSize { get; set; } = PageSizes.A4; public Size MaxSize { get; set; } = PageSizes.A4; @@ -15,6 +18,8 @@ namespace QuestPDF.Elements public float MarginTop { get; set; } public float MarginBottom { get; set; } + public string BackgroundColor { get; set; } = Colors.Transparent; + public Element Header { get; set; } = Empty.Instance; public Element Content { get; set; } = Empty.Instance; public Element Footer { get; set; } = Empty.Instance; @@ -22,12 +27,13 @@ namespace QuestPDF.Elements public void Compose(IContainer container) { container - .MinWidth(MinSize.Width) .MinHeight(MinSize.Height) .MaxWidth(MaxSize.Width) .MaxHeight(MaxSize.Height) + + .Background(BackgroundColor) .PaddingLeft(MarginLeft) .PaddingRight(MarginRight) @@ -47,6 +53,8 @@ namespace QuestPDF.Elements decoration.Footer().Element(Footer); }); + (container as Element).ApplyDefaultTextStyle(DefaultTextStyle); + bool IsClose(float x, float y) { return Math.Abs(x - y) < Size.Epsilon; diff --git a/QuestPDF/Fluent/PageExtensions.cs b/QuestPDF/Fluent/PageExtensions.cs index f2c530c..82d7dc5 100644 --- a/QuestPDF/Fluent/PageExtensions.cs +++ b/QuestPDF/Fluent/PageExtensions.cs @@ -70,6 +70,16 @@ namespace QuestPDF.Fluent MarginHorizontal(value); } + public void DefaultTextStyle(TextStyle textStyle) + { + Page.DefaultTextStyle = textStyle; + } + + public void Background(string color) + { + Page.BackgroundColor = color; + } + public IContainer Header() { var container = new Container(); @@ -94,12 +104,6 @@ namespace QuestPDF.Fluent public static class PageExtensions { - public static IDocumentContainer DefaultTextStyle(this IDocumentContainer document, TextStyle textStyle) - { - (document as DocumentContainer).DefaultTextStyle = textStyle; - return document; - } - public static IDocumentContainer Page(this IDocumentContainer document, Action handler) { var descriptor = new PageDescriptor(); diff --git a/QuestPDF/Helpers/Placeholders.cs b/QuestPDF/Helpers/Placeholders.cs index d79abd9..bd11a6a 100644 --- a/QuestPDF/Helpers/Placeholders.cs +++ b/QuestPDF/Helpers/Placeholders.cs @@ -7,7 +7,7 @@ namespace QuestPDF.Helpers { public static class Placeholders { - private static Random Random = new Random(); + public static readonly Random Random = new Random(); #region Word Cache