diff --git a/PROMS/Volian.Print.Library/vlnParagraph.cs b/PROMS/Volian.Print.Library/vlnParagraph.cs index ce75eed3..3d69120c 100644 --- a/PROMS/Volian.Print.Library/vlnParagraph.cs +++ b/PROMS/Volian.Print.Library/vlnParagraph.cs @@ -445,12 +445,6 @@ namespace Volian.Print.Library } yPageStart = ChildrenAbove.ToPdf(cb, yPageStart, yTopMargin, yBottomMargin); yPageStart = ChildrenLeft.ToPdf(cb, yPageStart, yTopMargin, yBottomMargin); - - // If this is a high level step, the format may have specified that the step should be printed with - // extra space between it and the previous step. The 16bit code uses the value of the extra space - // from the high level step format regardless of what type of high level step it is. Also, if there - // is caution or note above it, this space is not added: - yPageStart -= ((!MyItemInfo.IsHigh || ChildrenAbove == null || MyItemInfo.MyPrevious==null) ? 0 : MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList[2].StepLayoutData.STExtraSpace ?? 0); yPageStart = ParagraphToPdf(cb, yPageStart, yTopMargin, yBottomMargin); yPageStart = ChildrenRight.ToPdf(cb, yPageStart, yTopMargin, yBottomMargin); yPageStart = ChildrenBelow.ToPdf(cb, yPageStart, yTopMargin, yBottomMargin); @@ -687,8 +681,6 @@ namespace Volian.Print.Library Processed = true; return; } - // Set any position adjustment (defined in the format on a per type basis) - yoff += (MyItemInfo.FormatStepData == null) ? 0 : MyItemInfo.FormatStepData.StepLayoutData.STExtraSpace ?? 0; YTopMost = YOffset = yoff; vlnTab mytab = null; bool doSectTab = false; @@ -750,13 +742,25 @@ namespace Volian.Print.Library } AdjustWidth(itemInfo, maxRNO, formatInfo, mytab); AdjustXOffsetForTab(itemInfo, maxRNO, formatInfo, mytab); + if (itemInfo.MyHeader != null && itemInfo.MyHeader.Text != null && !doSectTab) + yoff += SetHeader(this, cb, itemInfo, formatInfo); if (itemInfo.Cautions != null && !(itemInfo.IsCaution || itemInfo.IsNote)) yoff = ChildrenAbove.Add(cb, itemInfo.Cautions, xoff, yoff, yoff, rnoLevel, maxRNO, formatInfo); if (itemInfo.Notes != null && !(itemInfo.IsCaution || itemInfo.IsNote)) yoff = ChildrenAbove.Add(cb, itemInfo.Notes, xoff, yoff, yoff, rnoLevel, maxRNO, formatInfo); + + // If the format has that extra space should be put out before the step, then + // handle this by using the 'PartsAbove' structure. By using the parts above, the extra + // space above will be done regardless of where page breaks fall. + float addExtraSpace = (MyItemInfo.FormatStepData == null) ? 0 : MyItemInfo.FormatStepData.StepLayoutData.STExtraSpace ?? 0; + // If a high level step, the 16bit code uses the value of the extra space + // from the high level step format regardless of what type of high level step it is: + if (MyItemInfo.IsHigh) + addExtraSpace = MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList[2].StepLayoutData.STExtraSpace ?? 0; + if (addExtraSpace > 0) this.PartsAbove.Add(new vlnText(cb, this, " ", " ", 0, yoff, MyItemInfo.FormatStepData.Font)); + yoff += addExtraSpace; + YTop = yoff; - if (itemInfo.MyHeader != null && itemInfo.MyHeader.Text != null && !doSectTab) - yoff += SetHeader(this, cb, itemInfo, formatInfo); YOffset = yoff; if (mytab != null && mytab.SeparateBullet) {