From fae2205ff82857e94812675bd964ad7f4ca19eb2 Mon Sep 17 00:00:00 2001 From: Maarten Balliauw Date: Tue, 10 May 2022 13:31:42 +0200 Subject: [PATCH] Reduce creation of new arrays in Queue --- QuestPDF/Elements/Table/Table.cs | 4 +++- QuestPDF/Elements/Text/TextBlock.cs | 15 ++++++++++++++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/QuestPDF/Elements/Table/Table.cs b/QuestPDF/Elements/Table/Table.cs index 4a33c25..6663f50 100644 --- a/QuestPDF/Elements/Table/Table.cs +++ b/QuestPDF/Elements/Table/Table.cs @@ -42,7 +42,9 @@ namespace QuestPDF.Elements.Table public void ResetState() { - Cells.ForEach(x => x.IsRendered = false); + foreach (var x in Cells) + x.IsRendered = false; + CurrentRow = 1; } diff --git a/QuestPDF/Elements/Text/TextBlock.cs b/QuestPDF/Elements/Text/TextBlock.cs index 5028f9e..afac0a5 100644 --- a/QuestPDF/Elements/Text/TextBlock.cs +++ b/QuestPDF/Elements/Text/TextBlock.cs @@ -20,7 +20,20 @@ namespace QuestPDF.Elements.Text public void ResetState() { - RenderingQueue = new Queue(Items); + // ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract + // Create queue when we don't have one yet, otherwise clear the existing one so it re-uses the internal array under the hood. + if (RenderingQueue == null) + { + RenderingQueue = new Queue(Items); + } + else + { + RenderingQueue.Clear(); + + foreach (var item in Items) + RenderingQueue.Enqueue(item); + } + CurrentElementIndex = 0; }