Keep pagination code from going into an infinite loop.
Properly handle a Null WidthOverride. Properly handle a note or caution on a section. Remove returns from lists of data points.
This commit is contained in:
parent
8a6e1c1996
commit
768890116c
@ -378,6 +378,7 @@ namespace Volian.Print.Library
|
||||
while (((YSize - yTop) > ySpaceOnCurPage) || PageBreakOnStepList.Count > 0)
|
||||
{
|
||||
ySpaceOnCurPage -= myBottomMsgSpace;
|
||||
vlnParagraph lastBreak = paraBreak;
|
||||
paraBreak = FindPageBreak(yStart, ySpaceOnCurPage, yLowerLimit, myList, paraBreak, yPageSize - (myTopMsgSpace + SixLinesPerInch) - myBottomMsgSpace);
|
||||
if (paraBreak == null)
|
||||
{
|
||||
@ -385,6 +386,10 @@ namespace Volian.Print.Library
|
||||
, MyItemInfo.ItemID, MyItemInfo.MyDocVersion.MyFolder.Name, MyItemInfo.ShortPath);
|
||||
break;
|
||||
}
|
||||
if (lastBreak == paraBreak)
|
||||
{
|
||||
throw (new Exception(string.Format("Pagination Infinite Loop {0}",lastBreak.MyItemInfo.ShortPath)));
|
||||
}
|
||||
//paraBreak.ShowPageBreak(999, paraBreak.MyItemInfo.ShortPath, "Yes",paraBreak.YTop, paraBreak.YSize, paraBreak.Height, false);
|
||||
//_MyLog.InfoFormat("Place to break\r\n==>'Place to Break',{0},'{1}','{2}'"
|
||||
//, paraBreak.MyItemInfo.ItemID, paraBreak.MyItemInfo.MyDocVersion.MyFolder.Name, paraBreak.MyItemInfo.ShortPath);
|
||||
@ -443,7 +448,8 @@ namespace Volian.Print.Library
|
||||
&& myPara.ChildrenRight[0].YSize <= fullPage && myPara.ChildrenRight[0].YSize > spaceOnPage)
|
||||
{
|
||||
//_MyLog.WarnFormat("\r\nMyParaBreak {0},{1},{2},{3},{4}", myPara, myPara.YSize, yUpperLimit, myPara.ChildrenRight[0].YSize, spaceOnPage);
|
||||
return myPara;
|
||||
if(myPara != lastBreak)
|
||||
return myPara;
|
||||
}
|
||||
// The following lines were added for Comanche Peak ECA-0.1A.SProcedure Steps.S17 (Printed as Step 12)
|
||||
vlnParagraph myParent = myPara.MyParent;
|
||||
|
@ -53,11 +53,11 @@ namespace Volian.Print.Library
|
||||
|
||||
public bool IsEnhancedBackgroundFormat(ItemInfo itminfo)
|
||||
{
|
||||
return ((itminfo.ActiveFormat.PlantFormat.FormatData.PurchaseOptions.Value & E_PurchaseOptions.EnhancedBackgrounds) == E_PurchaseOptions.EnhancedBackgrounds);
|
||||
return ((itminfo.ActiveFormat.PlantFormat.FormatData.PurchaseOptions.Value & E_PurchaseOptions.EnhancedBackgrounds) == E_PurchaseOptions.EnhancedBackgrounds);
|
||||
}
|
||||
public bool IsEnhancedDeviationFormat(ItemInfo itminfo)
|
||||
{
|
||||
return ((itminfo.ActiveFormat.PlantFormat.FormatData.PurchaseOptions.Value & E_PurchaseOptions.EnhancedDeviations) == E_PurchaseOptions.EnhancedDeviations);
|
||||
return ((itminfo.ActiveFormat.PlantFormat.FormatData.PurchaseOptions.Value & E_PurchaseOptions.EnhancedDeviations) == E_PurchaseOptions.EnhancedDeviations);
|
||||
}
|
||||
|
||||
public float Add(PdfContentByte cb, ItemInfoList itemInfoList, float xoff, float yoff, float yoffRight, int rnoLevel, int maxRNO, FormatInfo formatInfo)
|
||||
@ -72,17 +72,17 @@ namespace Volian.Print.Library
|
||||
float xoffBase = xoff;
|
||||
foreach (ItemInfo iChildItemInfo in itemInfoList)
|
||||
{
|
||||
if (iChildItemInfo.IsSection && (iChildItemInfo as SectionInfo).ColumnMode != maxRNO)
|
||||
if (iChildItemInfo.IsSection && (iChildItemInfo as SectionInfo).ColumnMode != maxRNO)
|
||||
maxRNO = (iChildItemInfo as SectionInfo).ColumnMode;
|
||||
ItemInfo childItemInfo = iChildItemInfo;
|
||||
int? bxIndx = childItemInfo.FormatStepData == null ? -1 : childItemInfo.FormatStepData.StepLayoutData.STBoxindex;
|
||||
|
||||
// if the Caution or Note is not boxed, then use ColT to set the starting column of the Note or Caution
|
||||
if (((bxIndx ?? -1) == -1) && (childItemInfo.IsCaution || childItemInfo.IsNote) && !childItemInfo.IsInRNO &&
|
||||
!childItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.Dev_Format &&
|
||||
if (((bxIndx ?? -1) == -1) && (childItemInfo.IsCaution || childItemInfo.IsNote) && !childItemInfo.IsInRNO &&
|
||||
!childItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.Dev_Format &&
|
||||
!IsEnhancedBackgroundFormat(childItemInfo) && !IsEnhancedDeviationFormat(childItemInfo))
|
||||
//xoff += (float)childItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColT;
|
||||
xoff = xoffBase + (float)childItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColT;
|
||||
xoff = xoffBase + (float)childItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColT;
|
||||
|
||||
// if in a ComponentTableFormat (FNP sub format 1, component list), column headers are defined
|
||||
// by the first level of children. The data for the column is the child of the column header.
|
||||
@ -124,7 +124,7 @@ namespace Volian.Print.Library
|
||||
yoff = Add(cb, childItemInfo.Notes, xoff, yoff, yoffRight, rnoLevel, maxRNO, formatInfo);
|
||||
//int? bxIndx = childItemInfo.FormatStepData == null ? -1 : childItemInfo.FormatStepData.StepLayoutData.STBoxindex;
|
||||
bool boxHLS = false;
|
||||
|
||||
|
||||
// If this step has a previous, and its header is different than the previous's header. Allow it to go
|
||||
// into the box code. Without this check, none of the box code is run. This caused a problem
|
||||
// for VCS where two different type notes where not getting separate boxes.
|
||||
@ -309,7 +309,7 @@ namespace Volian.Print.Library
|
||||
// For McGuire and Catawba, they use CustomSpacing which inserts a blank line before high level steps
|
||||
// if we paginate on one of these blank lines, we want to skip that blank line so that there isn't an
|
||||
// extra blank line at the top of the page.
|
||||
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.CustomSpacing &&
|
||||
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.CustomSpacing &&
|
||||
PartsAbove[0].YOffset + yTopMargin == yPageStart && PartsAbove[0].IParagraph.Content == " ")
|
||||
yPageStart = yTopMargin + YOffset;
|
||||
else
|
||||
@ -348,8 +348,8 @@ namespace Volian.Print.Library
|
||||
retval = DrawText(cb, ref yPageStart, yTopMargin, yBottomMargin, ref yLocation);
|
||||
|
||||
}
|
||||
else if (!MyItemInfo.IsStepSection
|
||||
|| (ShowSectionTitles
|
||||
else if (!MyItemInfo.IsStepSection
|
||||
|| (ShowSectionTitles
|
||||
&& !MyItemInfo.MyDocStyle.CancelSectTitle
|
||||
&& !MyItemInfo.MyDocStyle.SpecialStepsFoldout)) // Don't ouput the Step Section title
|
||||
{
|
||||
@ -362,7 +362,7 @@ namespace Volian.Print.Library
|
||||
// && !MyItemInfo.MyDocStyle.SpecialStepsFoldout
|
||||
// && !MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.UseMetaSections)
|
||||
// &&
|
||||
if (sch != null && sch.Section_PrintHdr != "Y") doprint = false;
|
||||
if (sch != null && sch.Section_PrintHdr != "Y") doprint = false;
|
||||
}
|
||||
if (MyItemInfo.MyContent.MyGrid != null)
|
||||
retval = DrawGrid(cb, ref yPageStart, yTopMargin, yBottomMargin, ref yLocation);
|
||||
@ -370,13 +370,13 @@ namespace Volian.Print.Library
|
||||
if (doprint) retval = DrawText(cb, ref yPageStart, yTopMargin, yBottomMargin, ref yLocation);
|
||||
if (MyItemInfo.IsHigh)
|
||||
{
|
||||
MyPageHelper.PageBookmarks.Add(MyItemInfo, (MyItemInfo.MyTab == null)?"":MyItemInfo.MyTab.CleanText + " " + MyItemInfo.DisplayText,
|
||||
MyPageHelper.PageBookmarks.Add(MyItemInfo, (MyItemInfo.MyTab == null) ? "" : MyItemInfo.MyTab.CleanText + " " + MyItemInfo.DisplayText,
|
||||
new PdfDestination(PdfDestination.FITBH, yLocation + YVeryTop - YTopMost + SixLinesPerInch));
|
||||
}
|
||||
}
|
||||
if (MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.WolfcreekCKLFormat)
|
||||
{
|
||||
DrawChkOrValveTableLines(cb, MyItemInfo, yPageStart, yTopMargin, yBottomMargin, yLocation);
|
||||
DrawChkOrValveTableLines(cb, MyItemInfo, yPageStart, yTopMargin, yBottomMargin, yLocation);
|
||||
}
|
||||
if (MyItemInfo.IsSection)
|
||||
{
|
||||
@ -405,7 +405,7 @@ namespace Volian.Print.Library
|
||||
private void DrawChkOrValveTableLines(PdfContentByte cb, ItemInfo ii, float yPageStart, float yTopMargin, float yBottomMargin, float yLocation)
|
||||
{
|
||||
if (!ii.IsStep || ii.IsCaution || ii.IsNote) return;
|
||||
|
||||
|
||||
Box bx = ii.ActiveFormat.PlantFormat.FormatData.BoxList[0];
|
||||
float lpi = MyPageHelper.YMultiplier == 1.0 ? SixLinesPerInch : _SevenLinesPerInch;
|
||||
bool savedebug = Rtf2Pdf.PdfDebug;
|
||||
@ -434,7 +434,7 @@ namespace Volian.Print.Library
|
||||
// just list the headers and the prefix can be 'empty'.
|
||||
if (ii.FormatStepData.Font.FontIsProportional())
|
||||
{
|
||||
float yLocVertLine = yLocation + (lpi/2);
|
||||
float yLocVertLine = yLocation + (lpi / 2);
|
||||
// Prefix, i.e. Top line:
|
||||
Paragraph topLeftLine = new Paragraph(bx.BXULC, iSymblFont);
|
||||
Rtf2Pdf.TextAt(cb, topLeftLine, float.Parse(vertPos[0]) + (float)ii.MyDocStyle.Layout.LeftMargin - csize, yLocVertLine, lWidth, 100, null, yBottomMargin);
|
||||
@ -463,11 +463,11 @@ namespace Volian.Print.Library
|
||||
//countLine = (int)(this.Height / lpi);
|
||||
Paragraph sideLeftLine = new Paragraph(bx.BXMLS, iSymblFont);
|
||||
Rtf2Pdf.TextAt(cb, sideLeftLine, float.Parse(vertPos[0]) + (float)ii.MyDocStyle.Layout.LeftMargin - csize, yLocVertLine, lWidth, 100, null, yBottomMargin);
|
||||
Rtf2Pdf.TextAt(cb, sideLeftLine, float.Parse(vertPos[0]) + (float)ii.MyDocStyle.Layout.LeftMargin - csize, yLocVertLine-(2*lpi), lWidth, 100, null, yBottomMargin);
|
||||
Rtf2Pdf.TextAt(cb, sideLeftLine, float.Parse(vertPos[0]) + (float)ii.MyDocStyle.Layout.LeftMargin - csize, yLocVertLine - (2 * lpi), lWidth, 100, null, yBottomMargin);
|
||||
Paragraph sideRightLine = new Paragraph(bx.BXMRS, iSymblFont);
|
||||
Rtf2Pdf.TextAt(cb, sideRightLine, float.Parse(vertPos[6]) + (float)ii.MyDocStyle.Layout.LeftMargin - csize, yLocVertLine, lWidth, 100, null, yBottomMargin);
|
||||
Rtf2Pdf.TextAt(cb, sideRightLine, float.Parse(vertPos[6]) + (float)ii.MyDocStyle.Layout.LeftMargin - csize, yLocVertLine - (2 * lpi), lWidth, 100, null, yBottomMargin);
|
||||
|
||||
|
||||
// now do the lines with the 'T' type lines for top/bottom of vertical lines.
|
||||
thPos = float.Parse(vertPos[0]) + csize;
|
||||
while (thPos < float.Parse(vertPos[cntVertPos - 1]))
|
||||
@ -479,7 +479,7 @@ namespace Volian.Print.Library
|
||||
|
||||
// now do the vertical bar between header words and the column header words.
|
||||
yLocVertLine -= lpi;
|
||||
string [] colHdrs = _MyItemInfo.FormatStepData.Suffix.Substring(_MyItemInfo.FormatStepData.Suffix.IndexOf(";")+1).Split(",".ToCharArray());
|
||||
string[] colHdrs = _MyItemInfo.FormatStepData.Suffix.Substring(_MyItemInfo.FormatStepData.Suffix.IndexOf(";") + 1).Split(",".ToCharArray());
|
||||
iTextSharp.text.Font iHdrFont = Volian.Svg.Library.VolianPdf.GetFont(_MyItemInfo.FormatStepData.Font.WindowsFont);
|
||||
iHdrFont.Color = new iTextSharp.text.Color(PrintOverride.OverrideTextColor(System.Drawing.Color.Black));
|
||||
|
||||
@ -491,7 +491,7 @@ namespace Volian.Print.Library
|
||||
// do vertical line:
|
||||
Rtf2Pdf.TextAt(cb, paraVertLine, float.Parse(vertPos[i]) + (float)ii.MyDocStyle.Layout.LeftMargin - csize, yLocVertLine, lWidth, 100, null, yBottomMargin);
|
||||
// do the column header text - center it:
|
||||
if (i<colHdrs.Length)
|
||||
if (i < colHdrs.Length)
|
||||
{
|
||||
Paragraph parColHdr = new Paragraph(colHdrs[i], iHdrFont);
|
||||
// find the center point of column header and subtract 1/2 width of the text to locate the text.
|
||||
@ -602,7 +602,7 @@ namespace Volian.Print.Library
|
||||
float ylocs = yPageStart - this.YBottomMost + 15;
|
||||
for (int i = sublev; i < cntVertPos - 1; i++)
|
||||
{
|
||||
float hPos = float.Parse(vertPos[i])+csize;
|
||||
float hPos = float.Parse(vertPos[i]) + csize;
|
||||
Rtf2Pdf.TextAt(cb, leftLine, float.Parse(vertPos[i]) + (float)ii.MyDocStyle.Layout.LeftMargin - csize, ylocs, lWidth, 100, null, yBottomMargin);
|
||||
while (hPos < float.Parse(vertPos[i + 1]))
|
||||
{
|
||||
@ -625,7 +625,7 @@ namespace Volian.Print.Library
|
||||
if (MyGrid.Height > (yTopMargin - yBottomMargin))
|
||||
{
|
||||
_MyLog.ErrorFormat("<<< ERROR >>> Table is too big to fit on page, expect pagination problems\r\n==>'Table Too Big',{0},'{1}','{2}',{3},{4}"
|
||||
, MyItemInfo.ItemID, MyItemInfo.MyDocVersion.MyFolder.Name, MyItemInfo.ShortPath, MyGrid.Height,(yTopMargin - yBottomMargin));
|
||||
, MyItemInfo.ItemID, MyItemInfo.MyDocVersion.MyFolder.Name, MyItemInfo.ShortPath, MyGrid.Height, (yTopMargin - yBottomMargin));
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
@ -651,14 +651,14 @@ namespace Volian.Print.Library
|
||||
}
|
||||
return retval;
|
||||
}
|
||||
private static List<string> myAttributes =new List<string>();
|
||||
private static List<string> myAttributes = new List<string>();
|
||||
private static void AddAttribute(string attr)
|
||||
{
|
||||
if (myAttributes.Contains(attr))
|
||||
return;
|
||||
//Console.WriteLine("Attribute = \"{0}\"", attr);
|
||||
myAttributes.Add(attr);
|
||||
}
|
||||
{
|
||||
if (myAttributes.Contains(attr))
|
||||
return;
|
||||
//Console.WriteLine("Attribute = \"{0}\"", attr);
|
||||
myAttributes.Add(attr);
|
||||
}
|
||||
private void CheckAttributes(System.Collections.Hashtable attributes)
|
||||
{
|
||||
foreach (string attr in attributes.Keys)
|
||||
@ -683,8 +683,8 @@ namespace Volian.Print.Library
|
||||
CheckAttributes(chk.Attributes);
|
||||
if (chk.Font.BaseFont != null && chk.Font.BaseFont.PostscriptFontName.ToUpper().Contains("BOLD"))
|
||||
{
|
||||
prefix += "\xD5";
|
||||
suffix = "\xD6" + suffix;
|
||||
prefix += "\xD5";
|
||||
suffix = "\xD6" + suffix;
|
||||
}
|
||||
if (chk.Attributes.ContainsKey("SUBSUPSCRIPT"))
|
||||
{
|
||||
@ -699,7 +699,7 @@ namespace Volian.Print.Library
|
||||
prefix += "\xD1";
|
||||
suffix = "\xA6" + suffix;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
if (chk.Attributes.ContainsKey("UNDERLINE"))
|
||||
{
|
||||
@ -741,8 +741,8 @@ namespace Volian.Print.Library
|
||||
{
|
||||
get
|
||||
{
|
||||
return string.Format("DebugID = {0}, ID={1} Type={2} TypeName='{3}' StepLevel={4} DBSequence={5} Width={6} Left={7}",
|
||||
DebugId, MyItemInfo.ItemID, MyItemInfo.FormatStepType, MyItemInfo.FormatStepData==null?"NoStepData":MyItemInfo.FormatStepData.Type, MyItemInfo.StepLevel, MyItemInfo.DBSequence, Width, XOffset);
|
||||
return string.Format("DebugID = {0}, ID={1} Type={2} TypeName='{3}' StepLevel={4} DBSequence={5} Width={6} Left={7}",
|
||||
DebugId, MyItemInfo.ItemID, MyItemInfo.FormatStepType, MyItemInfo.FormatStepData == null ? "NoStepData" : MyItemInfo.FormatStepData.Type, MyItemInfo.StepLevel, MyItemInfo.DBSequence, Width, XOffset);
|
||||
}
|
||||
}
|
||||
private void ResetDocStyleAndValues(ref float yTopMargin, ref float yBottomMargin)
|
||||
@ -899,7 +899,7 @@ namespace Volian.Print.Library
|
||||
break;
|
||||
}
|
||||
if (!PageBreakOnStep)
|
||||
MyPageHelper.BottomMessage = new vlnText(cb, this, myMsg, myMsg, docstyle.Layout.LeftMargin + XOffsetBox + docstyle.Continue.Bottom.Margin ?? 0, msg_yLocation, docstyle.Continue.Bottom.Font);// MyItemInfo.ActiveFormat.PlantFormat.FormatData.Font);
|
||||
MyPageHelper.BottomMessage = new vlnText(cb, this, myMsg, myMsg, docstyle.Layout.LeftMargin + XOffsetBox + docstyle.Continue.Bottom.Margin ?? 0, msg_yLocation, docstyle.Continue.Bottom.Font);// MyItemInfo.ActiveFormat.PlantFormat.FormatData.Font);
|
||||
}
|
||||
if (PageBreakOnStep) MyPageHelper.BottomMessage = null;
|
||||
cb.PdfDocument.NewPage();
|
||||
@ -915,7 +915,7 @@ namespace Volian.Print.Library
|
||||
cb.PdfDocument.NewPage();
|
||||
_MyLog.InfoFormat("NewPage Break within step blank {0}", cb.PdfWriter.CurrentPageNumber);
|
||||
}
|
||||
|
||||
|
||||
// if there is a 'container vlnbox' around the HLS, flag that the drawn box must also break:
|
||||
if (MyHighLevelParagraph != null && MyHighLevelParagraph.PartsContainer != null && MyHighLevelParagraph.PartsContainer.Count > 0)
|
||||
{
|
||||
@ -933,7 +933,7 @@ namespace Volian.Print.Library
|
||||
// If there is a box, adjust the yTopMost to include it.
|
||||
float yTopMost = YTopMost;
|
||||
//if (YVeryTop < yTopMost) Console.WriteLine("{0},{1},{2}", MyItemInfo.DBSequence, yTopMost, YVeryTop);
|
||||
yTopMost = Math.Min(yTopMost,YVeryTop);
|
||||
yTopMost = Math.Min(yTopMost, YVeryTop);
|
||||
yPageStart = yTopMargin + yTopMost;// -2 * SixLinesPerInch;
|
||||
DoCheckOffHeader(cb, MyItemInfo, yLocation, yTopMargin, yPageStart);
|
||||
if (EmptyTopMostPart) yPageStart += SixLinesPerInch;
|
||||
@ -944,7 +944,7 @@ namespace Volian.Print.Library
|
||||
if (myMsg.IndexOf(@"%d") > -1)
|
||||
myMsg = myMsg.Replace(@"%d", MyItemInfo.MyHLS.MyTab.CleanTextNoSymbols.Trim(" .".ToCharArray()));
|
||||
if (!PageBreakOnStep)
|
||||
MyPageHelper.TopMessage = new vlnText(cb, this, myMsg, myMsg, docstyle.Layout.LeftMargin + XOffsetBox + docstyle.Continue.Top.Margin ?? 0, yTopMargin + 0.1F, docstyle.Continue.Top.Font);// MyItemInfo.ActiveFormat.PlantFormat.FormatData.Font);
|
||||
MyPageHelper.TopMessage = new vlnText(cb, this, myMsg, myMsg, docstyle.Layout.LeftMargin + XOffsetBox + docstyle.Continue.Top.Margin ?? 0, yTopMargin + 0.1F, docstyle.Continue.Top.Font);// MyItemInfo.ActiveFormat.PlantFormat.FormatData.Font);
|
||||
else
|
||||
MyPageHelper.TopMessage = null;
|
||||
}
|
||||
@ -1009,7 +1009,7 @@ namespace Volian.Print.Library
|
||||
DoCheckOffHeader(cb, MyItemInfo, yLocation, yTopMargin, yPageStart);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// If "doSectionTitleContinued" is true then print the section title with "(Continued)" appended to it
|
||||
// format must have ContinueSectinHeader format flag set to true
|
||||
if (doSectionTitleContinued)
|
||||
@ -1068,8 +1068,8 @@ namespace Volian.Print.Library
|
||||
|
||||
if (myMsg.Contains("{Section Number}")) myMsg = myMsg.Replace("{Section Number}", MyItemInfo.ActiveSection.DisplayNumber);
|
||||
//jcb code
|
||||
if(myMsg.Contains("%-8s"))
|
||||
myMsg = myMsg.Replace("%-8s",MyItemInfo.MyProcedure.DisplayNumber.PadRight(8));
|
||||
if (myMsg.Contains("%-8s"))
|
||||
myMsg = myMsg.Replace("%-8s", MyItemInfo.MyProcedure.DisplayNumber.PadRight(8));
|
||||
//end jb code
|
||||
// center the message.
|
||||
float wtpm = (float)docstyle.Layout.PageWidth - (float)docstyle.Layout.LeftMargin;
|
||||
@ -1109,7 +1109,7 @@ namespace Volian.Print.Library
|
||||
{
|
||||
get
|
||||
{
|
||||
if (ChildrenAbove.Count>0) return ChildrenAbove[0].TopMostChild;
|
||||
if (ChildrenAbove.Count > 0) return ChildrenAbove[0].TopMostChild;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
@ -1145,15 +1145,15 @@ namespace Volian.Print.Library
|
||||
private float _YVeryTop = -1;
|
||||
public float YVeryTop
|
||||
{
|
||||
get
|
||||
get
|
||||
{
|
||||
if (_YVeryTop == -1)
|
||||
{
|
||||
_YVeryTop = YTop;
|
||||
_YVeryTop = VeryTop(PartsAbove,_YVeryTop);
|
||||
_YVeryTop = VeryTop(PartsContainer,_YVeryTop);
|
||||
_YVeryTop = VeryTop(PartsAbove, _YVeryTop);
|
||||
_YVeryTop = VeryTop(PartsContainer, _YVeryTop);
|
||||
}
|
||||
return _YVeryTop;
|
||||
return _YVeryTop;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1228,7 +1228,7 @@ namespace Volian.Print.Library
|
||||
}
|
||||
if (ChildrenRight != null && ChildrenRight.Count > 0)
|
||||
{
|
||||
foreach(vlnParagraph paraRight in ChildrenRight)
|
||||
foreach (vlnParagraph paraRight in ChildrenRight)
|
||||
{
|
||||
vlnParagraph paraRightLast = paraRight.GetFirstPieceLastPart();
|
||||
if (paraRightLast.YBottom > para.YBottom)
|
||||
@ -1249,10 +1249,10 @@ namespace Volian.Print.Library
|
||||
// the original list because list items cannot be removed in a
|
||||
// 'foreach'.
|
||||
List<int> CleanupListStepLevel = new List<int>();
|
||||
foreach(int stepLevel in myList.Keys)
|
||||
foreach (int stepLevel in myList.Keys)
|
||||
{
|
||||
List<float> CleanupListYLocation = new List<float>();
|
||||
SortedList<float, float> AdjustYLocation = new SortedList<float,float>();
|
||||
SortedList<float, float> AdjustYLocation = new SortedList<float, float>();
|
||||
foreach (float yLocation in myList[stepLevel].Keys)
|
||||
{
|
||||
if (-yLocation <= yTop)
|
||||
@ -1271,7 +1271,7 @@ namespace Volian.Print.Library
|
||||
// from the beginning of the step.
|
||||
// Note that yLocation is negative to have items in descending
|
||||
// order so that adding yTop decrements their values.
|
||||
myList[stepLevel].Add(yTop-yLocation, para);
|
||||
myList[stepLevel].Add(yTop - yLocation, para);
|
||||
}
|
||||
if (myList[stepLevel].Count == 0)
|
||||
CleanupListStepLevel.Add(stepLevel);
|
||||
@ -1412,7 +1412,7 @@ namespace Volian.Print.Library
|
||||
}
|
||||
MetaLevel = MetaLevel <= 2 ? 1 : MetaLevel - 1;
|
||||
if (MetaLevel == 1)
|
||||
offset += (float)formatInfo.PlantFormat.FormatData.SectData.SectionNumber.Pos;
|
||||
offset += (float)formatInfo.PlantFormat.FormatData.SectData.SectionNumber.Pos;
|
||||
else
|
||||
{
|
||||
xMetaAdj = (float)formatInfo.PlantFormat.FormatData.SectData.MetaSectionList[0].ColSByLevel;
|
||||
@ -1435,7 +1435,7 @@ namespace Volian.Print.Library
|
||||
if (itemInfo.MyTab.AltPrintTab != null)
|
||||
mytab = new vlnTab(cb, this, itemInfo.MyTab.AltPrintTab, itemInfo.MyTab.AltPrintTab, localXOffset, yoff, itemInfo.MyTab.MyFont, doSectTab, StepRTB.MySymbolFontName, itemInfo.MyTab.RemovedStyleUnderline);
|
||||
else
|
||||
mytab = new vlnTab(cb, this, itemInfo.MyTab.Text, itemInfo.MyTab.CleanText, localXOffset, yoff, itemInfo.MyTab.MyFont, doSectTab, StepRTB.MySymbolFontName, itemInfo.MyTab.RemovedStyleUnderline);
|
||||
mytab = new vlnTab(cb, this, itemInfo.MyTab.Text, itemInfo.MyTab.CleanText, localXOffset, yoff, itemInfo.MyTab.MyFont, doSectTab, StepRTB.MySymbolFontName, itemInfo.MyTab.RemovedStyleUnderline);
|
||||
PartsLeft.Add(mytab);
|
||||
if (mytab.MyMacro != null) PartsLeft.Add(mytab.MyMacro);
|
||||
}
|
||||
@ -1458,7 +1458,7 @@ namespace Volian.Print.Library
|
||||
Width -= (float)itemInfo.ActiveFormat.MyStepSectionLayoutData.SingleColumnRNOIndent;
|
||||
offset -= Width;
|
||||
float inc = offset - XOffset;
|
||||
if(mytab != null)
|
||||
if (mytab != null)
|
||||
mytab.XOffset += inc;// +(itemInfo.MyParent.IsHigh ? 6.8f : 0);
|
||||
XOffset += inc;
|
||||
adjustAgain = false;
|
||||
@ -1484,13 +1484,13 @@ namespace Volian.Print.Library
|
||||
if (adjusttab != 0) Width += (mytab.Width);
|
||||
}
|
||||
}
|
||||
if(adjustAgain)
|
||||
AdjustXOffsetForTab(itemInfo, maxRNO, formatInfo, mytab, xMetaAdj);
|
||||
if (adjustAgain)
|
||||
AdjustXOffsetForTab(itemInfo, maxRNO, formatInfo, mytab, xMetaAdj);
|
||||
if (UseTemplateWidthOrXOff(itemInfo)) XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + GetWidthOrStartFromTemplate(itemInfo, itemInfo.ActiveFormat, false);
|
||||
if (itemInfo.MyHeader != null && itemInfo.MyHeader.Text != null && !doSectTab)
|
||||
yoff += SetHeader(this, cb, itemInfo, formatInfo);
|
||||
float yoffLeft = yoff;
|
||||
if (ChildrenAbove != null)
|
||||
if (ChildrenAbove != null)
|
||||
ChildrenAbove.StepDesignator = null; //reset StepDesignator
|
||||
if (itemInfo.Cautions != null && !(itemInfo.IsCaution || itemInfo.IsNote))
|
||||
{
|
||||
@ -1518,8 +1518,8 @@ namespace Volian.Print.Library
|
||||
if (ChildrenAbove.StepDesignator != null)
|
||||
{
|
||||
string pref = ChildrenAbove.StepDesignator;
|
||||
float colOvrd = (float)(ChildrenAbove.StepDesignatorColumn??0);
|
||||
float xPref = (colOvrd > 0)? colOvrd : mytab.XOffset - (pref.Length * (72 / (float)_MyItemInfo.FormatStepData.Font.CPI));
|
||||
float colOvrd = (float)(ChildrenAbove.StepDesignatorColumn ?? 0);
|
||||
float xPref = (colOvrd > 0) ? colOvrd : mytab.XOffset - (pref.Length * (72 / (float)_MyItemInfo.FormatStepData.Font.CPI));
|
||||
PartsLeft.Add(new vlnText(cb, this, pref, pref, xPref, yoff, ChildrenAbove.StepDesignatorFont));
|
||||
ChildrenAbove.StepDesignator = null;
|
||||
ChildrenAbove.StepDesignatorColumn = null;
|
||||
@ -1538,7 +1538,7 @@ namespace Volian.Print.Library
|
||||
float addExtraSpace = 0;
|
||||
if (MyItemInfo.FormatStepData != null && MyItemInfo.ActiveFormat.MyStepSectionLayoutData.CustomSpacing)
|
||||
addExtraSpace = MyItemInfo.FormatStepData.StepLayoutData.STExtraSpace ?? 0;
|
||||
if (MyItemInfo.MyParent != null && MyItemInfo.MyParent.FormatStepData != null &&
|
||||
if (MyItemInfo.MyParent != null && MyItemInfo.MyParent.FormatStepData != null &&
|
||||
MyItemInfo.MyParent.FormatStepData.Type != "TitleWithTextRight")
|
||||
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
|
||||
@ -1554,7 +1554,7 @@ namespace Volian.Print.Library
|
||||
//if (YOffset != 0 && MyItemInfo.IsSection && MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.CustomSpacing)
|
||||
if (YOffset != 0 && MyItemInfo.IsSection && MyItemInfo.ActiveFormat.MyStepSectionLayoutData.CustomSpacing)
|
||||
addExtraSpace = (float)MyItemInfo.ActiveFormat.PlantFormat.FormatData.StepDataList[25].StepLayoutData.STExtraSpace;
|
||||
if (YOffset != 0 && MyItemInfo.FormatStepData != null &&
|
||||
if (YOffset != 0 && MyItemInfo.FormatStepData != null &&
|
||||
MyItemInfo.MyPrevious == null && MyItemInfo.FormatStepData.ThreeBlanksAbove)
|
||||
addExtraSpace = 24; // already has one blank line above, added two more
|
||||
//if (YOffset != 0 && MyItemInfo.FormatStepData != null && MyItemInfo.FormatStepData.StepLayoutData.STExtraSpace > 0)
|
||||
@ -1563,10 +1563,10 @@ namespace Volian.Print.Library
|
||||
// extra space:
|
||||
if (itemInfo.IsHigh && (itemInfo.Cautions != null || itemInfo.Notes != null))
|
||||
{
|
||||
if ((itemInfo.Cautions != null && itemInfo.Cautions[0].FormatStepData.AlwaysUseExtraLines) || (itemInfo.Notes != null && itemInfo.Notes[0].FormatStepData.AlwaysUseExtraLines))
|
||||
if ((itemInfo.Cautions != null && itemInfo.Cautions[0].FormatStepData.AlwaysUseExtraLines) || (itemInfo.Notes != null && itemInfo.Notes[0].FormatStepData.AlwaysUseExtraLines))
|
||||
addExtraSpace = 0;
|
||||
}
|
||||
if (addExtraSpace > 0 && MyItemInfo.FormatStepData != null)
|
||||
if (addExtraSpace > 0 && MyItemInfo.FormatStepData != null)
|
||||
this.PartsAbove.Add(new vlnText(cb, this, " ", " ", 72, yoff, MyItemInfo.FormatStepData.Font));
|
||||
|
||||
yoff += addExtraSpace;
|
||||
@ -1586,7 +1586,7 @@ namespace Volian.Print.Library
|
||||
// the '-24' in x-direction & '+4' in y-direction was used for the SHE format to get the continuous
|
||||
// HLS's asterisk to match 16bit. The font size was set at 16 to make it match also:
|
||||
VE_Font astFont = new VE_Font(MyItemInfo.FormatStepData.TabData.Font.Family, 16, E_Style.Bold, 10);
|
||||
vlnText myAsterisk = new vlnText(cb, this, "*", "*", mytab.XOffset - 24, YOffset+4, astFont);
|
||||
vlnText myAsterisk = new vlnText(cb, this, "*", "*", mytab.XOffset - 24, YOffset + 4, astFont);
|
||||
PartsLeft.Add(myAsterisk);
|
||||
}
|
||||
if (itemInfo.IsRNOPart && rnoLevel > maxRNO)
|
||||
@ -1605,7 +1605,7 @@ namespace Volian.Print.Library
|
||||
}
|
||||
// For background formats, HLS's or Caution or any Notes have tab on line and then text
|
||||
// on line below (with space in between)
|
||||
if (IsBackgroundStep() && itemInfo.MyTab.AltPrintTab.Trim() != "")
|
||||
if (IsBackgroundStep() && itemInfo.MyTab.AltPrintTab.Trim() != "")
|
||||
yoff = YOffset = yoff + (2 * SixLinesPerInch);
|
||||
|
||||
float yForCheckoff = yoff; //0; - default checkoff row is same as FIRST line of text
|
||||
@ -1791,7 +1791,7 @@ namespace Volian.Print.Library
|
||||
{
|
||||
// if this item's content is empty, and the flag is set to 'notonempty', don't print out the
|
||||
// checkoff - this was added for shearon harris:
|
||||
if (!(co.NotOnEmpty && itemInfo.MyContent.Text.Replace(@"\u160?"," ").TrimEnd() == ""))
|
||||
if (!(co.NotOnEmpty && itemInfo.MyContent.Text.Replace(@"\u160?", " ").TrimEnd() == ""))
|
||||
{
|
||||
float xloc_co = (float)itemInfo.MyDocStyle.Layout.LeftMargin;
|
||||
// if the format has 'SkipSpaces', look at the tab, and back up the macros to the number of
|
||||
@ -1820,7 +1820,7 @@ namespace Volian.Print.Library
|
||||
float RnoOffset = ToInt(formatInfo.MyStepSectionLayoutData.ColRTable, maxRNO);
|
||||
if (rnoLevel < maxRNO && itemInfo.RNOs != null)
|
||||
yOffRight = ChildrenRight.Add(cb, itemInfo.RNOs, XOffset + RnoOffset, YTop, YTop, rnoLevel + 1, maxRNO, formatInfo);
|
||||
|
||||
|
||||
// Need code to determine if the table will overlap the Right Column if it does then
|
||||
// use YOffRight rather than yoff
|
||||
if (itemInfo.Tables != null)
|
||||
@ -1860,14 +1860,14 @@ namespace Volian.Print.Library
|
||||
if (itemInfo.Sections != null) yoff = ChildrenBelow.Add(cb, itemInfo.Sections, xoff, yoff, yoff, rnoLevel, maxRNO, formatInfo);
|
||||
if (itemInfo.Procedures != null) yoff = ChildrenBelow.Add(cb, itemInfo.Procedures, xoff, yoff, yoff, rnoLevel, maxRNO, formatInfo);
|
||||
// Don't add the RNO to print if doing backgrounds. That piece of data is part of the pagelist item.
|
||||
if (rnoLevel >= maxRNO && itemInfo.RNOs != null &&
|
||||
if (rnoLevel >= maxRNO && itemInfo.RNOs != null &&
|
||||
!itemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.WolfCreekBackgroundFormat &&
|
||||
!itemInfo.RNOs[0].FormatStepData.InPageList)
|
||||
!itemInfo.RNOs[0].FormatStepData.InPageList)
|
||||
yoff = ChildrenBelow.Add(cb, itemInfo.RNOs, XOffset, yoff, yoff, rnoLevel + 1, maxRNO, formatInfo);
|
||||
yoff = Math.Max(yoff, yOffRight);
|
||||
// TODO - use RNOSepAfterAER flag too:
|
||||
string tmpRnoSepStr = formatInfo.MyStepSectionPrintData.RNOSepString;
|
||||
float tmpRnoSepLen = formatInfo.MyStepSectionPrintData.RNOSepLineLength??0;
|
||||
float tmpRnoSepLen = formatInfo.MyStepSectionPrintData.RNOSepLineLength ?? 0;
|
||||
if (rnoLevel < maxRNO && itemInfo.RNOs != null && (tmpRnoSepStr != null || tmpRnoSepLen != 0))
|
||||
{
|
||||
vlnParagraph rno = ChildrenRight[0];
|
||||
@ -1946,7 +1946,7 @@ namespace Volian.Print.Library
|
||||
// 2) If a continuous section, and it doesn't start at 'top' of the page, then the checkoff header is
|
||||
// printed on the same line as the continuous section. Support for this is here, the check off header is added
|
||||
// to the 'PartRight' off of the section's VlnParagraph.
|
||||
|
||||
|
||||
// First see if there is any checkoff data in the format file and that there
|
||||
// is a pagelist item for the checkoff header.
|
||||
if (itemInfo.ActiveFormat.PlantFormat.FormatData.ProcData.CheckOffData.CheckOffList.Count <= 0) return;
|
||||
@ -1967,7 +1967,7 @@ namespace Volian.Print.Library
|
||||
}
|
||||
}
|
||||
else
|
||||
mySubSectionInfo = (mySectionInfo.Sections == null)?null:mySectionInfo.Sections[0];
|
||||
mySubSectionInfo = (mySectionInfo.Sections == null) ? null : mySectionInfo.Sections[0];
|
||||
|
||||
if (mySectionInfo == mySubSectionInfo) mySubSectionInfo = null;
|
||||
|
||||
@ -1978,23 +1978,23 @@ namespace Volian.Print.Library
|
||||
// If no subsections, output with section
|
||||
// If subsections and continuous section, put out on same line as subsection. (done here)
|
||||
// If subsections and starts at top of page, (on top of page, use pagelist code in VlnSvgPageHelper)
|
||||
|
||||
|
||||
// Get SectionInfos to access specific section config items...
|
||||
SectionInfo si = SectionInfo.Get(mySectionInfo.ItemID);
|
||||
SectionInfo si = SectionInfo.Get(mySectionInfo.ItemID);
|
||||
int sindx = si.CheckOffHeadingIndex();
|
||||
SectionInfo subi = mySubSectionInfo == null ? null : SectionInfo.Get(mySubSectionInfo.ItemID);
|
||||
int subindx = subi==null?-1:subi.CheckOffHeadingIndex();
|
||||
int subindx = subi == null ? -1 : subi.CheckOffHeadingIndex();
|
||||
|
||||
// if there is no subsections & the main section doesn't use a header OR
|
||||
// if there is a subsection, & it does not use a header... Return.
|
||||
if ((subi==null&&sindx < 1) || (subi!=null&&subindx<1)) return;
|
||||
if ((subi == null && sindx < 1) || (subi != null && subindx < 1)) return;
|
||||
|
||||
// figure out location now:
|
||||
// if step, it uses pagelist logic to locate it (this is a page break condition).
|
||||
// if continuous, put out with subsection if there is one, otherwise section.
|
||||
// otherwise, use pagelist logic.
|
||||
bool usePageListCOHdr = false;
|
||||
|
||||
|
||||
if (itemInfo.IsStep)
|
||||
usePageListCOHdr = true;
|
||||
else if (subi == null) //no subsection
|
||||
@ -2008,7 +2008,7 @@ namespace Volian.Print.Library
|
||||
}
|
||||
|
||||
// grab the string from the format, depending on whether it should get it from the section or subsection.
|
||||
string cohead = (mySubSectionInfo!=null)?mySubSectionInfo.SectionCheckOffHeader:mySectionInfo.SectionCheckOffHeader;
|
||||
string cohead = (mySubSectionInfo != null) ? mySubSectionInfo.SectionCheckOffHeader : mySectionInfo.SectionCheckOffHeader;
|
||||
if (cohead == "" || cohead == null) return;
|
||||
|
||||
// PageListCheckOffHeader is an svgtext - but really we only need the x/y location for this (pagelist support)
|
||||
@ -2074,7 +2074,7 @@ namespace Volian.Print.Library
|
||||
// in the following calculation, the hls width (hls1.Width) == rno column width, so xUpperLimit is
|
||||
// the around the right margin, i.e. 'hls xoffset' + 'location of rno (colR) * columnmode' + 'width of rno'
|
||||
xUpperLimit = hls1.XOffset + hls1.Width + colR * itemInfo.ColumnMode;
|
||||
|
||||
|
||||
float TableCenterPos = float.Parse(formatInfo.MyStepSectionLayoutData.TableCenterPos.Split(",".ToCharArray())[itemInfo.ColumnMode]);
|
||||
if (formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.TieTabToLevel)
|
||||
XOffset = leftMargin + (pageWidth - leftMargin - Width) / 2;
|
||||
@ -2112,7 +2112,7 @@ namespace Volian.Print.Library
|
||||
// the amount of difference from a 10 CPI to a 12 CPI font. See comment above.
|
||||
float posAdjust = (float)(itemInfo.FormatStepData.StepPrintData.PosAdjust ?? 0);
|
||||
if (itemInfo.FormatStepData != null && itemInfo.FormatStepData.StepPrintData != null &&
|
||||
posAdjust>0)
|
||||
posAdjust > 0)
|
||||
{
|
||||
if (Width < hls1.Width - posAdjust)
|
||||
XOffset += posAdjust;
|
||||
@ -2137,7 +2137,7 @@ namespace Volian.Print.Library
|
||||
{
|
||||
if (MyParent != null && MyParent.MyItemInfo.FormatStepData != null && MyParent.MyItemInfo.FormatStepData.Type == "TitleWithTextRight") return 0;
|
||||
if (MyItemInfo.MyDocStyle.SpecialStepsFoldout) return 0;
|
||||
if (MyItemInfo.FormatStepData != null && MyItemInfo.FormatStepData.Prefix != null && MyItemInfo.FormatStepData.Suffix != null && MyItemInfo.FormatStepData.UseSmartTemplate) return 0;
|
||||
if (MyItemInfo.FormatStepData != null && MyItemInfo.FormatStepData.Prefix != null && MyItemInfo.FormatStepData.Suffix != null && MyItemInfo.FormatStepData.UseSmartTemplate) return 0;
|
||||
int everyNLines = MyItemInfo.FormatStepData == null ? 1 : MyItemInfo.FormatStepData.StepLayoutData.EveryNLines ?? 1;
|
||||
if (everyNLines == -99) return 0;
|
||||
if (MyItemInfo.Ordinal % everyNLines == 0 || MyItemInfo.NextItem == null) return SixLinesPerInch;
|
||||
@ -2185,11 +2185,11 @@ namespace Volian.Print.Library
|
||||
ChangeBarData cbd = formatInfo.PlantFormat.FormatData.ProcData.ChangeBarData;
|
||||
float cols = formatInfo.MyStepSectionLayoutData.ColS ?? 0;
|
||||
float colr = ToInt(formatInfo.MyStepSectionLayoutData.ColRTable, maxRNO);
|
||||
// FixedChangeColumn + - Column location for change bars
|
||||
// FixedChangeColumn + - Column location for change bars
|
||||
// 0 - Separate AER and RNO change bars to the right of the text
|
||||
// -10 to -1 - Change bars on left (specify # of columns from the text)
|
||||
// <-10 - AER change bars on the left and RNO change bars on the right.
|
||||
// FixedAERChangeColumn overrides the -5 default setting in chgbar.c, value is converted to a negative by the code
|
||||
// FixedAERChangeColumn overrides the -5 default setting in chgbar.c, value is converted to a negative by the code
|
||||
|
||||
float col = (cbd.AbsoluteFixedChangeColumn) ?
|
||||
((cbd.FixedAERChangeColumn ?? 0) > 0) ?
|
||||
@ -2213,14 +2213,14 @@ namespace Volian.Print.Library
|
||||
}
|
||||
else if (myPageHelper.ChangeBarDefinition.MyChangeBarText == PrintChangeBarText.RevNum)
|
||||
{
|
||||
|
||||
|
||||
string lRev = myPageHelper.Rev;
|
||||
// Now check the format flags to determine if/how the Rev string should be parsed.
|
||||
if ((itemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.DoRevDate && lRev.Contains("/"))
|
||||
|| (itemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.RevDateWithForwardSlash && lRev.Contains("\\")))
|
||||
{
|
||||
int indx = lRev.IndexOf(itemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.DoRevDate ? '/' : '\\');
|
||||
cbMess = lRev.Substring(0, indx>-1?indx:lRev.Length);
|
||||
cbMess = lRev.Substring(0, indx > -1 ? indx : lRev.Length);
|
||||
}
|
||||
else
|
||||
cbMess = lRev;
|
||||
@ -2246,7 +2246,7 @@ namespace Volian.Print.Library
|
||||
Box bxCautNote = null; // used for notes and cautions in the Prairie Island Alarms format
|
||||
if (MyItemInfo.IsCaution || MyItemInfo.IsNote)
|
||||
{
|
||||
// Temporary fix for change bars on Notes and Cautions where the FixedChgCol < -10
|
||||
// Temporary fix for change bars on Notes and Cautions where the FixedChgCol < -10
|
||||
tmpc = (float)formatInfo.MyStepSectionLayoutData.ColT + (float)formatInfo.MyStepSectionLayoutData.WidT; // end position of Caution / Note
|
||||
int typ = (int)(MyItemInfo.MyContent.Type % 10000);
|
||||
int? bxIndx = formatInfo.PlantFormat.FormatData.StepDataList[typ].StepLayoutData.STBoxindex;
|
||||
@ -2321,7 +2321,7 @@ namespace Volian.Print.Library
|
||||
_RtfSB.Append(AddFontTable(myFont));
|
||||
_RtfSB.Append(vlntxt.StartText);
|
||||
if (_MyItemInfo.IsStep && !itemInfo.FormatStepData.UseSmartTemplate && _MyItemInfo.FormatStepData.Suffix != null && _MyItemInfo.FormatStepData.Suffix != "")
|
||||
_RtfSB.Append(_MyItemInfo.FormatStepData.Suffix.Replace("{ulnone}",@"\ulnone "));
|
||||
_RtfSB.Append(_MyItemInfo.FormatStepData.Suffix.Replace("{ulnone}", @"\ulnone "));
|
||||
_RtfSB.Append("}");
|
||||
string rtf = _RtfSB.ToString();
|
||||
UnderlineTerminateList utl = MyItemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.UnderlineTerminateList;
|
||||
@ -2354,7 +2354,7 @@ namespace Volian.Print.Library
|
||||
float hdrWidth = (itemInfo.MyHeader.CleanText == null) ? 0 : itemInfo.MyHeader.CleanText.Length * 6;
|
||||
int typ = ((int)itemInfo.MyContent.Type) % 10000;
|
||||
int? bxIndx = formatInfo.PlantFormat.FormatData.StepDataList[typ].StepLayoutData.STBoxindex;
|
||||
|
||||
|
||||
if (itemInfo.MyHeader.Justify == System.Drawing.ContentAlignment.MiddleCenter)
|
||||
{
|
||||
if (bxIndx != null)
|
||||
@ -2374,7 +2374,7 @@ namespace Volian.Print.Library
|
||||
xoff = XOffset; // XOffset has left margin included
|
||||
vlnHeader myHeader = new vlnHeader(this, cb, itemInfo.MyHeader.Text, itemInfo.MyHeader.CleanText.TrimStart(" ".ToCharArray()), xoff, YOffset, itemInfo.MyHeader.MyFont);
|
||||
PartsAbove.Add(myHeader);
|
||||
return myHeader.Height + (!MyItemInfo.MyDocStyle.SpecialStepsFoldout || (MyItemInfo.MyDocStyle.ExtraLineHeader&&(MyItemInfo.IsCaution||MyItemInfo.IsNote)) ? SixLinesPerInch : 0);
|
||||
return myHeader.Height + (!MyItemInfo.MyDocStyle.SpecialStepsFoldout || (MyItemInfo.MyDocStyle.ExtraLineHeader && (MyItemInfo.IsCaution || MyItemInfo.IsNote)) ? SixLinesPerInch : 0);
|
||||
}
|
||||
private float AdjustToCharPosition(float position, float? CPI)
|
||||
{
|
||||
@ -2475,7 +2475,7 @@ namespace Volian.Print.Library
|
||||
private vlnTab _MyTab;
|
||||
public vlnTab MyTab
|
||||
{
|
||||
get
|
||||
get
|
||||
{
|
||||
if (_MyTab == null)
|
||||
{
|
||||
@ -2488,7 +2488,7 @@ namespace Volian.Print.Library
|
||||
}
|
||||
}
|
||||
}
|
||||
return _MyTab;
|
||||
return _MyTab;
|
||||
}
|
||||
}
|
||||
private vlnPrintObjects _PartsAbove;
|
||||
@ -2587,7 +2587,7 @@ namespace Volian.Print.Library
|
||||
iilvl = iilvl.MyParent;
|
||||
}
|
||||
level = level <= 2 ? 1 : level - 1;
|
||||
if (level==1)
|
||||
if (level == 1)
|
||||
XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (level * (float)formatInfo.PlantFormat.FormatData.SectData.SectionHeader.Pos);
|
||||
else
|
||||
{
|
||||
@ -2604,13 +2604,13 @@ namespace Volian.Print.Library
|
||||
|
||||
if (IsBackgroundStep())
|
||||
{
|
||||
if (myTab != null ) myTab.XOffset = XOffset;
|
||||
if (myTab != null) myTab.XOffset = XOffset;
|
||||
XOffset += (itemInfo.FormatStepData.Font.CharsToTwips * 2); // indent 2 characters for background steps
|
||||
return;
|
||||
}
|
||||
else if (itemInfo.FormatStepData != null && itemInfo.FormatStepData.Type == "TitleWithTextBelow")
|
||||
{
|
||||
if ((colOvrd??0) != 0)
|
||||
if ((colOvrd ?? 0) != 0)
|
||||
XOffset = (float)colOvrd;
|
||||
else
|
||||
XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin;
|
||||
@ -2618,7 +2618,7 @@ namespace Volian.Print.Library
|
||||
}
|
||||
else if (itemInfo.MyParent.FormatStepData != null && itemInfo.MyParent.FormatStepData.Type == "TitleWithTextBelow")
|
||||
{
|
||||
float childindent = itemInfo.MyParent.FormatStepData.ChildIndent??0;
|
||||
float childindent = itemInfo.MyParent.FormatStepData.ChildIndent ?? 0;
|
||||
if (myTab != null)
|
||||
{
|
||||
float delta = childindent + MyParent.XOffset - myTab.XOffset;
|
||||
@ -2631,7 +2631,7 @@ namespace Volian.Print.Library
|
||||
}
|
||||
else if (itemInfo.FormatStepData != null && itemInfo.FormatStepData.Type == "TitleWithTextRight")
|
||||
{
|
||||
if ((colOvrd??0) != 0)
|
||||
if ((colOvrd ?? 0) != 0)
|
||||
XOffset = (float)colOvrd;
|
||||
else
|
||||
XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin;
|
||||
@ -2647,11 +2647,11 @@ namespace Volian.Print.Library
|
||||
{
|
||||
float x = 0;
|
||||
float xoff = 0;
|
||||
if ((colOvrd??0)!=0)
|
||||
if ((colOvrd ?? 0) != 0)
|
||||
x = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)colOvrd;
|
||||
else
|
||||
x = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColS;
|
||||
|
||||
|
||||
xoff = x - XOffset;
|
||||
// ColSByLevel will specify the column in which the High Level Step starts with
|
||||
// respect to the overall level calculation based on sections & meta-sections.
|
||||
@ -2663,7 +2663,7 @@ namespace Volian.Print.Library
|
||||
float colsbylevel = (float)formatInfo.PlantFormat.FormatData.SectData.MetaSectionList[indxLevel % formatInfo.PlantFormat.FormatData.SectData.MetaSectionList.Count].ColSByLevel;
|
||||
float seclvlindent = colsbylevel - (float)formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColS;
|
||||
float adjCols = (float)formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColS + seclvlindent;
|
||||
float xtabcol = adjCols - ((myTab==null||myTab.Text==null)?0:(myTab.Text.Length * 7.2f));
|
||||
float xtabcol = adjCols - ((myTab == null || myTab.Text == null) ? 0 : (myTab.Text.Length * 7.2f));
|
||||
if (indxLevel > 1 && myTab != null) myTab.XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + xtabcol;
|
||||
else if (myTab != null) myTab.XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + colsbylevel;
|
||||
if (myTab != null)
|
||||
@ -2823,7 +2823,8 @@ namespace Volian.Print.Library
|
||||
if (itemInfo.IsStep && itemInfo.MyHLS != null && UseTemplateWidthOrXOff(itemInfo) && (xwid = GetWidthOrStartFromTemplate(itemInfo, formatInfo, true)) > 0)
|
||||
widOvrd = xwid;
|
||||
else
|
||||
widOvrd = itemInfo.FormatStepData == null ? null : (float?)ToInt(itemInfo.FormatStepData.WidthOverride, maxRNO);
|
||||
widOvrd = itemInfo.FormatStepData == null ? null : itemInfo.FormatStepData.WidthOverride == null ? null :
|
||||
(float?)ToInt(itemInfo.FormatStepData.WidthOverride, maxRNO);
|
||||
//widOvrd = itemInfo.FormatStepData == null ? null : itemInfo.FormatStepData.WidthOverride;
|
||||
// Don't adjust the RNO width if in single column mode:
|
||||
if (itemInfo.IsRNOPart && itemInfo.MyParent.IsHigh && itemInfo.MyActiveSection.ColumnMode != 0 && itemInfo.ActiveFormat.MyStepSectionLayoutData.RNOWidthAlt != null)
|
||||
@ -2833,7 +2834,7 @@ namespace Volian.Print.Library
|
||||
if (ovrd > 0)
|
||||
widOvrd = ovrd; // + 6; // Change bars on RNO column (signoff line) would not line up with 16-bit without this - NSP Alarms
|
||||
}
|
||||
if ((widOvrd??0) != 0)
|
||||
if ((widOvrd ?? 0) != 0)
|
||||
{
|
||||
Width = (float)widOvrd;
|
||||
// if there's a box, we may need to do an adjustment on the width, if the tab data was changed
|
||||
@ -2912,8 +2913,8 @@ namespace Volian.Print.Library
|
||||
Width = (float)formatInfo.MyStepSectionLayoutData.WidT - 6 - mycolT;
|
||||
XOffset += mycolT; // adjust caution/note text position
|
||||
if (PartsLeft != null)// adjust tab position
|
||||
foreach(vlnPrintObject vpo in PartsLeft)
|
||||
vpo.XOffset += mycolT;
|
||||
foreach (vlnPrintObject vpo in PartsLeft)
|
||||
vpo.XOffset += mycolT;
|
||||
}
|
||||
else if (itemInfo.IsSection)
|
||||
{
|
||||
@ -2960,11 +2961,12 @@ namespace Volian.Print.Library
|
||||
private bool UseTemplateWidthOrXOff(ItemInfo itemInfo)
|
||||
{
|
||||
if (!itemInfo.IsStep) return false;
|
||||
if (itemInfo.MyHLS == null) return false;
|
||||
if (itemInfo.MyHLS.FormatStepData.UseSmartTemplate) return false;
|
||||
if (!itemInfo.MyDocStyle.ComponentList) return false;
|
||||
if (itemInfo.MyHLS.FormatStepData.UseOldTemplate)
|
||||
{
|
||||
ItemInfo useForTemplate = itemInfo.IsHigh?itemInfo:itemInfo.MyParent;
|
||||
ItemInfo useForTemplate = itemInfo.IsHigh ? itemInfo : itemInfo.MyParent;
|
||||
int topIndx = useForTemplate.GetSmartTemplateTopLevelIndx();
|
||||
int tpIndx = useForTemplate.GetSmartTemplateIndex(topIndx, (int)useForTemplate.MyContent.Type);
|
||||
if (tpIndx > -1) return true;
|
||||
@ -3002,7 +3004,7 @@ namespace Volian.Print.Library
|
||||
// -1 below code, +1 for '.' and -2 for standard wid of tab
|
||||
// standard wid of this tab is 2 (ex: '1.')
|
||||
// so adjust width if longer than normal
|
||||
return (float)(sectTab.Length - 1) * 72/(float)MyItemInfo.FormatStepData.Font.CPI;
|
||||
return (float)(sectTab.Length - 1) * 72 / (float)MyItemInfo.FormatStepData.Font.CPI;
|
||||
}
|
||||
private bool HasCheckOffHeading(ItemInfo itemInfo, FormatInfo formatInfo)
|
||||
{
|
||||
@ -3036,7 +3038,8 @@ namespace Volian.Print.Library
|
||||
/// </summary>
|
||||
public class StepLevelList : SortedDictionary<int, SortedDictionary<float, vlnParagraph>>
|
||||
{
|
||||
public StepLevelList() : base()
|
||||
public StepLevelList()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
public void Add(int stepLevel, float yLocation, vlnParagraph para)
|
||||
@ -3060,7 +3063,7 @@ namespace Volian.Print.Library
|
||||
ParagraphLocation foundOverlap = FindOverlap(myParagraph);
|
||||
if (foundOverlap == null)
|
||||
{
|
||||
this.Add(new ParagraphLocation(yTopMost,myParagraph));
|
||||
this.Add(new ParagraphLocation(yTopMost, myParagraph));
|
||||
return;
|
||||
}
|
||||
ParagraphLocation doubleOverlap = FindOverlap(foundOverlap);
|
||||
@ -3096,12 +3099,12 @@ namespace Volian.Print.Library
|
||||
if (KeepStepsOnPage && paraLoc.MyParagraph.MyItemInfo.MyContent.Type == 20001)
|
||||
{
|
||||
if (DontBreakHere(paraLoc))
|
||||
//if (paraLoc.MyParagraph.MyItemInfo.MyPrevious == null) // First substep
|
||||
//if (paraLoc.MyParagraph.MyItemInfo.MyPrevious == null) // First substep
|
||||
level = 0;
|
||||
else
|
||||
level = 1;
|
||||
}
|
||||
myList.Add(level , paraLoc.YTop, paraLoc.MyParagraph);
|
||||
myList.Add(level, paraLoc.YTop, paraLoc.MyParagraph);
|
||||
}
|
||||
return myList;
|
||||
}
|
||||
@ -3149,9 +3152,9 @@ namespace Volian.Print.Library
|
||||
get { return _MyParagraph; }
|
||||
set { _MyParagraph = value; }
|
||||
}
|
||||
public ParagraphLocation(float yTopMost,vlnParagraph myParagraph)
|
||||
public ParagraphLocation(float yTopMost, vlnParagraph myParagraph)
|
||||
{
|
||||
MyParagraph =myParagraph;
|
||||
MyParagraph = myParagraph;
|
||||
YTop = myParagraph.YVeryTop - yTopMost;
|
||||
YBottom = myParagraph.YBottom - yTopMost;
|
||||
StepLevel = myParagraph.MyItemInfo.StepLevel;
|
||||
@ -3160,8 +3163,8 @@ namespace Volian.Print.Library
|
||||
{
|
||||
if (Between(otherParagraph.YTop, YTop, YBottom)) return true;
|
||||
if (Between(otherParagraph.YBottom, YTop, YBottom)) return true;
|
||||
if(Between(YTop,otherParagraph.YVeryTop,otherParagraph.YBottom)) return true;
|
||||
if(Between(YBottom,otherParagraph.YVeryTop,otherParagraph.YBottom)) return true;
|
||||
if (Between(YTop, otherParagraph.YVeryTop, otherParagraph.YBottom)) return true;
|
||||
if (Between(YBottom, otherParagraph.YVeryTop, otherParagraph.YBottom)) return true;
|
||||
return false;
|
||||
}
|
||||
public static bool Between(float x, float lower, float higher)
|
||||
@ -3170,8 +3173,8 @@ namespace Volian.Print.Library
|
||||
{
|
||||
if (Between(otherParagraphLocation.YTop, YTop, YBottom)) return true; // The top is within the other
|
||||
if (Between(otherParagraphLocation.YBottom, YTop, YBottom)) return true; // The bottom is within the other
|
||||
if(Between(YTop,otherParagraphLocation.YTop,otherParagraphLocation.YBottom)) return true; // the other top is within this one
|
||||
if(Between(YBottom,otherParagraphLocation.YTop,otherParagraphLocation.YBottom)) return true;// I believe this is unnecessary
|
||||
if (Between(YTop, otherParagraphLocation.YTop, otherParagraphLocation.YBottom)) return true; // the other top is within this one
|
||||
if (Between(YBottom, otherParagraphLocation.YTop, otherParagraphLocation.YBottom)) return true;// I believe this is unnecessary
|
||||
return false;
|
||||
}
|
||||
public void Merge(vlnParagraph otherParagraph)
|
||||
|
@ -499,6 +499,7 @@ namespace XYPlots
|
||||
Buff = Buff.Substring(0, Buff.Length - 2) + " \r\n\0x00"; // needs to end with null
|
||||
else if (Buff.EndsWith(">")) // doesn't end with return chars...
|
||||
Buff = Buff.Substring(0, Buff.Length - 1) + " \r\n\0x00"; // needs to end with null
|
||||
Buff = Regex.Replace(Buff, @"([0-9])\r\n([0-9])", "$1 $2");
|
||||
}
|
||||
private void CloseGraph()
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user