|
@@ -0,0 +1,41 @@
|
|
|
|
|
+using System;
|
|
|
|
|
+using QuestPDF.Drawing;
|
|
|
|
|
+using QuestPDF.Infrastructure;
|
|
|
|
|
+
|
|
|
|
|
+namespace QuestPDF.Elements;
|
|
|
|
|
+
|
|
|
|
|
+public class ShowWhenContext
|
|
|
|
|
+{
|
|
|
|
|
+ public int PageNumber { get; internal set; }
|
|
|
|
|
+ public int TotalPages { get; internal set; }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+internal class ShowWhen : ContainerElement
|
|
|
|
|
+{
|
|
|
|
|
+ public Predicate<ShowWhenContext> VisibilityPredicate { get; set; }
|
|
|
|
|
+
|
|
|
|
|
+ internal override SpacePlan Measure(Size availableSpace)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (!CheckVisibility())
|
|
|
|
|
+ return SpacePlan.FullRender(Size.Zero);
|
|
|
|
|
+
|
|
|
|
|
+ return base.Measure(availableSpace);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ internal override void Draw(Size availableSpace)
|
|
|
|
|
+ {
|
|
|
|
|
+ if (CheckVisibility())
|
|
|
|
|
+ base.Draw(availableSpace);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private bool CheckVisibility()
|
|
|
|
|
+ {
|
|
|
|
|
+ var context = new ShowWhenContext
|
|
|
|
|
+ {
|
|
|
|
|
+ PageNumber = PageContext.CurrentPage,
|
|
|
|
|
+ TotalPages = PageContext.DocumentLength
|
|
|
|
|
+ };
|
|
|
|
|
+
|
|
|
|
|
+ return VisibilityPredicate(context);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|