private void FinishLayoutInfo()
{
LayoutInfo layoutInfo = this.renderInfo.LayoutInfo;
ParagraphFormat format = this.paragraph.Format;
ParagraphFormatInfo parInfo = (ParagraphFormatInfo)this.renderInfo.FormatInfo;
layoutInfo.MinWidth = this.minWidth;
layoutInfo.KeepTogether = format.KeepTogether;
if (parInfo.IsComplete)
{
int limitOfLines = 1;
if (parInfo.widowControl)
limitOfLines = 3;
if (parInfo.LineCount <= limitOfLines)
layoutInfo.KeepTogether = true;
}
if (parInfo.IsStarting)
{
layoutInfo.MarginTop = format.SpaceBefore.Point;
layoutInfo.PageBreakBefore = format.PageBreakBefore;
}
else
{
layoutInfo.MarginTop = 0;
layoutInfo.PageBreakBefore = false;
}
if (parInfo.IsEnding)
{
layoutInfo.MarginBottom = this.paragraph.Format.SpaceAfter.Point;
layoutInfo.KeepWithNext = this.paragraph.Format.KeepWithNext;
}
else
{
layoutInfo.MarginBottom = 0;
layoutInfo.KeepWithNext = false;
}
if (parInfo.LineCount > 0)
{
XUnit startingHeight = parInfo.GetFirstLineInfo().vertical.height;
if (parInfo.isStarting && this.paragraph.Format.WidowControl && parInfo.LineCount >= 2)
startingHeight += parInfo.GetLineInfo(1).vertical.height;
layoutInfo.StartingHeight = startingHeight;
XUnit trailingHeight = parInfo.GetLastLineInfo().vertical.height;
if (parInfo.IsEnding && this.paragraph.Format.WidowControl && parInfo.LineCount >= 2)
trailingHeight += parInfo.GetLineInfo(parInfo.LineCount - 2).vertical.height;
layoutInfo.TrailingHeight = trailingHeight;
}
}