RTL: constrained

This commit is contained in:
MarcinZiabek
2022-09-29 21:21:25 +02:00
parent f5f90bd235
commit fab0f5bfe1
2 changed files with 30 additions and 3 deletions
+19
View File
@@ -124,5 +124,24 @@ namespace QuestPDF.Examples
.Background(Colors.Red.Medium);
});
}
[Test]
public void Constrained()
{
RenderingTest
.Create()
.ProduceImages()
.PageSize(600, 600)
.ShowResults()
.Render(container =>
{
container
.Padding(25)
.ContentFromRightToLeft()
.Border(1)
.MaxWidth(100)
.Background(Colors.Red.Medium);
});
}
}
}
+11 -3
View File
@@ -5,8 +5,10 @@ using QuestPDF.Infrastructure;
namespace QuestPDF.Elements
{
internal class Constrained : ContainerElement, ICacheable
internal class Constrained : ContainerElement, ICacheable, IContentDirectionAware
{
public ContentDirection ContentDirection { get; set; }
public float? MinWidth { get; set; }
public float? MaxWidth { get; set; }
@@ -45,11 +47,17 @@ namespace QuestPDF.Elements
internal override void Draw(Size availableSpace)
{
var available = new Size(
var size = new Size(
Min(MaxWidth, availableSpace.Width),
Min(MaxHeight, availableSpace.Height));
Child?.Draw(available);
var offset = ContentDirection == ContentDirection.LeftToRight
? Position.Zero
: new Position(availableSpace.Width - size.Width, 0);
Canvas.Translate(offset);
base.Draw(size);
Canvas.Translate(offset.Reverse());
}
private static float Min(float? x, float y)