DynamicSvgImage.cs 736 B

123456789101112131415161718192021222324252627282930
  1. using QuestPDF.Drawing;
  2. using QuestPDF.Fluent;
  3. using QuestPDF.Helpers;
  4. using QuestPDF.Infrastructure;
  5. using QuestPDF.Skia;
  6. namespace QuestPDF.Elements;
  7. internal class DynamicSvgImage : Element
  8. {
  9. public GenerateDynamicSvgDelegate SvgSource { get; set; }
  10. internal override SpacePlan Measure(Size availableSpace)
  11. {
  12. return availableSpace.IsNegative()
  13. ? SpacePlan.Wrap()
  14. : SpacePlan.FullRender(Size.Zero);
  15. }
  16. internal override void Draw(Size availableSpace)
  17. {
  18. var svg = SvgSource?.Invoke(availableSpace);
  19. if (svg == null)
  20. return;
  21. using var svgImage = new SkSvgImage(svg);
  22. Canvas.DrawSvg(svgImage, availableSpace);
  23. }
  24. }