From 2b701e11d48bb1b2e8cfdb3603b221aca3769400 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcin=20Zi=C4=85bek?= Date: Fri, 12 May 2023 01:20:50 +0200 Subject: [PATCH] Fixed Image API for Dynamic components --- Source/QuestPDF/Drawing/DocumentGenerator.cs | 18 ++++++++++++------ Source/QuestPDF/Elements/Dynamic.cs | 12 +++++++++++- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/Source/QuestPDF/Drawing/DocumentGenerator.cs b/Source/QuestPDF/Drawing/DocumentGenerator.cs index d9c9ed8..3f25d0e 100644 --- a/Source/QuestPDF/Drawing/DocumentGenerator.cs +++ b/Source/QuestPDF/Drawing/DocumentGenerator.cs @@ -101,7 +101,7 @@ namespace QuestPDF.Drawing ApplyInheritedAndGlobalTexStyle(content, TextStyle.Default); ApplyContentDirection(content, settings.ContentDirection); - ApplyDefaultImageConfiguration(content, settings); + ApplyDefaultImageConfiguration(content, settings.ImageRasterDpi, settings.ImageCompressionQuality); var debuggingState = Settings.EnableDebugging ? ApplyDebugging(content) : null; @@ -228,20 +228,26 @@ namespace QuestPDF.Drawing ApplyContentDirection(child, direction); } - internal static void ApplyDefaultImageConfiguration(this Element? content, DocumentSettings settings) + internal static void ApplyDefaultImageConfiguration(this Element? content, int imageRasterDpi, ImageCompressionQuality imageCompressionQuality) { content.VisitChildren(x => { if (x is QuestPDF.Elements.Image image) { - image.TargetDpi ??= settings.ImageRasterDpi; - image.CompressionQuality ??= settings.ImageCompressionQuality; + image.TargetDpi ??= imageRasterDpi; + image.CompressionQuality ??= imageCompressionQuality; } if (x is QuestPDF.Elements.DynamicImage dynamicImage) { - dynamicImage.TargetDpi ??= settings.ImageRasterDpi; - dynamicImage.CompressionQuality ??= settings.ImageCompressionQuality; + dynamicImage.TargetDpi ??= imageRasterDpi; + dynamicImage.CompressionQuality ??= imageCompressionQuality; + } + + if (x is DynamicHost dynamicHost) + { + dynamicHost.ImageTargetDpi ??= imageRasterDpi; + dynamicHost.ImageCompressionQuality ??= imageCompressionQuality; } }); } diff --git a/Source/QuestPDF/Elements/Dynamic.cs b/Source/QuestPDF/Elements/Dynamic.cs index 2e2c5f3..3d1dbcc 100644 --- a/Source/QuestPDF/Elements/Dynamic.cs +++ b/Source/QuestPDF/Elements/Dynamic.cs @@ -14,6 +14,9 @@ namespace QuestPDF.Elements internal TextStyle TextStyle { get; set; } = TextStyle.Default; public ContentDirection ContentDirection { get; set; } + internal int? ImageTargetDpi { get; set; } + internal ImageCompressionQuality? ImageCompressionQuality { get; set; } + public DynamicHost(DynamicComponentProxy child) { Child = child; @@ -58,6 +61,9 @@ namespace QuestPDF.Elements TextStyle = TextStyle, ContentDirection = ContentDirection, + ImageTargetDpi = ImageTargetDpi.Value, + ImageCompressionQuality = ImageCompressionQuality.Value, + PageNumber = PageContext.CurrentPage, TotalPages = PageContext.GetLocation(Infrastructure.PageContext.DocumentLocation).PageEnd, AvailableSize = availableSize @@ -79,7 +85,10 @@ namespace QuestPDF.Elements internal TextStyle TextStyle { get; set; } internal ContentDirection ContentDirection { get; set; } - + + internal int ImageTargetDpi { get; set; } + internal ImageCompressionQuality ImageCompressionQuality { get; set; } + public int PageNumber { get; internal set; } public int TotalPages { get; internal set; } public Size AvailableSize { get; internal set; } @@ -91,6 +100,7 @@ namespace QuestPDF.Elements container.ApplyInheritedAndGlobalTexStyle(TextStyle); container.ApplyContentDirection(ContentDirection); + container.ApplyDefaultImageConfiguration(ImageTargetDpi, ImageCompressionQuality); container.InjectDependencies(PageContext, Canvas); container.VisitChildren(x => (x as IStateResettable)?.ResetState());