ElementObserverSetter.cs 718 B

123456789101112131415161718192021222324252627282930
  1. using QuestPDF.Drawing;
  2. using QuestPDF.Helpers;
  3. namespace QuestPDF.LayoutTests.TestEngine;
  4. internal class ElementObserverSetter : ContainerElement
  5. {
  6. public required DrawingRecorder Recorder { get; init; }
  7. internal override SpacePlan Measure(Size availableSpace)
  8. {
  9. SetRecorderOnChildren();
  10. return base.Measure(availableSpace);
  11. }
  12. internal override void Draw(Size availableSpace)
  13. {
  14. SetRecorderOnChildren();
  15. base.Draw(availableSpace);
  16. }
  17. private void SetRecorderOnChildren()
  18. {
  19. this.VisitChildren(x =>
  20. {
  21. if (x is ElementObserver observer)
  22. observer.DrawingRecorder = Recorder;
  23. });
  24. }
  25. }