FNP: ResetDocStyles for sections that changed the top margin; don’t print ‘.0’ in bottom continue message; fix text overwrite of RNO & following caution/note that spans x direction of page; x-offset improvements (still needs work)

This commit is contained in:
Kathy Ruffing 2013-11-20 13:39:12 +00:00
parent 136905792c
commit 7824091484

View File

@ -67,7 +67,7 @@ namespace Volian.Print.Library
// by the first level of children. The data for the column is the child of the column header. // by the first level of children. The data for the column is the child of the column header.
// Sometimes the column will not have data, the following handles that case. Also, use // Sometimes the column will not have data, the following handles that case. Also, use
// the boolean didComponentTableRow to keep track of the bottom most yoff of the table row. // the boolean didComponentTableRow to keep track of the bottom most yoff of the table row.
if ((childItemInfo.ActiveFormat.PlantFormat.FormatData.ComponentTableFormat) && childItemInfo.MyParent.IsInTemplate()) if ((childItemInfo.MyDocStyle.ComponentList) && childItemInfo.MyParent.IsInTemplate())
{ {
// childItemInfo = 'child' and set to use a template for defining size. // childItemInfo = 'child' and set to use a template for defining size.
if (childItemInfo.Steps == null) if (childItemInfo.Steps == null)
@ -174,7 +174,7 @@ namespace Volian.Print.Library
{ {
if (childItemInfo is SectionInfo) formatInfo = (childItemInfo as SectionInfo).LocalFormat ?? formatInfo; if (childItemInfo is SectionInfo) formatInfo = (childItemInfo as SectionInfo).LocalFormat ?? formatInfo;
if (rnoLevel < maxRNO && childItemInfo.RNOs != null) yoff = Math.Max(yoff, yoffRight); if (rnoLevel < maxRNO && childItemInfo.RNOs != null) yoff = Math.Max(yoff, yoffRight);
vlnParagraph para = new vlnParagraph(Parent, cb, childItemInfo, xoff, yoff, rnoLevel, maxRNO, formatInfo, null, null); vlnParagraph para = new vlnParagraph(Parent, cb, childItemInfo, xoff, yoff, rnoLevel, maxRNO, formatInfo, null, null, yoffRight);
// if doing the component list (FNP), keep track of the bottom most columns' data // if doing the component list (FNP), keep track of the bottom most columns' data
// so this can be returned after the row is done. // so this can be returned after the row is done.
@ -192,7 +192,7 @@ namespace Volian.Print.Library
// if doing the component list (FNP), yoff for the HLS (if it's the component in the list, // if doing the component list (FNP), yoff for the HLS (if it's the component in the list,
// i.e. the leftmost item in the table), the yoff is either the HLS bottom, or the bottom most // i.e. the leftmost item in the table), the yoff is either the HLS bottom, or the bottom most
// of all of the other columns' data. // of all of the other columns' data.
else if (childItemInfo.IsHigh && childItemInfo.FormatStepData.UseOldTemplate && formatInfo.PlantFormat.FormatData.ComponentTableFormat) else if (childItemInfo.IsHigh && childItemInfo.FormatStepData.UseOldTemplate && childItemInfo.MyDocStyle.ComponentList)
yoff = Math.Max(para.YBottom, para.YBottomMost) + vlnPrintObject.SixLinesPerInch; yoff = Math.Max(para.YBottom, para.YBottomMost) + vlnPrintObject.SixLinesPerInch;
// increment the y offset if not doing the ComponentTableFormat // increment the y offset if not doing the ComponentTableFormat
else if (!para.UseTemplateKeepOnCurLine(childItemInfo)) else if (!para.UseTemplateKeepOnCurLine(childItemInfo))
@ -582,7 +582,7 @@ namespace Volian.Print.Library
private float DrawGrid(PdfContentByte cb, ref float yPageStart, float yTopMargin, float yBottomMargin, ref float yLocation) private float DrawGrid(PdfContentByte cb, ref float yPageStart, float yTopMargin, float yBottomMargin, ref float yLocation)
{ {
//DebugText.WriteLine("{0},'{1}','{2}','<<END>>'", MyItemInfo.ItemID, MyItemInfo.ShortPath, FormattedText); //DebugText.WriteLine("{0},'{1}','{2}','<<END>>'", MyItemInfo.ItemID, MyItemInfo.ShortPath, FormattedText);
DebugText.WriteLine("{0},'{1}','{2}','<<END>>',{3}", MyItemInfo.ItemID, MyItemInfo.ShortPath,MyItemInfo.MyContent.Text,XOffset); DebugText.WriteLine("{0},'{1}','{2}','<<END>>',{3}", MyItemInfo.ItemID, MyItemInfo.ShortPath, MyItemInfo.MyContent.Text, XOffset);
float retval = Rtf2Pdf.GridAt(cb, MyGrid, XOffset, yLocation, Width, 100, DebugInfo, yBottomMargin, !MyItemInfo.FormatStepData.Type.Contains("Borderless")); float retval = Rtf2Pdf.GridAt(cb, MyGrid, XOffset, yLocation, Width, 100, DebugInfo, yBottomMargin, !MyItemInfo.FormatStepData.Type.Contains("Borderless"));
if (MyGrid.Height > (yTopMargin - yBottomMargin)) if (MyGrid.Height > (yTopMargin - yBottomMargin))
{ {
@ -760,7 +760,7 @@ namespace Volian.Print.Library
float yLocalypagestart = yPageStart; float yLocalypagestart = yPageStart;
// yPageStart is offset into roll; YTopMost is offset of topmost of this paragraph. // yPageStart is offset into roll; YTopMost is offset of topmost of this paragraph.
float yLocation = yPageStart - YTopMost; float yLocation = yPageStart - YTopMost;
DebugText.WriteLine("ToPdf1:{0},'{1}',{2},{3},{4},{5}", MyItemInfo.ItemID, MyItemInfo.ShortSearchPath, XOffset, yLocation, yPageStart, YTopMost); DebugText.WriteLine("ToPdf1:{0},'{1}',{2},{3},{4},{5}", MyItemInfo.ItemID, MyItemInfo.ShortPath, XOffset, yLocation, yPageStart, YTopMost);
int paginate = Paginate(yLocation, yTopMargin, yBottomMargin); int paginate = Paginate(yLocation, yTopMargin, yBottomMargin);
bool firstHighLevelStep = MyItemInfo.IsHigh && (MyItemInfo.MyPrevious == null); bool firstHighLevelStep = MyItemInfo.IsHigh && (MyItemInfo.MyPrevious == null);
bool doSectionTitleContinued = false; // will add " Continued" to the section title if format flag is set bool doSectionTitleContinued = false; // will add " Continued" to the section title if format flag is set
@ -778,8 +778,15 @@ namespace Volian.Print.Library
OutputOtherPageSteps(cb, YTopMost, yPageStart, yTopMargin, yBottomMargin); OutputOtherPageSteps(cb, YTopMost, yPageStart, yTopMargin, yBottomMargin);
cb.PdfDocument.NewPage(); cb.PdfDocument.NewPage();
//_MyLog.InfoFormat("NewPage 10 {0}", cb.PdfWriter.CurrentPageNumber); //_MyLog.InfoFormat("NewPage 10 {0}", cb.PdfWriter.CurrentPageNumber);
if (MyItemInfo.IsSection || (MyItemInfo.IsHigh && MyItemInfo.MyPrevious != null)) //do not reset for 1st step if (MyItemInfo.IsSection && MyParent != null && MyParent.MyItemInfo.IsSection && (MyItemInfo as SectionInfo).IsSeparatePagination())
ResetDocStyleAndValues(ref yTopMargin, ref yBottomMargin); {
RefreshDocStyle();
yTopMargin = 792 - (float)MyItemInfo.MyActiveSection.MyDocStyle.Layout.TopMargin;
yBottomMargin = Math.Max(0, yTopMargin - (float)MyItemInfo.MyActiveSection.MyDocStyle.Layout.PageLength);
yPageStart = yTopMargin;
}
else if (MyItemInfo.IsSection || (MyItemInfo.IsHigh && MyItemInfo.MyPrevious != null)) //do not reset for 1st step
ResetDocStyleAndValues(ref yTopMargin, ref yBottomMargin);
DebugText.WriteLine("Paginate1"); DebugText.WriteLine("Paginate1");
if (MyItemInfo.IsSection) if (MyItemInfo.IsSection)
{ {
@ -815,18 +822,27 @@ namespace Volian.Print.Library
string myMsg = docstyle.Continue.Bottom.Message; string myMsg = docstyle.Continue.Bottom.Message;
if (myMsg != null && myMsg != "") if (myMsg != null && myMsg != "")
{ {
if (myMsg.IndexOf(@"%d") > -1) myMsg = ReplaceStepBottomContinue(myMsg);
myMsg = myMsg.Replace(@"%d", MyItemInfo.MyHLS.MyTab.CleanTextNoSymbols.Trim());
if (myMsg.IndexOf(@"%0d") > -1)
myMsg = myMsg.Replace(@"%0d", MyItemInfo.MyHLS.MyTab.CleanTextNoSymbols.Trim(" .".ToCharArray()));
if (myMsg.IndexOf(@"%2d") > -1)
myMsg = myMsg.Replace(@"%2d", MyItemInfo.MyHLS.MyTab.CleanTextNoSymbols.Trim(" .".ToCharArray()).PadLeft(2));
float msg_yLocation = 0; float msg_yLocation = 0;
if (myMsg.Contains("{par}")) if (myMsg.Contains("{par}"))
{ {
myMsg = myMsg.Replace("{par}", ""); myMsg = myMsg.Replace("{par}", "");
msg_yLocation = -SixLinesPerInch; msg_yLocation = -SixLinesPerInch;
} }
float yBtmMarginForMsg = yBottomMargin;
// one of the format flags for FNP had an adjustment for printing the section title only
// on the first page of the section. Adjust the location of the bottom continue message
// if this adjustment was made (the current topmargin may not reflect the value within
// the document style)
if (MyPageHelper.PrintedSectionPage > 0)
{
if ((MyItemInfo.MyActiveSection.MyDocStyle.StructureStyle.Style & E_DocStructStyle.DSS_PrintSectOnFirst) == E_DocStructStyle.DSS_PrintSectOnFirst)
{
float localYTopMargin = 792 - (float)MyItemInfo.MyActiveSection.MyDocStyle.Layout.TopMargin;
yBtmMarginForMsg = Math.Max(0, localYTopMargin - (float)MyItemInfo.MyActiveSection.MyDocStyle.Layout.PageLength);
}
}
switch (docstyle.Continue.Bottom.Location) switch (docstyle.Continue.Bottom.Location)
{ {
case E_ContBottomLoc.EndOfText: // place continue string at end of text case E_ContBottomLoc.EndOfText: // place continue string at end of text
@ -837,7 +853,7 @@ namespace Volian.Print.Library
break; break;
case E_ContBottomLoc.BottomOfPage: // place continue message at bottom of page case E_ContBottomLoc.BottomOfPage: // place continue message at bottom of page
//msg_yLocation = yBottomMargin + 2 * SixLinesPerInch + (float)docstyle.Layout.FooterLength; // 2 lines above bottom margin //msg_yLocation = yBottomMargin + 2 * SixLinesPerInch + (float)docstyle.Layout.FooterLength; // 2 lines above bottom margin
msg_yLocation = msg_yLocation + yBottomMargin + (float)docstyle.Layout.FooterLength; msg_yLocation = msg_yLocation + yBtmMarginForMsg + (float)docstyle.Layout.FooterLength;
break; break;
default: default:
Console.WriteLine("**** BOTTOM CONTINUE MESSAGE NOT CODED*****"); Console.WriteLine("**** BOTTOM CONTINUE MESSAGE NOT CODED*****");
@ -905,7 +921,7 @@ namespace Volian.Print.Library
// Now check if this is a template type step & if so, add the HLS's prefix/suffix to it. // Now check if this is a template type step & if so, add the HLS's prefix/suffix to it.
if (MyItemInfo.MyHLS != null && MyItemInfo.MyHLS.FormatStepData.UseSmartTemplate) if (MyItemInfo.MyHLS != null && MyItemInfo.MyHLS.FormatStepData.UseSmartTemplate)
{ {
vlnParagraph smartPara = new vlnParagraph(MyParent.MyParent, cb, MyItemInfo.MyHLS, MyParent.XOffset, 0, 0, 0, MyParent.MyItemInfo.ActiveFormat, null, " (Continued)"); vlnParagraph smartPara = new vlnParagraph(MyParent.MyParent, cb, MyItemInfo.MyHLS, MyParent.XOffset, 0, 0, 0, MyParent.MyItemInfo.ActiveFormat, null, " (Continued)", 0);
float mytmpfloat = smartPara.ParagraphToPdf(cb, smartPara.Height, yTopMargin, yBottomMargin); // .ToPdf(cb, 0, yTopMargin, yBottomMargin); float mytmpfloat = smartPara.ParagraphToPdf(cb, smartPara.Height, yTopMargin, yBottomMargin); // .ToPdf(cb, 0, yTopMargin, yBottomMargin);
yPageStart -= smartPara.Height; yPageStart -= smartPara.Height;
} }
@ -959,7 +975,7 @@ namespace Volian.Print.Library
// format must have ContinueSectinHeader format flag set to true // format must have ContinueSectinHeader format flag set to true
if (doSectionTitleContinued) if (doSectionTitleContinued)
{ {
vlnParagraph sectContPara = new vlnParagraph(MyParent.MyParent, cb, MyItemInfo.ActiveSection, MyParent.XOffset, 0, 0, 0, MyParent.MyItemInfo.ActiveFormat, null, " (Continued)"); vlnParagraph sectContPara = new vlnParagraph(MyParent.MyParent, cb, MyItemInfo.ActiveSection, MyParent.XOffset, 0, 0, 0, MyParent.MyItemInfo.ActiveFormat, null, " (Continued)", 0);
float mytmpfloat = sectContPara.ParagraphToPdf(cb, yTopMargin, yTopMargin, yBottomMargin); float mytmpfloat = sectContPara.ParagraphToPdf(cb, yTopMargin, yTopMargin, yBottomMargin);
yPageStart -= sectContPara.Height * 2; yPageStart -= sectContPara.Height * 2;
} }
@ -1027,6 +1043,29 @@ namespace Volian.Print.Library
if (yLocalypagestart != yPageStart) DebugText.WriteLine("ToPdf-yPagestartDiff:{0},{1},{2},{3}", MyPageHelper.MyPdfContentByte.PdfWriter.CurrentPageNumber, MyItemInfo.ItemID, yLocalypagestart, yPageStart); if (yLocalypagestart != yPageStart) DebugText.WriteLine("ToPdf-yPagestartDiff:{0},{1},{2},{3}", MyPageHelper.MyPdfContentByte.PdfWriter.CurrentPageNumber, MyItemInfo.ItemID, yLocalypagestart, yPageStart);
return yPageStart; return yPageStart;
} }
private void RefreshDocStyle()
{
MyItemInfo.ActiveSection = null;
MyItemInfo.MyDocStyle = null;
MyPageHelper.MySection = MyItemInfo as SectionInfo;
MyPageHelper.ResetSvg();
MyPageHelper.PrintedSectionPage = 0;
}
private string ReplaceStepBottomContinue(string myMsg)
{
string tb = MyItemInfo.MyHLS.MyTab.CleanTextNoSymbols;
// if the tab ends with .0, remove it if it was added because of the virtualdotinhls flag.
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.VirtualDotInHLSTab && tb.Contains(".0")) tb = tb.Replace(".0", "");
if (myMsg.IndexOf(@"%d") > -1)
myMsg = myMsg.Replace(@"%d", tb.Trim());
if (myMsg.IndexOf(@"%0d") > -1)
myMsg = myMsg.Replace(@"%0d", tb.Trim(" .".ToCharArray()));
if (myMsg.IndexOf(@"%2d") > -1)
myMsg = myMsg.Replace(@"%2d", tb.Trim(" .".ToCharArray()).PadLeft(2));
return myMsg;
}
private vlnParagraph TopMostChild private vlnParagraph TopMostChild
{ {
get get
@ -1234,7 +1273,7 @@ namespace Volian.Print.Library
if (itm.FormatStepData != null && (itm.FormatStepData.Index == 42 || itm.FormatStepData.Index == 43)) return true; if (itm.FormatStepData != null && (itm.FormatStepData.Index == 42 || itm.FormatStepData.Index == 43)) return true;
return false; return false;
} }
public vlnParagraph(vlnParagraph parent, PdfContentByte cb, ItemInfo itemInfo, float xoff, float yoff, int rnoLevel, int maxRNO, FormatInfo formatInfo, string prefix, string suffix) public vlnParagraph(vlnParagraph parent, PdfContentByte cb, ItemInfo itemInfo, float xoff, float yoff, int rnoLevel, int maxRNO, FormatInfo formatInfo, string prefix, string suffix, float yoffRightParent)
{ {
ShowSectionTitles = formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ShowSectionTitles || itemInfo.MyDocStyle.ShowSectionTitles; ShowSectionTitles = formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ShowSectionTitles || itemInfo.MyDocStyle.ShowSectionTitles;
if (itemInfo.IsSection && itemInfo.ActiveSection.DisplayText.ToUpper().Contains("<NO TITLE>") && !itemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.PrintNoTitle) ShowSectionTitles = false; if (itemInfo.IsSection && itemInfo.ActiveSection.DisplayText.ToUpper().Contains("<NO TITLE>") && !itemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.PrintNoTitle) ShowSectionTitles = false;
@ -1257,15 +1296,13 @@ namespace Volian.Print.Library
if (MyTopRNO != null) MyTopRNO.LastRNO = this; if (MyTopRNO != null) MyTopRNO.LastRNO = this;
} }
MyContentByte = cb; MyContentByte = cb;
if (!MyPageHelper.MyParagraphs.ContainsKey(itemInfo.ItemID)) MyPageHelper.MyParagraphs.Add(itemInfo.ItemID, this);
if (itemInfo.IsSection && itemInfo.MyParent.IsSection)
{
itemInfo.ActiveSection = null;
itemInfo.MyDocStyle = null;
MyPageHelper.MySection = itemInfo as SectionInfo;
MyPageHelper.ResetSvg();
}
MyItemInfo = itemInfo; MyItemInfo = itemInfo;
if (!MyPageHelper.MyParagraphs.ContainsKey(itemInfo.ItemID)) MyPageHelper.MyParagraphs.Add(itemInfo.ItemID, this);
// if this a continuous subsection, refresh the style.
if (itemInfo.IsSection && !(itemInfo as SectionInfo).IsSeparatePagination() && itemInfo.MyParent.IsSection)
RefreshDocStyle();
XOffset = xoff; XOffset = xoff;
if (!MyItemInfo.IsStep && !MyItemInfo.IsStepSection) if (!MyItemInfo.IsStep && !MyItemInfo.IsStepSection)
{ {
@ -1298,7 +1335,11 @@ namespace Volian.Print.Library
bool doprint = true; bool doprint = true;
if (itemInfo.IsSection) if (itemInfo.IsSection)
{ {
if (ShowSectionTitles MyItemInfo.ActiveSection = null;
MyItemInfo.MyDocStyle = null;
DocStyle ds = MyItemInfo.MyDocStyle;
if (!ds.ComponentList && ShowSectionTitles
&& !MyItemInfo.MyDocStyle.CancelSectTitle && !MyItemInfo.MyDocStyle.CancelSectTitle
&& !MyItemInfo.MyDocStyle.SpecialStepsFoldout) // Don't ouput the Step Section title && !MyItemInfo.MyDocStyle.SpecialStepsFoldout) // Don't ouput the Step Section title
{ {
@ -1371,7 +1412,7 @@ namespace Volian.Print.Library
vlnParagraph hls = GetHighLevelParagraph(); vlnParagraph hls = GetHighLevelParagraph();
float RnoOffset1 = ToInt(formatInfo.MyStepSectionLayoutData.ColRTable, maxRNO); float RnoOffset1 = ToInt(formatInfo.MyStepSectionLayoutData.ColRTable, maxRNO);
float offset = hls.Width + RnoOffset1 + hls.XOffset; float offset = hls.Width + RnoOffset1 + hls.XOffset;
vlnTab tb = hls.PartsLeft[0] as vlnTab; vlnTab tb = hls.MyTab;
//offset += tb.Width; //offset += tb.Width;
if (MyTopRNO == null) if (MyTopRNO == null)
Width -= (float)itemInfo.ActiveFormat.MyStepSectionLayoutData.SingleColumnRNOIndent; Width -= (float)itemInfo.ActiveFormat.MyStepSectionLayoutData.SingleColumnRNOIndent;
@ -1410,7 +1451,13 @@ namespace Volian.Print.Library
if (itemInfo.ActiveFormat.MyStepSectionLayoutData.Dev_Format) if (itemInfo.ActiveFormat.MyStepSectionLayoutData.Dev_Format)
yoffLeft = Math.Max(yoffLeft, ChildrenLeft.Add(cb, itemInfo.Notes, xoff + 6 + (float)(itemInfo.ActiveFormat.MyStepSectionLayoutData.WidT), yoff, yoff, rnoLevel, maxRNO, formatInfo)); yoffLeft = Math.Max(yoffLeft, ChildrenLeft.Add(cb, itemInfo.Notes, xoff + 6 + (float)(itemInfo.ActiveFormat.MyStepSectionLayoutData.WidT), yoff, yoff, rnoLevel, maxRNO, formatInfo));
else else
yoff = ChildrenAbove.Add(cb, itemInfo.Notes, xoff, yoff, yoff, rnoLevel, maxRNO, formatInfo); {
// Notes/Cautions span the page. If the right (RNO) column is below current yoff, use the
// yoff from this. Without this, an overlap of text between the note and the bottom of the
// RNO was occurring for FNP - Unit 2/AOP, AOP-4.0.
if (yoffRightParent > yoff) yoff = yoffRightParent;
yoff = ChildrenAbove.Add(cb, itemInfo.Notes, xoff, yoff, yoff, rnoLevel, maxRNO, formatInfo);
}
} }
// Comanche Peak uses CAUTION2 type to enter a Step Designator, which is placed to the left of the step number. // Comanche Peak uses CAUTION2 type to enter a Step Designator, which is placed to the left of the step number.
// The Step Designator information is saved during the processing of the Cautions (ChildrenAbove) // The Step Designator information is saved during the processing of the Cautions (ChildrenAbove)
@ -1628,7 +1675,7 @@ namespace Volian.Print.Library
} }
// If checklists, the substeps are printed in a row, need to keep track of the 'longest' in // If checklists, the substeps are printed in a row, need to keep track of the 'longest' in
// y direction (bottommost) across the row. // y direction (bottommost) across the row.
if (itemInfo.IsStep && itemInfo.MyHLS != null && (itemInfo.MyHLS.FormatStepData.UseSmartTemplate || (itemInfo.MyHLS.FormatStepData.UseOldTemplate && itemInfo.ActiveFormat.PlantFormat.FormatData.ComponentTableFormat)) && (TheStepLevel(itemInfo) >= 0)) if (itemInfo.IsStep && itemInfo.MyHLS != null && (itemInfo.MyHLS.FormatStepData.UseSmartTemplate || (itemInfo.MyHLS.FormatStepData.UseOldTemplate && itemInfo.MyDocStyle.ComponentList)) && (TheStepLevel(itemInfo) >= 0))
savCheckListBottomMost = yoff + Height + (itemInfo.MyHLS.FormatStepData.UseSmartTemplate ? SixLinesPerInch : 0); savCheckListBottomMost = yoff + Height + (itemInfo.MyHLS.FormatStepData.UseSmartTemplate ? SixLinesPerInch : 0);
// Get Y offset for regular steps, or if section title is output or if not within row (not last column of // Get Y offset for regular steps, or if section title is output or if not within row (not last column of
// text) for wcn checklist, i.e. // text) for wcn checklist, i.e.
@ -1690,8 +1737,13 @@ namespace Volian.Print.Library
float yOffRight = yoff; float yOffRight = yoff;
float RnoOffset = ToInt(formatInfo.MyStepSectionLayoutData.ColRTable, maxRNO); float RnoOffset = ToInt(formatInfo.MyStepSectionLayoutData.ColRTable, maxRNO);
if (rnoLevel < maxRNO && itemInfo.RNOs != null) if (rnoLevel < maxRNO && itemInfo.RNOs != null)
yOffRight = ChildrenRight.Add(cb, itemInfo.RNOs, XOffset + RnoOffset, YTop, YTop, rnoLevel + 1, maxRNO, formatInfo); {
float tmpXoff = XOffset;
// if there is an RNO off of a substep at a level deeper than 1, use the parent's xoffset
// otherwise the Xoffset of the RNO is too far to the right.
if (((itemInfo.RNOs[0].FormatStepData.AdjHighLevelTab ?? 0) != 0) && itemInfo.PrintLevel > 1) tmpXoff = MyParent.XOffset;
yOffRight = ChildrenRight.Add(cb, itemInfo.RNOs, tmpXoff + RnoOffset, YTop, YTop, rnoLevel + 1, maxRNO, formatInfo);
}
// Need code to determine if the table will overlap the Right Column if it does then // Need code to determine if the table will overlap the Right Column if it does then
// use YOffRight rather than yoff // use YOffRight rather than yoff
if (itemInfo.Tables != null) if (itemInfo.Tables != null)
@ -2320,6 +2372,25 @@ namespace Volian.Print.Library
return MyParent.GetHighLevelParagraph(); return MyParent.GetHighLevelParagraph();
} }
// Tab, Separator, ChangeBar, Box, Circle, Checkoff // Tab, Separator, ChangeBar, Box, Circle, Checkoff
private vlnTab _MyTab;
public vlnTab MyTab
{
get
{
if (_MyTab == null)
{
foreach (vlnPrintObject po in PartsLeft)
{
if (po is vlnTab)
{
_MyTab = po as vlnTab;
break;
}
}
}
return _MyTab;
}
}
private vlnPrintObjects _PartsAbove; private vlnPrintObjects _PartsAbove;
public vlnPrintObjects PartsAbove public vlnPrintObjects PartsAbove
{ {
@ -2594,6 +2665,13 @@ namespace Volian.Print.Library
// if format had a tab adjustment for step type, use it // if format had a tab adjustment for step type, use it
if (itemInfo.MyTab != null && itemInfo.MyTab.Offset != 0) if (itemInfo.MyTab != null && itemInfo.MyTab.Offset != 0)
{ {
// The following is an attempt to fix FNP xoffsets - it is still under development:
//float xOffTabNew = MyParent.MyTab != null ? MyParent.MyTab.XOffset : MyParent.XOffset + itemInfo.MyTab.Offset;
//xOffTabNew += MyParent.MyTab == null ? 0 : MyParent.MyTab.TabOffset;
//float xIncrement = xOffTabNew - MyTab.XOffset;
//myTab.XOffset += xIncrement;
//XOffset += xIncrement;
//Width -= xIncrement;
myTab.XOffset -= itemInfo.MyTab.Offset; myTab.XOffset -= itemInfo.MyTab.Offset;
XOffset -= itemInfo.MyTab.Offset; XOffset -= itemInfo.MyTab.Offset;
Width += itemInfo.MyTab.Offset; Width += itemInfo.MyTab.Offset;
@ -2752,7 +2830,7 @@ namespace Volian.Print.Library
// with it (there may be empty cells at end). // with it (there may be empty cells at end).
public bool UseTemplateKeepOnCurLine(ItemInfo itemInfo) public bool UseTemplateKeepOnCurLine(ItemInfo itemInfo)
{ {
if (!itemInfo.IsStep || !itemInfo.ActiveFormat.PlantFormat.FormatData.ComponentTableFormat) return false; if (!itemInfo.IsStep || !itemInfo.MyDocStyle.ComponentList) return false;
if (itemInfo.MyHLS.FormatStepData.UseOldTemplate) return true; if (itemInfo.MyHLS.FormatStepData.UseOldTemplate) return true;
return false; return false;
} }
@ -2760,7 +2838,7 @@ namespace Volian.Print.Library
{ {
if (!itemInfo.IsStep) return false; if (!itemInfo.IsStep) return false;
if (itemInfo.MyHLS.FormatStepData.UseSmartTemplate) return false; if (itemInfo.MyHLS.FormatStepData.UseSmartTemplate) return false;
if (!itemInfo.ActiveFormat.PlantFormat.FormatData.ComponentTableFormat) return false; if (!itemInfo.MyDocStyle.ComponentList) return false;
if (itemInfo.MyHLS.FormatStepData.UseOldTemplate) if (itemInfo.MyHLS.FormatStepData.UseOldTemplate)
{ {
ItemInfo useForTemplate = itemInfo.IsHigh?itemInfo:itemInfo.MyParent; ItemInfo useForTemplate = itemInfo.IsHigh?itemInfo:itemInfo.MyParent;
@ -2774,7 +2852,7 @@ namespace Volian.Print.Library
{ {
int topIndx = itemInfo.GetSmartTemplateTopLevelIndx(); int topIndx = itemInfo.GetSmartTemplateTopLevelIndx();
int tmplIndx = 0; int tmplIndx = 0;
if (itemInfo.ActiveFormat.PlantFormat.FormatData.ComponentTableFormat && !itemInfo.IsHigh) if (itemInfo.MyDocStyle.ComponentList && !itemInfo.IsHigh)
{ {
// The ComponentTable format (FNP component table as one example), uses a template // The ComponentTable format (FNP component table as one example), uses a template
// where the items in the template below the HLS are all paragraphs (the intermediate steps // where the items in the template below the HLS are all paragraphs (the intermediate steps