Files
QuestPDF/Source/QuestPDF/Fluent/InlinedExtensions.cs
T
2023-01-06 00:45:12 +01:00

58 lines
2.1 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using QuestPDF.Elements;
using QuestPDF.Infrastructure;
namespace QuestPDF.Fluent
{
public class InlinedDescriptor
{
internal Inlined Inlined { get; } = new Inlined();
public void Spacing(float value, Unit unit = Unit.Point)
{
VerticalSpacing(value, unit);
HorizontalSpacing(value, unit);
}
public void VerticalSpacing(float value, Unit unit = Unit.Point)
{
Inlined.VerticalSpacing = value.ToPoints(unit);
}
public void HorizontalSpacing(float value, Unit unit = Unit.Point)
{
Inlined.HorizontalSpacing = value.ToPoints(unit);
}
public void BaselineTop() => Inlined.BaselineAlignment = VerticalAlignment.Top;
public void BaselineMiddle() => Inlined.BaselineAlignment = VerticalAlignment.Middle;
public void BaselineBottom() => Inlined.BaselineAlignment = VerticalAlignment.Bottom;
internal void Alignment(InlinedAlignment? alignment) => Inlined.ElementsAlignment = alignment;
public void AlignLeft() => Inlined.ElementsAlignment = InlinedAlignment.Left;
public void AlignCenter() => Inlined.ElementsAlignment = InlinedAlignment.Center;
public void AlignRight() => Inlined.ElementsAlignment = InlinedAlignment.Right;
public void AlignJustify() => Inlined.ElementsAlignment = InlinedAlignment.Justify;
public void AlignSpaceAround() => Inlined.ElementsAlignment = InlinedAlignment.SpaceAround;
public IContainer Item()
{
var container = new InlinedElement();
Inlined.Elements.Add(container);
return container;
}
}
public static class InlinedExtensions
{
public static void Inlined(this IContainer element, Action<InlinedDescriptor> handler)
{
var descriptor = new InlinedDescriptor();
handler(descriptor);
element.Element(descriptor.Inlined);
}
}
}