diff --git a/PROMS/Volian.Print.Library/vlnParagraph.cs b/PROMS/Volian.Print.Library/vlnParagraph.cs index 3fc18c6d..4e7a6365 100644 --- a/PROMS/Volian.Print.Library/vlnParagraph.cs +++ b/PROMS/Volian.Print.Library/vlnParagraph.cs @@ -109,7 +109,7 @@ namespace Volian.Print.Library Processed = true; if (_PartsAbove != null && _PartsAbove.Count > 0) yPageStart = PartsAbove.ToPdf(cb, yPageStart, yTopMargin, yBottomMargin); float yLocation = CalculateYOffset(yPageStart, yTopMargin); - if (MyItemInfo.HasChangeBar()) MyPageHelper.AddChangeBar(DoChangeBar(cb, MyItemInfo, MyPageHelper, XOffset, yLocation, MyPageHelper.MaxRNO, MyItemInfo.ActiveFormat), cbMess); + if (MyItemInfo.HasChangeBar) MyPageHelper.AddChangeBar(DoChangeBar(cb, MyItemInfo, MyPageHelper, XOffset, yLocation, MyPageHelper.MaxRNO, MyItemInfo.ActiveFormat), cbMess); float retval = yLocation; if (MyItemInfo.IsFigure) @@ -501,6 +501,13 @@ namespace Volian.Print.Library return bottom; } } + public float YBottomText + { + get + { + return YOffset + Height; + } + } private vlnParagraph GetFirstPieceLastPart() { vlnParagraph para = this; @@ -789,16 +796,42 @@ namespace Volian.Print.Library string tmpRnoSepStr = formatInfo.MyStepSectionPrintData.RNOSepString; if (rnoLevel < maxRNO && itemInfo.RNOs != null && tmpRnoSepStr != null) { - float xsep = MyHighLevelParagraph.XOffset + RnoOffset; - vlnRNOSeparator myRnoSep = new vlnRNOSeparator(this, cb, tmpRnoSepStr, xsep, yoff, formatInfo.PlantFormat.FormatData.Font); vlnParagraph rno = ChildrenRight[0]; + vlnParagraph bottomChild = BottomChild; + float xsep = MyHighLevelParagraph.XOffset + RnoOffset; + vlnRNOSeparator myRnoSep = new vlnRNOSeparator(this, cb, tmpRnoSepStr, xsep, yoff, formatInfo, bottomChild==null?true:bottomChild.MyItemInfo.HasChangeBar); // TODO: May need to handle more than one RNO column for RNO Separator - rno.LastRNO.PartsBelow.Add(myRnoSep); + if (rno.LastRNO.MyItemInfo.HasChangeBar == false && bottomChild != null && bottomChild.MyItemInfo.HasChangeBar) + bottomChild.PartsBelow.Add(myRnoSep); + else + rno.LastRNO.PartsBelow.Add(myRnoSep); yoff += myRnoSep.Height + SixLinesPerInch; } YBottomMost = yoff; } - + internal vlnParagraph BottomChild + { + get + { + float bottomChildYBottomText = YBottomText; + vlnParagraph bottomChild = this; + foreach (vlnParagraph child in ChildrenRight) + { + vlnParagraph grandChild = child.BottomChild; + if (grandChild != null && grandChild.YBottomText > bottomChildYBottomText) bottomChild = grandChild; + if (grandChild != null && grandChild.YBottomText == bottomChildYBottomText && grandChild.MyItemInfo.HasChangeBar) bottomChild = grandChild; + bottomChildYBottomText = bottomChild.YBottomText; + } + foreach (vlnParagraph child in ChildrenBelow) + { + vlnParagraph grandChild = child.BottomChild; + if (grandChild != null && grandChild.YBottomText > bottomChildYBottomText) bottomChild = grandChild; + if (grandChild != null && grandChild.YBottomText == bottomChildYBottomText && grandChild.MyItemInfo.HasChangeBar) bottomChild = grandChild; + bottomChildYBottomText = bottomChild.YBottomText; + } + return bottomChild; + } + } private void CalculateXOffset(ItemInfo itemInfo, int maxRNO, FormatInfo formatInfo) { bool aerTableOrFigure = itemInfo.FormatStepData.Type.Contains("AER");