Fix B2015-096: Overlapping AER/RNO tables found in Farley printouts
This commit is contained in:
parent
4f4513ffe5
commit
cc62e2fd59
@ -3176,12 +3176,16 @@ namespace Volian.Print.Library
|
|||||||
{
|
{
|
||||||
// is the width of this table going to cause the table to overlap the RNO
|
// is the width of this table going to cause the table to overlap the RNO
|
||||||
vlnParagraph parRno = FindParentRNO();
|
vlnParagraph parRno = FindParentRNO();
|
||||||
float xparRno = parRno.XOffset;
|
float xMinRno = FindMinXOffsetRno(parRno);
|
||||||
if (parRno.MyTab != null) xparRno = parRno.MyTab.XOffset;
|
if (XOffset + Width > xMinRno - 12) // 12 = 2 characters, so that tables don't almost touch & look like an overlap
|
||||||
if (XOffset + Width > xparRno)
|
|
||||||
{
|
{
|
||||||
yoff = yoffRightParent;
|
if ((float)MyItemInfo.MyDocStyle.Layout.LeftMargin + Width > xMinRno)
|
||||||
YOffset = yoff;
|
{
|
||||||
|
yoff = yoffRightParent;
|
||||||
|
YOffset = yoff;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
XOffset = (float)MyItemInfo.MyDocStyle.Layout.LeftMargin;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// if the table does not have a border, only move down one line:
|
// if the table does not have a border, only move down one line:
|
||||||
@ -3659,6 +3663,35 @@ namespace Volian.Print.Library
|
|||||||
if (XOffsetCenter != null) XOffset = (float)XOffsetCenter;
|
if (XOffsetCenter != null) XOffset = (float)XOffsetCenter;
|
||||||
ProfileTimer.Pop(profileDepth);
|
ProfileTimer.Pop(profileDepth);
|
||||||
}
|
}
|
||||||
|
private float FindMinXOffsetRno(vlnParagraph parRno)
|
||||||
|
{
|
||||||
|
// Find the minimum xoffset in the rno column that overlaps in the y direction with
|
||||||
|
// the table that is currently being processed. This is necessary in order to fix the
|
||||||
|
// case where the AER table overlaps an RNO table (or tab/text)
|
||||||
|
float xcur = 0;
|
||||||
|
// YOffset/Height is for the current table, check it against the rno's yoffset & height
|
||||||
|
// if aer & rno are within y range of each other
|
||||||
|
if (YOffset <= (parRno.YOffset + parRno.Height) && (YOffset + Height) >= parRno.YOffset)
|
||||||
|
{
|
||||||
|
xcur = parRno.XOffset;
|
||||||
|
if (parRno.MyTab != null) xcur = parRno.MyTab.XOffset;
|
||||||
|
}
|
||||||
|
// recursively look at steps in the rno column to get the smallest xoffset which will
|
||||||
|
// then be used to compare to table's xoffset/width to see if there is an overlap
|
||||||
|
if (parRno.ChildrenBelow != null)
|
||||||
|
{
|
||||||
|
foreach (vlnParagraph vp in parRno.ChildrenBelow)
|
||||||
|
{
|
||||||
|
// yoffset is past where the table is, so don't consider it:
|
||||||
|
if (vp.YOffset > (YOffset + Height)) return xcur;
|
||||||
|
|
||||||
|
float xchild = FindMinXOffsetRno(vp);
|
||||||
|
if (xchild > 0 && (xcur == 0 || xchild < xcur))
|
||||||
|
xcur = xchild;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return xcur;
|
||||||
|
}
|
||||||
private void DoResponsibility(PdfContentByte cb, float yoff) // WCNTRN's text in 1st column (saved in config for HLS)
|
private void DoResponsibility(PdfContentByte cb, float yoff) // WCNTRN's text in 1st column (saved in config for HLS)
|
||||||
{
|
{
|
||||||
StepConfig sc2 = MyItemInfo.MyConfig as StepConfig;
|
StepConfig sc2 = MyItemInfo.MyConfig as StepConfig;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user