ElementObserver.cs 876 B

12345678910111213141516171819202122232425262728293031
  1. using System.Diagnostics;
  2. using QuestPDF.Helpers;
  3. using QuestPDF.Skia;
  4. namespace QuestPDF.LayoutTests.TestEngine;
  5. internal class ElementObserver : ContainerElement
  6. {
  7. public string? ObserverId { get; set; }
  8. public DrawingRecorder? DrawingRecorder { get; set; }
  9. internal override void Draw(Size availableSpace)
  10. {
  11. Debug.Assert(ObserverId != null);
  12. Debug.Assert(DrawingRecorder != null);
  13. var matrix = Canvas.GetCurrentMatrix();
  14. DrawingRecorder?.Record(new ElementDrawingEvent
  15. {
  16. ObserverId = ObserverId,
  17. PageNumber = PageContext.CurrentPage,
  18. Position = new Position(matrix.TranslateX, matrix.TranslateY),
  19. Size = ObserverId == "$document" ? Child.Measure(availableSpace) : availableSpace
  20. });
  21. base.Draw(availableSpace);
  22. }
  23. }