31 lines
834 B
C#
31 lines
834 B
C#
using System;
|
|
using QuestPDF.Drawing;
|
|
using QuestPDF.Helpers;
|
|
using QuestPDF.Infrastructure;
|
|
using SkiaSharp;
|
|
|
|
namespace QuestPDF.Elements
|
|
{
|
|
internal class DynamicImage : Element
|
|
{
|
|
public Func<Size, byte[]>? Source { get; set; }
|
|
|
|
internal override SpacePlan Measure(Size availableSpace)
|
|
{
|
|
return availableSpace.IsNegative()
|
|
? SpacePlan.Wrap()
|
|
: SpacePlan.FullRender(availableSpace);
|
|
}
|
|
|
|
internal override void Draw(Size availableSpace)
|
|
{
|
|
var imageData = Source?.Invoke(availableSpace);
|
|
|
|
if (imageData == null)
|
|
return;
|
|
|
|
using var image = SKImage.FromEncodedData(imageData);
|
|
Canvas.DrawImage(image, Position.Zero, availableSpace);
|
|
}
|
|
}
|
|
} |