|
@@ -15,7 +15,6 @@ namespace QuestPDF.Elements
|
|
|
{
|
|
{
|
|
|
public ColumnItem ColumnItem { get; set; }
|
|
public ColumnItem ColumnItem { get; set; }
|
|
|
public SpacePlan Measurement { get; set; }
|
|
public SpacePlan Measurement { get; set; }
|
|
|
- public Size Size { get; set; }
|
|
|
|
|
public Position Offset { get; set; }
|
|
public Position Offset { get; set; }
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -49,8 +48,8 @@ namespace QuestPDF.Elements
|
|
|
if (!renderingCommands.Any())
|
|
if (!renderingCommands.Any())
|
|
|
return SpacePlan.Wrap();
|
|
return SpacePlan.Wrap();
|
|
|
|
|
|
|
|
- var width = renderingCommands.Max(x => x.Size.Width);
|
|
|
|
|
- var height = renderingCommands.Last().Offset.Y + renderingCommands.Last().Size.Height;
|
|
|
|
|
|
|
+ var width = renderingCommands.Max(x => x.Measurement.Width);
|
|
|
|
|
+ var height = renderingCommands.Last().Offset.Y + renderingCommands.Last().Measurement.Height;
|
|
|
var size = new Size(width, height);
|
|
var size = new Size(width, height);
|
|
|
|
|
|
|
|
if (width > availableSpace.Width + Size.Epsilon || height > availableSpace.Height + Size.Epsilon)
|
|
if (width > availableSpace.Width + Size.Epsilon || height > availableSpace.Height + Size.Epsilon)
|
|
@@ -73,7 +72,7 @@ namespace QuestPDF.Elements
|
|
|
if (command.Measurement.Type == SpacePlanType.FullRender)
|
|
if (command.Measurement.Type == SpacePlanType.FullRender)
|
|
|
command.ColumnItem.IsRendered = true;
|
|
command.ColumnItem.IsRendered = true;
|
|
|
|
|
|
|
|
- var targetSize = new Size(availableSpace.Width, command.Size.Height);
|
|
|
|
|
|
|
+ var targetSize = new Size(availableSpace.Width, command.Measurement.Height);
|
|
|
|
|
|
|
|
Canvas.Translate(command.Offset);
|
|
Canvas.Translate(command.Offset);
|
|
|
command.ColumnItem.Draw(targetSize);
|
|
command.ColumnItem.Draw(targetSize);
|
|
@@ -95,13 +94,7 @@ namespace QuestPDF.Elements
|
|
|
if (item.IsRendered)
|
|
if (item.IsRendered)
|
|
|
continue;
|
|
continue;
|
|
|
|
|
|
|
|
- var availableHeight = availableSpace.Height - topOffset;
|
|
|
|
|
-
|
|
|
|
|
- if (availableHeight < -Size.Epsilon)
|
|
|
|
|
- break;
|
|
|
|
|
-
|
|
|
|
|
- var itemSpace = new Size(availableSpace.Width, availableHeight);
|
|
|
|
|
- var measurement = item.Measure(itemSpace);
|
|
|
|
|
|
|
+ var measurement = MeasureItem(item);
|
|
|
|
|
|
|
|
if (measurement.Type == SpacePlanType.Wrap)
|
|
if (measurement.Type == SpacePlanType.Wrap)
|
|
|
break;
|
|
break;
|
|
@@ -113,7 +106,6 @@ namespace QuestPDF.Elements
|
|
|
commands.Add(new ColumnItemRenderingCommand
|
|
commands.Add(new ColumnItemRenderingCommand
|
|
|
{
|
|
{
|
|
|
ColumnItem = item,
|
|
ColumnItem = item,
|
|
|
- Size = measurement,
|
|
|
|
|
Measurement = measurement,
|
|
Measurement = measurement,
|
|
|
Offset = new Position(0, topOffset)
|
|
Offset = new Position(0, topOffset)
|
|
|
});
|
|
});
|
|
@@ -127,10 +119,24 @@ namespace QuestPDF.Elements
|
|
|
topOffset += measurement.Height + Spacing;
|
|
topOffset += measurement.Height + Spacing;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- foreach (var command in commands)
|
|
|
|
|
- command.Size = new Size(targetWidth, command.Size.Height);
|
|
|
|
|
-
|
|
|
|
|
return commands;
|
|
return commands;
|
|
|
|
|
+
|
|
|
|
|
+ SpacePlan MeasureItem(ColumnItem item)
|
|
|
|
|
+ {
|
|
|
|
|
+ var availableHeight = availableSpace.Height - topOffset;
|
|
|
|
|
+
|
|
|
|
|
+ if (availableHeight < Size.Epsilon)
|
|
|
|
|
+ {
|
|
|
|
|
+ var measurementWithZeroSpace = item.Measure(Size.Zero);
|
|
|
|
|
+
|
|
|
|
|
+ return measurementWithZeroSpace.Type == SpacePlanType.FullRender
|
|
|
|
|
+ ? measurementWithZeroSpace
|
|
|
|
|
+ : SpacePlan.Wrap();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ var itemSpace = new Size(availableSpace.Width, availableHeight);
|
|
|
|
|
+ return item.Measure(itemSpace);
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|