Unconstrained.cs 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using QuestPDF.Drawing;
  2. using QuestPDF.Infrastructure;
  3. namespace QuestPDF.Elements
  4. {
  5. internal sealed class Unconstrained : ContainerElement, IContentDirectionAware, ICacheable
  6. {
  7. public ContentDirection ContentDirection { get; set; }
  8. internal override SpacePlan Measure(Size availableSpace)
  9. {
  10. var childSize = base.Measure(Size.Max);
  11. if (childSize.Type == SpacePlanType.PartialRender)
  12. return SpacePlan.PartialRender(0, 0);
  13. if (childSize.Type == SpacePlanType.FullRender)
  14. return SpacePlan.FullRender(0, 0);
  15. return childSize;
  16. }
  17. internal override void Draw(Size availableSpace)
  18. {
  19. var measurement = base.Measure(Size.Max);
  20. if (measurement.Type is SpacePlanType.Empty or SpacePlanType.Wrap)
  21. return;
  22. var translate = ContentDirection == ContentDirection.RightToLeft
  23. ? new Position(-measurement.Width, 0)
  24. : Position.Zero;
  25. Canvas.Translate(translate);
  26. base.Draw(measurement);
  27. Canvas.Translate(translate.Reverse());
  28. }
  29. }
  30. }