diff --git a/PROMS/Volian.Print.Library/Pagination.cs b/PROMS/Volian.Print.Library/Pagination.cs index 17af1d69..8a64a7f4 100644 --- a/PROMS/Volian.Print.Library/Pagination.cs +++ b/PROMS/Volian.Print.Library/Pagination.cs @@ -202,12 +202,20 @@ namespace Volian.Print.Library } if (ySizeIncludingFirstStep < yWithinMargins && ySizeIncludingFirst > yWithinMargins && yWithinMargins > (yPageSize/2)) ySizeIncludingFirst = ySizeIncludingFirstStep; - if (!KeepStepsOnPage && (ySizeIncludingFirst + ySectionEndMsg) > (yLocation - yBottomMargin) && !nearTheTop) + if (!KeepStepsOnPage && (ySizeIncludingFirst + ySectionEndMsg) > + (yLocation - (MyItemInfo.MyDocStyle.Layout.FooterLength + yBottomMargin)) && !nearTheTop) { if (!MyItemInfo.ActiveFormat.PlantFormat.FormatData.PrintData.SpecialCaseCalvert || (ySizeIncludingFirst < yPageSize || yWithinMargins < (yPageSize - (2 * 72)))) { - ShowPageBreak(4, "Page Break Before Continuous Step Section", "Yes", YSize, yPageSize, yWithinMargins, ManualPageBreak); + // .oooooo. . o8o .oooooo..o . o8o + // d8P' `Y8b .o8 `"' d8P' `Y8 .o8 `"' + // 888 .ooooo. ooo. .oo. .o888oo oooo ooo. .oo. oooo oooo .ooooo. oooo oooo .oooo.o Y88bo. .ooooo. .ooooo. .o888oo oooo .ooooo. ooo. .oo. .oooo.o + // 888 d88' `88b `888P"Y88b 888 `888 `888P"Y88b `888 `888 d88' `88b `888 `888 d88( "8 `"Y8888o. d88' `88b d88' `"Y8 888 `888 d88' `88b `888P"Y88b d88( "8 + // 888 888 888 888 888 888 888 888 888 888 888 888 888 888 888 `"Y88b. `"Y88b 888ooo888 888 888 888 888 888 888 888 `"Y88b. + // `88b ooo 888 888 888 888 888 . 888 888 888 888 888 888 888 888 888 o. )88b oo .d8P 888 .o 888 .o8 888 . 888 888 888 888 888 o. )88b + // `Y8bood8P' `Y8bod8P' o888o o888o "888" o888o o888o o888o `V88V"V8P' `Y8bod8P' `V88V"V8P' 8""888P' 8""88888P' `Y8bod8P' `Y8bod8P' "888" o888o `Y8bod8P' o888o o888o 8""888P' + ShowPageBreak(4, "Page Break Before Continuous Step Section", "Yes", YSize, yPageSize, yWithinMargins, ManualPageBreak); return 1; } } @@ -289,6 +297,13 @@ namespace Volian.Print.Library (mySize <= yWithinMargins + yExtra && SpecialCaseForRobinson())) //if (!ManualPageBreak && mySize + yEndMsg <= yWithinMargins + SixLinesPerInch) // Don't Paginate if there is enough room, will fit on page { + // ooooo ooooo ooooo .oooooo..o o8o oooo oooo .o88o. o8o . + // `888' `888' `888' d8P' `Y8 `"' `888 `888 888 `" `"' .o8 + // 888 888 888 Y88bo. oooo oooo ooo oooo 888 888 o888oo oooo .o888oo + // 888ooooo888 888 `"Y8888o. `88. `88. .8' `888 888 888 888 `888 888 + // 888 888 888 `"Y88b `88..]88..8' 888 888 888 888 888 888 + // 888 888 888 o oo .d8P `888'`888' 888 888 888 888 888 888 . + // o888o o888o o888ooooood8 8""88888P' `8' `8' o888o o888o o888o o888o o888o "888" //Console.WriteLine("'PageBreak',1,'No','HLS will fit on page',{0},{1},{2}, {3}, {4},'{5}'", MyItemInfo.ItemID, YSize, yPageSize, yWithinMargins, (int)(100 * yWithinMargins / yPageSize), MyItemInfo.ShortPath); ShowPageBreak(-1, "HLS will fit on page", firstStep, YSize, yPageSize, yWithinMargins,ManualPageBreak); return 0; @@ -357,6 +372,13 @@ namespace Volian.Print.Library // Don't want extra line before step //Console.WriteLine("'PageBreak',2,'Yes','HLS will fit on 1 Page',{0},{1},{2}, {3}, {4},'{5}'", MyItemInfo.ItemID, YSize, yPageSize, yWithinMargins, (int)(100 * yWithinMargins / yPageSize), MyItemInfo.ShortPath); // A page break will occur before the step is put out. ShowPageBreak with first argument of -1 is NOT a page break. + // .ooo ooooo ooooooooo. ooooo + // .88' `888' `888 `Y88. `888' + // d88' 888 888 .d88' 888 + // d888P"Ybo. 888 888ooo88P' 888 + // Y88[ ]88 888 888 888 + // `Y88 88P 888 o 888 888 + // `88bod8' o888ooooood8 o888o o888o ShowPageBreak(5, "HLS will fit on 1 Page at 6 LPI", "Yes", YSize, yPageSizeNextPage, yWithinMargins, ManualPageBreak); return 1; } @@ -366,6 +388,13 @@ namespace Volian.Print.Library else if (!KeepStepsOnPage && MyItemInfo.ActiveFormat.MyStepSectionLayoutData.CompressSteps && (ySize7LPI - SixLinesPerInch + yEndMsg) < (yPageSizeNextPage * SixLinesPerInch / _SevenLinesPerInch)) { + // ooooooooo ooooo ooooooooo. ooooo + // d"""""""8' `888' `888 `Y88. `888' + // .8' 888 888 .d88' 888 + // .8' 888 888ooo88P' 888 + // .8' 888 888 888 + // .8' 888 o 888 888 + // .8' o888ooooood8 o888o o888o //Console.WriteLine("'PageBreak',3,'Yes','HLS will fit on 1 Page at 7 LPI',{0},{1},{2}, {3}, {4},'{5}'", MyItemInfo.ItemID, YSize, yPageSize, yWithinMargins, (int)(100 * yWithinMargins / yPageSize), MyItemInfo.ShortPath); ShowPageBreak(7, "HLS will fit on 1 Page at 7 LPI", "Yes", YSize, yPageSizeNextPage, yWithinMargins, ManualPageBreak); //Console.WriteLine("'7LPI',{0},{1}", MyItemInfo.DBSequence, YSize); @@ -416,6 +445,15 @@ namespace Volian.Print.Library // ShowPageBreak(6, CheckForCompression("HLS will have to split on current page"), "Special", YSize, yPageSizeNextPage, yWithinMargins, ManualPageBreak); //BuildPageBreakList(yWithinMargins + SixLinesPerInch, yPageSizeNextPage + yExtra2, KeepStepsOnPage); // Case 5 - Determine items where page break(s) occur BuildPageBreakList(ySpaceOnFirstPage, yPageSize + yExtra2, KeepStepsOnPage, yEndMsg, doSectionTitleContinued & SectionShowTitles); // Case 5 - Determine items where page break(s) occur + // ooooo ooooo ooooo .oooooo..o .oooooo..o oooo o8o . .oooooo. . + // `888' `888' `888' d8P' `Y8 d8P' `Y8 `888 `"' .o8 d8P' `Y8b .o8 + // 888 888 888 Y88bo. Y88bo. oo.ooooo. 888 oooo .o888oo 888 oooo oooo oooo d8b oooo d8b .ooooo. ooo. .oo. .o888oo + // 888ooooo888 888 `"Y8888o. `"Y8888o. 888' `88b 888 `888 888 888 `888 `888 `888""8P `888""8P d88' `88b `888P"Y88b 888 + // 888 888 888 `"Y88b `"Y88b 888 888 888 888 888 888 888 888 888 888 888ooo888 888 888 888 + // 888 888 888 o oo .d8P oo .d8P 888 888 888 888 888 . `88b ooo 888 888 888 888 888 .o 888 888 888 . + // o888o o888o o888ooooood8 8""88888P' 8""88888P' 888bod8P' o888o o888o "888" `Y8bood8P' `V88V"V8P' d888b d888b `Y8bod8P' o888o o888o "888" + // 888 + // o888o if (firstStep == "Yes") { //ySpaceOnFirstPage = yWithinMargins; // Accounts for Section Title Line @@ -435,6 +473,15 @@ namespace Volian.Print.Library //BuildPageBreakList(yPageSize + yExtra, yPageSize); // Case 1 :Works for ES05 Step 15 SubStep 7 // Pagination Fix Break1LineShort4 BuildPageBreakList(yPageSize + yExtra, yPageSizeNextPage + yExtra2, KeepStepsOnPage, yEndMsg, doSectionTitleContinued & SectionShowTitles); // Case 1 :Works for ES05 Step 15 SubStep 7 + // ooooo ooooo ooooo .oooooo..o .oooooo..o oooo o8o . ooooo ooo + // `888' `888' `888' d8P' `Y8 d8P' `Y8 `888 `"' .o8 `888b. `8' + // 888 888 888 Y88bo. Y88bo. oo.ooooo. 888 oooo .o888oo 8 `88b. 8 .ooooo. oooo oooo ooo + // 888ooooo888 888 `"Y8888o. `"Y8888o. 888' `88b 888 `888 888 8 `88b. 8 d88' `88b `88. `88. .8' + // 888 888 888 `"Y88b `"Y88b 888 888 888 888 888 8 `88b.8 888ooo888 `88..]88..8' + // 888 888 888 o oo .d8P oo .d8P 888 888 888 888 888 . 8 `888 888 .o `888'`888' + // o888o o888o o888ooooood8 8""88888P' 8""88888P' 888bod8P' o888o o888o "888" o8o `8 `Y8bod8P' `8' `8' + // 888 + // o888o if (firstStep == "Yes") ShowPageBreak(9, CheckForCompression("First HLS will have to split on new page"), "Yes", YSize, yPageSizeNextPage, yWithinMargins, ManualPageBreak); else @@ -676,7 +723,14 @@ namespace Volian.Print.Library // MyPageHelper.ParaBreaks.Add(this); // return; //} - while (((YSize - yTop) > (ySpaceOnCurPage - (accountForCalvertAlarmConditionResponseFooter+yEndMsg))) || PageBreakOnStepList.Count > 0) + // ooooo ooo . oooooooooo. oooo + // `888b. `8' .o8 `888' `Y8b `888 + // 8 `88b. 8 .ooooo. oooo ooo .o888oo 888 888 oooo d8b .ooooo. .oooo. 888 oooo + // 8 `88b. 8 d88' `88b `88b..8P' 888 888oooo888' `888""8P d88' `88b `P )88b 888 .8P' + // 8 `88b.8 888ooo888 Y888' 888 888 `88b 888 888ooo888 .oP"888 888888. + // 8 `888 888 .o .o8"'88b 888 . 888 .88P 888 888 .o d8( 888 888 `88b. + // o8o `8 `Y8bod8P' o88' 888o "888" o888bood8P' d888b `Y8bod8P' `Y888""8o o888o o888o + while (((YSize - yTop) > (ySpaceOnCurPage - (accountForCalvertAlarmConditionResponseFooter + yEndMsg))) || PageBreakOnStepList.Count > 0) { float ySpaceOnCurPageSave = ySpaceOnCurPage; if (((YSize - yTop) <= (ySpaceOnCurPage - accountForCalvertAlarmConditionResponseFooter)) || PageBreakOnStepList.Count > 0) @@ -889,6 +943,15 @@ namespace Volian.Print.Library if (paraBreak7 != null && paraBreak7.YOffset > paraBreak.YOffset && paraBreak.MyItemInfo.StepLevel >= paraBreak7.MyItemInfo.StepLevel) { paraBreak = paraBreak7; + // .oooooo. ooooooooo. . + // d8P' `Y8b `888 `Y88. .o8 + // 888 .ooooo. ooo. .oo. .oo. oo.ooooo. oooo d8b .ooooo. .oooo.o .oooo.o 888 .d88' .oooo. oooo d8b .o888oo + // 888 d88' `88b `888P"Y88bP"Y88b 888' `88b `888""8P d88' `88b d88( "8 d88( "8 888ooo88P' `P )88b `888""8P 888 + // 888 888 888 888 888 888 888 888 888 888ooo888 `"Y88b. `"Y88b. 888 .oP"888 888 888 + // `88b ooo 888 888 888 888 888 888 888 888 888 .o o. )88b o. )88b 888 d8( 888 888 888 . + // `Y8bood8P' `Y8bod8P' o888o o888o o888o 888bod8P' d888b `Y8bod8P' 8""888P' 8""888P' o888o `Y888""8o d888b "888" + // 888 + // o888o if (lastBreak != null) { lastBreak.PageBreakReason = "More of Step at 7 LPI"; @@ -943,6 +1006,15 @@ namespace Volian.Print.Library if ((YSize - yTop) > (ySpaceOnCurPage - (accountForCalvertAlarmConditionResponseFooter + yEndMsg)) && (YSize - yTop) < ySpaceAt7LPI ) { + // .oooooo. ooooooooo. . + // d8P' `Y8b `888 `Y88. .o8 + // 888 .ooooo. ooo. .oo. .oo. oo.ooooo. oooo d8b .ooooo. .oooo.o .oooo.o 888 .d88' .ooooo. .oooo.o .o888oo + // 888 d88' `88b `888P"Y88bP"Y88b 888' `88b `888""8P d88' `88b d88( "8 d88( "8 888ooo88P' d88' `88b d88( "8 888 + // 888 888 888 888 888 888 888 888 888 888ooo888 `"Y88b. `"Y88b. 888`88b. 888ooo888 `"Y88b. 888 + // `88b ooo 888 888 888 888 888 888 888 888 888 .o o. )88b o. )88b 888 `88b. 888 .o o. )88b 888 . + // `Y8bood8P' `Y8bod8P' o888o o888o o888o 888bod8P' d888b `Y8bod8P' 8""888P' 8""888P' o888o o888o `Y8bod8P' 8""888P' "888" + // 888 + // o888o paraBreak.PageBreakReason = "Rest of Step fits at 7 LPI"; paraBreak.CompressPartOfPage = true; break; diff --git a/PROMS/Volian.Print.Library/vlnParagraph.cs b/PROMS/Volian.Print.Library/vlnParagraph.cs index b59b6d3a..f6aaf3c7 100644 --- a/PROMS/Volian.Print.Library/vlnParagraph.cs +++ b/PROMS/Volian.Print.Library/vlnParagraph.cs @@ -875,6 +875,15 @@ namespace Volian.Print.Library ProfileTimer.Pop(profileDepth); if (retval == 0) // problem occurred - paragraph was not able to be printed on page { // pagination logic needs to be fixed. + // oooooooooooo ooooooooo. o8o . o8o + // `888' `8 `888 `Y88. `"' .o8 `"' + // 888 .ooooo. oooo d8b .ooooo. .ooooo. 888 .d88' .oooo. .oooooooo oooo ooo. .oo. .oooo. .o888oo oooo .ooooo. ooo. .oo. + // 888oooo8 d88' `88b `888""8P d88' `"Y8 d88' `88b 888ooo88P' `P )88b 888' `88b `888 `888P"Y88b `P )88b 888 `888 d88' `88b `888P"Y88b + // 888 " 888 888 888 888 888ooo888 888 .oP"888 888 888 888 888 888 .oP"888 888 888 888 888 888 888 + // 888 888 888 888 888 .o8 888 .o 888 d8( 888 `88bod8P' 888 888 888 d8( 888 888 . 888 888 888 888 888 + // o888o `Y8bod8P' d888b `Y8bod8P' `Y8bod8P' o888o `Y888""8o `8oooooo. o888o o888o o888o `Y888""8o "888" o888o `Y8bod8P' o888o o888o + // d" YD + // "Y88888P' ForcePagination(cb, ref yPageStart, yTopMargin, yBottomMargin, ref yLocation, ref retval); } else @@ -1220,6 +1229,13 @@ namespace Volian.Print.Library DocStyle docstyle = null; switch (paginate) { + // .oooooo. .oooo. + // d8P' `Y8b d8P'`Y8b + // 888 .oooo. .oooo.o .ooooo. 888 888 + // 888 `P )88b d88( "8 d88' `88b 888 888 + // 888 .oP"888 `"Y88b. 888ooo888 888 888 + // `88b ooo d8( 888 o. )88b 888 .o `88b d88' + // `Y8bood8P' `Y888""8o 8""888P' `Y8bod8P' `Y8bd8P' case 0: // No page break if (MyItemInfo.IsSection) { @@ -1237,15 +1253,13 @@ namespace Volian.Print.Library ///else /// MyPageHelper.YMultiplier = 1; break; - // XXXX XX XXXXX XXXXXXX X - // X X X X X X X XXX - // X X X X X - // X X X X X X X - // X X X XXXXX XXXX X - // X X X X X X X - // X XXXXX X X X - // X X X X X X X X X - // XXXX XXX XXX XXXXX XXXXXXX XXXXX + // .oooooo. .o + // d8P' `Y8b o888 + //888 .oooo. .oooo.o .ooooo. 888 + //888 `P )88b d88( "8 d88' `88b 888 + //888 .oP"888 `"Y88b. 888ooo888 888 + //`88b ooo d8( 888 o. )88b 888 .o 888 + // `Y8bood8P' `Y888""8o 8""888P' `Y8bod8P' o888o case 1: // Break on High Level Step OutputOtherPageSteps(cb, YTopMost, yPageStart, yTopMargin, yBottomMargin); docstyle = MyItemInfo.MyDocStyle; @@ -1312,6 +1326,13 @@ namespace Volian.Print.Library else MyPageHelper.YMultiplier = 1; break; + // .oooooo. .oooo. + // d8P' `Y8b .dP""Y88b + // 888 .oooo. .oooo.o .ooooo. ]8P' + // 888 `P )88b d88( "8 d88' `88b .d8P' + // 888 .oP"888 `"Y88b. 888ooo888 .dP' + // `88b ooo d8( 888 o. )88b 888 .o .oP .o + // `Y8bood8P' `Y888""8o 8""888P' `Y8bod8P' 8888888888 case 2: // Break within a Step OutputOtherPageSteps(cb, YTopMost, yPageStart, yTopMargin, yBottomMargin); docstyle = MyItemInfo.MyDocStyle; @@ -1465,6 +1486,13 @@ namespace Volian.Print.Library if (addExtraLines) yPageStart -= (2 * SixLinesPerInch); if (MyItemInfo.IsRNOPart && MyItemInfo.FormatStepData.DoubleSpace && MyItemInfo.FormatStepData.SpaceDouble) yPageStart += SixLinesPerInch; break; + // .oooooo. .oooo. + // d8P' `Y8b .dP""Y88b + // 888 .oooo. .oooo.o .ooooo. ]8P' + // 888 `P )88b d88( "8 d88' `88b <88b. + // 888 .oP"888 `"Y88b. 888ooo888 `88b. + // `88b ooo d8( 888 o. )88b 888 .o o. .88P + // `Y8bood8P' `Y888""8o 8""888P' `Y8bod8P' `8bd88P' case 3: // Break on High Level Step (SevenLinesPerInch) if (!firstHighLevelStep) {