logic for NullBox, Bottom continue message font fix, remove symbols from top continue message step number, line spacing fix, change bar fix, StepTypeColOverride logic, StepTypeWidthOverride logic

This commit is contained in:
John Jenko 2011-11-21 20:52:52 +00:00
parent 056a4a9e04
commit babe5482b2

View File

@ -59,10 +59,13 @@ namespace Volian.Print.Library
{ {
box = new vlnBox(); box = new vlnBox();
box.MyBox = formatInfo.PlantFormat.FormatData.BoxList[(int)bxIndx]; box.MyBox = formatInfo.PlantFormat.FormatData.BoxList[(int)bxIndx];
box.YOffset = yoff; if (box.MyBox != null)
int ln = 1; // a format flag determines whether there is a space before the note/caution. {
if (childItemInfo.FormatStepData.OneLineBeforeTab) ln++; box.YOffset = yoff;
yoff += ln * vlnPrintObject.SixLinesPerInch; int ln = 1; // a format flag determines whether there is a space before the note/caution.
if (childItemInfo.FormatStepData.OneLineBeforeTab) ln++;
yoff += ln * vlnPrintObject.SixLinesPerInch;
}
} }
else // Change Box Style else // Change Box Style
{ {
@ -95,9 +98,9 @@ namespace Volian.Print.Library
box = null; // if doing boxed steps, only do single sibling at a time. box = null; // if doing boxed steps, only do single sibling at a time.
} }
} }
if (box != null) if (box != null && box.MyBox != null)
{ {
if (box != null) box.Height = yoff - box.YOffset; // new height, with children box.Height = yoff - box.YOffset; // new height, with children
yoff += 2 * vlnPrintObject.SixLinesPerInch; yoff += 2 * vlnPrintObject.SixLinesPerInch;
} }
return yoff; return yoff;
@ -346,7 +349,7 @@ namespace Volian.Print.Library
Console.WriteLine("**** BOTTOM CONTINUE MESSAGE NOT CODED*****"); Console.WriteLine("**** BOTTOM CONTINUE MESSAGE NOT CODED*****");
break; break;
} }
MyPageHelper.BottomMessage = new vlnText(cb, this, myMsg, myMsg, docstyle.Layout.LeftMargin + XOffsetBox + docstyle.Continue.Bottom.Margin ?? 0, msg_yLocation, 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);
} }
cb.PdfDocument.NewPage(); cb.PdfDocument.NewPage();
DebugText.WriteLine("Paginate2"); DebugText.WriteLine("Paginate2");
@ -364,8 +367,8 @@ namespace Volian.Print.Library
{ {
yPageStart -= 2 * SixLinesPerInch;// Allow two lines for top continue message yPageStart -= 2 * SixLinesPerInch;// Allow two lines for top continue message
if (myMsg.IndexOf(@"%d") > -1) if (myMsg.IndexOf(@"%d") > -1)
myMsg = myMsg.Replace(@"%d", MyItemInfo.MyHLS.MyTab.CleanText.Trim(" .".ToCharArray())); myMsg = myMsg.Replace(@"%d", MyItemInfo.MyHLS.MyTab.CleanTextNoSymbols.Trim(" .".ToCharArray()));
MyPageHelper.TopMessage = new vlnText(cb, this, myMsg, myMsg, docstyle.Layout.LeftMargin + XOffsetBox + docstyle.Continue.Top.Margin ?? 0, yTopMargin + 0.1F, 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);
} }
MyPageHelper.YMultiplier = 1; MyPageHelper.YMultiplier = 1;
break; break;
@ -872,6 +875,10 @@ namespace Volian.Print.Library
MyPageHelper.MyParagraphs.Add(itemInfo.ItemID, this); MyPageHelper.MyParagraphs.Add(itemInfo.ItemID, this);
MyItemInfo = itemInfo; MyItemInfo = itemInfo;
XOffset = xoff; XOffset = xoff;
int extra = (MyItemInfo.FormatStepData == null) ? 0 : MyItemInfo.FormatStepData.StepLayoutData.STExtraSpace ?? 0;
//if (extra > 0)
// Console.WriteLine("here");
yoff += extra;
YTopMost = YOffset = yoff; YTopMost = YOffset = yoff;
vlnTab mytab = null; vlnTab mytab = null;
bool doSectTab = false; bool doSectTab = false;
@ -1148,6 +1155,12 @@ namespace Volian.Print.Library
ChangeBarData cbd = formatInfo.PlantFormat.FormatData.ProcData.ChangeBarData; ChangeBarData cbd = formatInfo.PlantFormat.FormatData.ProcData.ChangeBarData;
float cols = formatInfo.MyStepSectionLayoutData.ColS ?? 0; float cols = formatInfo.MyStepSectionLayoutData.ColS ?? 0;
float colr = ToInt(formatInfo.MyStepSectionLayoutData.ColRTable, maxRNO); float colr = ToInt(formatInfo.MyStepSectionLayoutData.ColRTable, maxRNO);
// 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
float col = (cbd.AbsoluteFixedChangeColumn) ? float col = (cbd.AbsoluteFixedChangeColumn) ?
((cbd.FixedAERChangeColumn ?? 0) > 0) ? ((cbd.FixedAERChangeColumn ?? 0) > 0) ?
(xoff > (cols + colr + COL_WID_ADJ)) ? (xoff > (cols + colr + COL_WID_ADJ)) ?
@ -1186,7 +1199,14 @@ namespace Volian.Print.Library
float cols = formatInfo.MyStepSectionLayoutData.ColS ?? 0; float cols = formatInfo.MyStepSectionLayoutData.ColS ?? 0;
int colr = ToInt(formatInfo.MyStepSectionLayoutData.ColRTable, maxRNO); int colr = ToInt(formatInfo.MyStepSectionLayoutData.ColRTable, maxRNO);
// if this is a caution or note, put the change bar to the right of the text: // if this is a caution or note, put the change bar to the right of the text:
if (paragraph.MyItemInfo.IsCaution || paragraph.MyItemInfo.IsNote && fixedChgCol < -10) return -fixedChgCol; //if ((paragraph.MyItemInfo.IsCaution || paragraph.MyItemInfo.IsNote) && fixedChgCol < -10) return -fixedChgCol;
if ((fixedChgCol==0))// && paragraph.MyItemInfo.IsCaution || paragraph.MyItemInfo.IsNote)
{
float rightEdge = (paragraph.XOffset + paragraph.Width + 5);
rightEdge-=(float)paragraph.MyItemInfo.MyDocStyle.Layout.LeftMargin;
rightEdge = rightEdge/paragraph.MyItemInfo.FormatStepData.Font.CharsToTwips;
return (int)rightEdge;
}
if (fixedChgCol < -10 || fixedChgCol >= 0) if (fixedChgCol < -10 || fixedChgCol >= 0)
return ((fixedChgCol > 0) ? fixedChgCol : return ((fixedChgCol > 0) ? fixedChgCol :
(fixedChgCol == 0) ? (int)c + 1 : (fixedChgCol == 0) ? (int)c + 1 :
@ -1460,45 +1480,100 @@ namespace Volian.Print.Library
} }
int typ = ((int)itemInfo.MyContent.Type) % 10000; int typ = ((int)itemInfo.MyContent.Type) % 10000;
int? bxIndx = formatInfo.PlantFormat.FormatData.StepDataList[typ].StepLayoutData.STBoxindex; int? bxIndx = formatInfo.PlantFormat.FormatData.StepDataList[typ].StepLayoutData.STBoxindex;
float? colOvrd = formatInfo.PlantFormat.FormatData.StepDataList[typ].StepTypeColOverride;
//if (colOvrd != null)
//{
// XOffset = (float)colOvrd -(float)itemInfo.MyDocStyle.Layout.LeftMargin;// 16-bit code subtracted the left margin
// //XOffset += tabWidth;
// //float x = (float)(colOvrd) - (float)itemInfo.MyDocStyle.Layout.LeftMargin;// 16-bit code subtracted the left margin
// //float xoff = x - XOffset;
// //XOffset = x;
// //if (myTab != null) myTab.XOffset += xoff;
// //return;
//}
if (bxIndx != null) if (bxIndx != null)
{ {
Box bx = formatInfo.PlantFormat.FormatData.BoxList[(int)bxIndx]; Box bx = formatInfo.PlantFormat.FormatData.BoxList[(int)bxIndx];
XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)bx.TxtStart + tabWidth + XOffsetBox; if (bx == null)
{
//float xoff = 0;
if (colOvrd != null)
{
// 16-bit code subtracted the left margin
//xoff = ((float)colOvrd - (float)itemInfo.MyDocStyle.Layout.LeftMargin) - XOffset;
//XOffset += xoff;
//if (myTab != null) myTab.XOffset += xoff;
//xoff = MyParent.XOffset - myTab.XOffset;
//XOffset += xoff;
XOffset = (float)colOvrd;
if (myTab != null)
{
myTab.XOffset += (MyParent.XOffset - myTab.XOffset);
//myTab.XOffset += xoff;
}
return;
}
else
XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + tabWidth + XOffsetBox;
}
else
//if (bx != null)
XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)bx.TxtStart + tabWidth + XOffsetBox;
if (myTab != null) myTab.XOffset = XOffset - tabWidth; if (myTab != null) myTab.XOffset = XOffset - tabWidth;
} }
else if (itemInfo.IsHigh) else if (itemInfo.IsHigh)
{ {
float x = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColS; float x = 0;
float xoff = x - XOffset; float xoff = 0;
if (colOvrd != null)
{
x = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)colOvrd;
//xoff = (float)colOvrd;
//XOffset += xoff;
//if (myTab != null) myTab.XOffset += xoff;
}
else
{
x = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColS;
}
//float x = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColS;
//float xoff = x - XOffset;
xoff = x - XOffset;
// ColSByLevel will specify the column in which the High Level Step starts with // ColSByLevel will specify the column in which the High Level Step starts with
// respect to the overall level calculation based on sections & meta-sections. // respect to the overall level calculation based on sections & meta-sections.
// Only a few of the single column formats use this: WCN1, CAL1, RGEBCK // Only a few of the single column formats use this: WCN1, CAL1, RGEBCK
if (formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.TieTabToLevel if (formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.TieTabToLevel
&& itemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ShowSectionTitles && itemInfo.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ShowSectionTitles
&& !itemInfo.MyDocStyle.CancelSectTitle && !itemInfo.MyDocStyle.CancelSectTitle
&& !(itemInfo.MyDocStyle.SpecialStepsFoldout && itemInfo.MyDocStyle.UseColSByLevel)) && !(itemInfo.MyDocStyle.SpecialStepsFoldout && itemInfo.MyDocStyle.UseColSByLevel))
{
int indxLevel = itemInfo.PrintLevel + itemInfo.CurrentSectionLevel();
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;
x = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColS + seclvlindent;
xoff = x - XOffset;
if (myTab != null) myTab.XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + colsbylevel;
LeftJustifyList jstlst = formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionPrintData.LeftJustifyList;
if (jstlst.Count > 0)
{ {
float leftJustifyTabSize = jstlst[indxLevel % jstlst.Count].Size ?? 0; int indxLevel = itemInfo.PrintLevel + itemInfo.CurrentSectionLevel();
XOffset = myTab.XOffset + leftJustifyTabSize; 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;
x = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColS + seclvlindent;
xoff = x - XOffset;
if (myTab != null) myTab.XOffset = (float)itemInfo.MyDocStyle.Layout.LeftMargin + colsbylevel;
LeftJustifyList jstlst = formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionPrintData.LeftJustifyList;
if (jstlst.Count > 0)
{
float leftJustifyTabSize = jstlst[indxLevel % jstlst.Count].Size ?? 0;
XOffset = myTab.XOffset + leftJustifyTabSize;
}
else
XOffset = myTab.XOffset + (myTab.Text.Length * (float)itemInfo.FormatStepData.Font.CPI) - colsbylevel;
} }
//else
//{
// x = (float)itemInfo.MyDocStyle.Layout.LeftMargin + (float)formatInfo.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.ColS;
//}
//xoff = x - XOffset;
else else
XOffset = myTab.XOffset + (myTab.Text.Length * (float)itemInfo.FormatStepData.Font.CPI) - colsbylevel; {
} XOffset += xoff;
else if (myTab != null) myTab.XOffset += xoff;
{ }
XOffset += xoff;
if (myTab != null) myTab.XOffset += xoff;
}
} }
else if (itemInfo.IsRNOPart && !((ItemInfo)itemInfo.ActiveParent).IsHigh) else if (itemInfo.IsRNOPart && !((ItemInfo)itemInfo.ActiveParent).IsHigh)
{ {
@ -1540,15 +1615,44 @@ namespace Volian.Print.Library
} }
return retval; return retval;
} }
private static int CurrentSectionLevel(ItemInfo itemInfo)
{
int retval = 0;
SectionInfo si = itemInfo.MyActiveSection as SectionInfo;
if ((si != null && si.TrueSectionNum()) || (itemInfo.ActiveSection.MyDocStyle.StructureStyle.Style & E_DocStructStyle.DSS_TreatAsTrueSectNum) == E_DocStructStyle.DSS_TreatAsTrueSectNum)
{
ItemInfo sec = itemInfo.MyActiveSection;
while (sec != null && sec.IsSection)
{
SectionConfig sc = sec.MyConfig as SectionConfig;
if (sc != null && sc.SubSection_AutoIndent != "N") retval++;
sec = sec.MyParent as SectionInfo;
}
}
return retval;
}
public void AdjustWidth(ItemInfo itemInfo, int maxRNO, FormatInfo formatInfo, vlnTab myTab) public void AdjustWidth(ItemInfo itemInfo, int maxRNO, FormatInfo formatInfo, vlnTab myTab)
{ {
float? widOvrd = itemInfo.FormatStepData == null ? null : itemInfo.FormatStepData.StepTypeWidthOverride;
if (widOvrd != null)
{
Width = (float)widOvrd;
return;
}
float tabWidth = (myTab == null) ? 0 : myTab.Width; float tabWidth = (myTab == null) ? 0 : myTab.Width;
int typ = ((int)itemInfo.MyContent.Type) % 10000; int typ = ((int)itemInfo.MyContent.Type) % 10000;
int? bxIndx = itemInfo.IsStep ? formatInfo.PlantFormat.FormatData.StepDataList[typ].StepLayoutData.STBoxindex : null; int? bxIndx = itemInfo.IsStep ? formatInfo.PlantFormat.FormatData.StepDataList[typ].StepLayoutData.STBoxindex : null;
if (bxIndx != null) if (bxIndx != null)
{ {
Box bx = formatInfo.PlantFormat.FormatData.BoxList[(int)bxIndx]; Box bx = formatInfo.PlantFormat.FormatData.BoxList[(int)bxIndx];
Width = _WidthAdjustBox + (float)bx.TxtWidth - tabWidth; // add 1 to get it to wrap like 16Bit if (bx == null)
{
// NOT SURE IF WE NEED TO TEST FOR THE NULLBOX FORMAT FLAG, MAYBE "bx == null" IS THE SAME THING
//if (formatInfo.MyStepSectionLayoutData.NullBox)
Width = (float)formatInfo.MyStepSectionLayoutData.WidT - tabWidth;
}
else
Width = _WidthAdjustBox + (float)bx.TxtWidth - tabWidth; // add 1 to get it to wrap like 16Bit
} }
else if (itemInfo.IsHigh) else if (itemInfo.IsHigh)
{ {