From bfa0add51c3997ab147b400a164389c6ba9fe815 Mon Sep 17 00:00:00 2001 From: Kathy Date: Mon, 25 Mar 2013 12:09:11 +0000 Subject: [PATCH] --- .../Format/PlantFormat.cs | 8 ++ PROMS/Volian.Print.Library/PromsPrinter.cs | 6 ++ .../Volian.Print.Library/VlnSvgPageHelper.cs | 88 +++++++++++++++--- PROMS/fmtxml/WST1all.xml | Bin 89216 -> 92468 bytes PROMS/fmtxml/WST2all.xml | Bin 80396 -> 83482 bytes PROMS/fmtxml/WSTBCKall.xml | Bin 65454 -> 71878 bytes PROMS/fmtxml/WSTDCSall.xml | Bin 81494 -> 82424 bytes 7 files changed, 90 insertions(+), 12 deletions(-) diff --git a/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs b/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs index f0729510..f6582616 100644 --- a/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs +++ b/PROMS/VEPROMS.CSLA.Library/Format/PlantFormat.cs @@ -3348,6 +3348,14 @@ namespace VEPROMS.CSLA.Library return LazyLoad(ref _TofCLineSpacing, "@TofCLineSpacing"); } } + private LazyLoad _TofCNumLevels; + public int? TofCNumLevels + { + get + { + return LazyLoad(ref _TofCNumLevels, "@TofCNumLevels"); + } + } private VE_Font _Font; public VE_Font Font { diff --git a/PROMS/Volian.Print.Library/PromsPrinter.cs b/PROMS/Volian.Print.Library/PromsPrinter.cs index a29ce4ba..83f314df 100644 --- a/PROMS/Volian.Print.Library/PromsPrinter.cs +++ b/PROMS/Volian.Print.Library/PromsPrinter.cs @@ -613,6 +613,7 @@ namespace Volian.Print.Library float numwidth = width; float yBottomMargin = yPageStart - (float)tocSection.MyDocStyle.Layout.PageLength + (2 * vlnPrintObject.SixLinesPerInch); Rtf2Pdf.Offset = new PointF(0, 2.5F); + // for indenting of subsections, count up tree. Only start indenting // at third level, i.e. not indent on 1.0 and 1.1, but indent on 1.1.1: int level = 0; @@ -622,8 +623,13 @@ namespace Volian.Print.Library level++; iilvl = iilvl.MyParent; } + // check what level the plant wants the auto ToC indented: + int tofCNumLevels = tocSection.ActiveFormat.PlantFormat.FormatData.SectData.AccSectionData.TableOfContentsData.TofCNumLevels ?? 0; + if (tofCNumLevels > 0 && level > tofCNumLevels) return yLocation; + level = level <= 2 ? 0 : level - 2; // no indenting until third level float indentOffset = (level * (secTitlePos - secNumPos)); + float retval = Rtf2Pdf.TextAt(cb, myparagraphn, leftMargin + secNumPos + indentOffset, yPageStart - yLocation, width * 1.3F, height, "", yBottomMargin); if (retval == 0) // do a newpage, it couldn't fit on current page. { diff --git a/PROMS/Volian.Print.Library/VlnSvgPageHelper.cs b/PROMS/Volian.Print.Library/VlnSvgPageHelper.cs index a4f967e0..01fcbd1d 100644 --- a/PROMS/Volian.Print.Library/VlnSvgPageHelper.cs +++ b/PROMS/Volian.Print.Library/VlnSvgPageHelper.cs @@ -658,8 +658,12 @@ namespace Volian.Print.Library public string PageListLastCheckOffHeader = null; public SvgText PageListCheckOffHeader = null; + public Dictionary PgLogicals; private void AddPageListItems(Volian.Svg.Library.Svg mySvg, VEPROMS.CSLA.Library.PageStyle pageStyle, VEPROMS.CSLA.Library.SectionInfo section) { + if (PgLogicals == null) PgLogicals = new Dictionary(); + else PgLogicals.Clear(); + PageListCheckOffHeader = null; // If this is a continuous section, then the only pagelist items we want are section type since // we are still on the same page. - CHECK IF ON SAME PAGE!!!! @@ -724,6 +728,7 @@ namespace Volian.Print.Library int eindx = token.IndexOf("}", bindx); val = token.Substring(bindx + 1, eindx - bindx - 1); } + if (val != null && val != "") PgLogicals.Add(pstok, val != null); //if (val == null || val == "") //val = " "; if (val == null) @@ -951,20 +956,38 @@ namespace Volian.Print.Library if (procConfig != null) { int indx = token.IndexOf("-"); - string val = procConfig.GetValue("PSI", token.Substring(4, token.Length - 5)); - plstr = plstr.Replace(token, val); - //svgGroup.Add(PageItemToSvgText(pageItem, pageItem.Token.Replace(token, val))); + int qindx = token.IndexOf("?", indx); + string val = null; + if (qindx == -1) + { + val = procConfig.GetValue("PSI", token.Substring(4, token.Length - 5)); + plstr = plstr.Replace(token, val); + svgGroup.Add(PageItemToSvgText(pageItem, plstr, MySection)); + } + else + { + string pstok = token.Substring(indx + 1, qindx - indx - 1); + plstr = procConfig.GetValue("PSI", pstok); + // the first part of the string between the ? and ' ' is the other logical + // to see if it's on. If on, just use col and/or row as defined. Otherwise use + // value between = and |. + int sindx2 = token.IndexOf(" ", qindx); + string logcheck = token.Substring(qindx + 1, sindx2 - qindx - 1); + if (PgLogicals.ContainsKey(logcheck)) + { + int bindx = token.IndexOf("|", indx); + string newval = token.Substring(sindx2 + 1, bindx - sindx2 - 1); + float col = pageItem.Col ?? 0; + if (newval.ToUpper().Contains("COL")) + { + col = System.Convert.ToInt32(newval.Substring(4)); + } + svgGroup.Add(PageItemToSvgText(pageItem.Token, pageItem.Row ?? 0, col, pageItem.Justify ?? VEPROMS.CSLA.Library.E_Justify.PSLeft, pageItem.Font, plstr, MySection)); + plstr = ""; // clear so it doesn't get added twice, i.e. in the method that calls this. + } + } } } - //else if (token.Contains(@"{DRV:Lpi ")) - //{ - // int indx = token.IndexOf("{DRV:Lpi ") + 9; - // int endindx = token.IndexOf("}", indx); - // string str = token.Substring(indx, endindx - indx); - // curLPI = Convert.ToInt32(str) / 2; - // //PrevRow = (float)(pageItem.Row + rowAdj); - // PrevRow = (float)pageItem.Row; - //} else { if (plstr != "") @@ -1256,6 +1279,47 @@ namespace Volian.Print.Library if (svgText.Font.Underline && svgText.Text.EndsWith(" ")) svgText.Text = svgText.Text.Substring(0, svgText.Text.Length - 1) + "\xA0";// replace last space with a hardspace return svgText; } + private SvgPart PageItemToSvgText(string token, float row, float col, E_Justify just, VE_Font font, string text, SectionInfo MySection) + { + SvgText svgText = new SvgText(); + svgText.Text = text; + VEPROMS.CSLA.Library.E_Justify justify = just; + float colAdj16bit = 0; + if ((justify & VEPROMS.CSLA.Library.E_Justify.PSLeft) == VEPROMS.CSLA.Library.E_Justify.PSLeft) + svgText.Justify = SvgJustify.Left; + else if ((justify & VEPROMS.CSLA.Library.E_Justify.PSRight) == VEPROMS.CSLA.Library.E_Justify.PSRight) + svgText.Justify = SvgJustify.Right; + else + { + svgText.Justify = SvgJustify.Center; + if (((justify & VEPROMS.CSLA.Library.E_Justify.PSTrue) != VEPROMS.CSLA.Library.E_Justify.PSTrue) && + !MySection.ActiveFormat.PlantFormat.FormatData.SectData.StepSectionData.StepSectionLayoutData.PicaIgnoreFiveSixths) + { + // the default CPI for Proms is 12, in 16bit 12 is the default - if a font wasn't defined + // or when doing a positioning calculation 12 was used. So we need to make an adjustment + // to handle non-12 CPI (12CPI will just cancel out in the following calculation). + + // Take the difference between the width in Points of a character at 12CPI and a character + // at the defined font's CPI. Multiply that times the length of title and divide by two + // to find the half-way point. + colAdj16bit = (1 + text.Length) * ((72 / (float)font.CPI) - (72 / 12)) / 2; + } + } + float lcol = col; + + // the column may need adjusted based on the document styles PageWidth. This was done in + // the 16bit code and was needed here to get the printed output to match. + if (font.FontIsProportional() && svgText.Justify == SvgJustify.Center) + { + int dotsPerChar = (int)(2400 / (MySection.MyDocStyle.Layout.PageWidth / 6)); + lcol = (lcol * 25) / dotsPerChar; + } + svgText.Font = font.WindowsFont; + svgText.X = new SvgMeasurement((float)lcol - colAdj16bit, E_MeasurementUnits.PT); // new SvgMeasurement((float)(pageItem.Col ?? 0), E_MeasurementUnits.PT); + svgText.Y = new SvgMeasurement(row, E_MeasurementUnits.PT); + if (svgText.Font.Underline && svgText.Text.EndsWith(" ")) svgText.Text = svgText.Text.Substring(0, svgText.Text.Length - 1) + "\xA0";// replace last space with a hardspace + return svgText; + } private static List _MissingTokens = new List(); protected override string ReplacePageListToken(Match match) { diff --git a/PROMS/fmtxml/WST1all.xml b/PROMS/fmtxml/WST1all.xml index 9ed43587e9413d8d8adf202cbec04e22a611b86a..ad9de2781a87ff5df3470b66092fba79675aac6f 100644 GIT binary patch delta 803 zcmY+C%WD%+6vn@_j%k{7EKNeww3^97LVY!lv0AWVNYhqHlR#=|1hH147Ge@e>SJT$ zU!e7X6y3Q|5Ft9%Z zRSGw82}M+y^J92FMFRc3F&w8&ubbMw^uRw-o_D4NCz|EyCEViPI<9i3f>~4yb_F-s zQ5jcuP9eV>q=$-Z;;Pgf^4LvI$P$>c#OX!wf+QwJ$rmd0#u1@A;pF|kF{2n0MJbLb z+tVFRx)(a*%(C$!k5q7)?G$khwGK)jnGjLfvaA$XsR{G6wKqWhE}1DR;!HVj6?z60 zp;|I*)lUs?S5FC}(hQQwb+{YhVOnv{cWS=Sv}Ka?-J?vL?D}#iID8R*67yK#=rX*@ z3j!ZXgnL+cvzvDD*}9}D!<%u!kr`x}a`rz(VN!uFF=fzHBO?|yE2{72DOjR)g6Mi+FUXhV%qPQTLZM+ tQt4;QMUUG7`qpyLn|91p+h;8hvxT2UW;^arI7+R^|3 delta 144 zcmdmTiM3%T>xLuhlRqS}Y<4palb^oAosnnq0ynnF_griyFEHbqyrGL{vcp!L$t##7 zHs=I?OPVau7P9%)wh$%|V{*cNxy?s*nt(Z*3-*M87!I4Y_Rrv*{O*L%WUjMHlNC-# tOb$5CGUN=yktmpj_(iBnng|J4ce-&= z6isds$*xeai-N-J1^NO>z31NNo_prtpS5xzUHtUXeX~bSB8wH| zP=tawHc&v3&O0`wAV%SxaFKVgAOkK)+gsykVZq@>Gpb;8zsiv4#w` zm~+)NQ0{x(6vQW5aXaa_H{SLHN^xUcU;;WX&tiv1i&*DD1(V2|=sdRBP!3-km(W9- zN}GzKj;qmbhs$1Pgl@c}mJsc!OOn_apgT3)6oQ{-eG$60dCY21RHYCC?61@+({lf` zth4b9?^H0welqxmLX}nO9uiTs=&Yn!DG2wp{9Wd~CC|6SFZRu|a^YCp3Y zr@lX{bh+=Q;<$^(W1Unv3K}Or#$LTB`sp&~px@*P(`=YPoXxvtG=Ujl(JiyXU>upv JdGppR2LQ&}9uEKj diff --git a/PROMS/fmtxml/WSTBCKall.xml b/PROMS/fmtxml/WSTBCKall.xml index 65773ea9fa2f21ac4ccef6eec25424426072329f..104e8bbab1d3d99fba42b1b4cd294299b7c513a1 100644 GIT binary patch delta 823 zcma)(KWq|l6vy9rKt-TZ2(~>T9!P>iE5|_*1``QjG{FL)wk0VsO-qynLH_t}lR<}0 zCT}yr!BjU5&BYE)LxO{LabR$9aB{+EN=#}^jP>31T5)r_+A5TS1Z<}q#bIwPbg()3?tjsD_r z50)Sgw@BYGI&r~mWjweXjFXr$h-?CUIO5JKwT9D%=F=hyMvm&D zT-W-+N4%~sXHAm-JniM-GI`3wO;Biz9~+#PSb{!Doh)@~@&&l!aN#fOFcAXaN2fhE zB=@JGEO(h{Omkkf*Ky>uF^ED+c1OI5XA~cs#$={iA90^&gXFre9Vbn2-;pgs>C5>? z;SyY-G= zu%owP%QbQ6Euf|qLH>zG+VFhRk=-x|QuFM~Dz=+r`WdLgZOX`n$y7%=`mB8fH=7*p z`0Z$(v!J;m;M0f0(wXOP;<(XvNxxbVd?I!CWxg=I=VL+T}ZfdW-ZSb1&5)Vu~i zZ~c~Dd{}02``v_e;p3`C>h)qK?G%K_{$l@>G`q_WVegykKZ!c5|J=gWooyzFU%yW= Y=kWcHDBUSyr0-x=D9-L~;+?(FA29{vP5=M^ delta 71 zcmV-N0J#6gu>`LF1F*Iyli)T4vp6%}1_d+#F#tHT8#=9Wlh9kfv#PDW0+Zl^4wHat d7NfARMzvf4L=Bhv2>~d##0>!;2bYc*0XR^B9HIaK diff --git a/PROMS/fmtxml/WSTDCSall.xml b/PROMS/fmtxml/WSTDCSall.xml index 92e4ac172e4275bed9db599e93a71bc513627ee0..922f1c80e0e26e14fe2a045cc0eacb8f2fd818d0 100644 GIT binary patch delta 5896 zcmdT|U2IfE6rSPkZVUZk+3of&1?yHRG0~E}cmG2QY`5hnmUd~e&C-oBYl zyLWfy%y-V2?|gG+Z~p7}=Ur!}#X)1>b9_Xj*(;6{6f&#)5Ose7L07OdK%OEgvYqtd z|7S^n43YuTPe$`kef&KQvAPtTb!}&sN{T#3hH?HAI5tI&lSy)rbmOOfwB1H_;5tcs z)<+MLV`K`x?0F1a9=A6640XxJ_+*vD_>|-PQ=XTc3pz*c;Wf)mLhJSC6qsVxR)k5Q-czh6S3i4_@?Ws?s z$&j6@;o0Ce!r_XwlhA92V&aO-1_qcSTd^1|mnjG2HfBKM4%Y%q+K!N^MV|nyvgg$y zdl7KhW{ljX9MZ^wa!6Lett)SAK}5wr|u<9OwDTPz^~rdkHuYBRE}<&jw@$2OZ_+XPr%9L&TIapG4ZN1+R` zdUE!gq0CWLhf3RwDs6@`Q@%RXkWHu|GnAR~6`-74Ghj^iK3=u0CrP7N@5Yy{b5z^qpk1O# zgiCS@TRQ>QW#0^XrT4d5uammFY_IEs8{hfG+9K_WsoW#P1Q%fu4PX;u6VXLio6%G} zZH%W6L&FXp=G{Cx*x&TB6yu!#eHdnVDlC|-7xDrDFwN| zZ1fnOVS4lHhm);GXwmAul_Plzw&svLjyDDtC0`R8tZ{7ACa_ft;4%9ewrlLkV#DTS zU2*}p?Rj=g@5Y_)$Jbta8AGdad1%FuM*oRl4m+-1Ii5H?mgO0>#&8MZn3(QvA z>pD8SWZ9LlL5zPKFJ-b?*>c}coQ`L~7LapXtT{D?y0+3WI|Q_BbO#yE(B@bM?e;KClx96X~X7AZ87e*RqF1WmD z%wXwGZYFyndETqdHc*EgCmZrblj2EYw^)U2(0*;Fd*JlA2X35?t}3jc??$OTe02`N z=hJX&p`K57UyXLM=?eO5Gz*}Vux;qZu_&erU62$K*3LMnmvX>Cxc0*Uw^l7$M@p@8 z(`)Gn&0f5cp>d;+}qz%%pLkUoCV z(Zp^XgXlerfu{;r2x^Dj1wTb%#7yQdpNUtHu?IdqobqX*!n8GERF9~I)C+`giD?Y^ zSbNv9fw?bS-APQsPR^bH=|ajg7BM+U;XUpMz7BGs&`V_)znjF@A^d&{M-FIrS5R-( z{rR^PCUWmQ9`GSM`_t)K43!n!0{u6V z0(GpC)5%TY%KX@pnHehOmThJlc&#yJe)y2avs1q>E;Epms&HcA1qfVrRHY{he5Aexb2oCdey?c?Gj0)Pk8HE)8q6i5hAnFn0>hEoQVW zPC5d!i=VQG`s~Ewrg{_0Zk=tx%BrG>pxhB0%kH~3)BGsWW1?j$(f^6WaUy;8kZzI; zB$DuiDl(*k!XbrX#R-)tgi9o>NgT2!{K%>lWD~4G$z!@-TesM0BTNNz&@}o;$pa)) zZrVXr*N!wl?gG3KI)E%?hhG}sZEIi-HSiavf9<*T>*&YJLrYkL>nQ9GxpKdC(Z83x Tgq*t*qdn46Jjf{s)erOt+FCC>>(*Dv!EWr=%t4U z^M{5aVu>EC7P?Hh5hYzr#D_?Vpexlwm#5YqLa2xSb7pqgSoWWDzWL_+zw>`Hi>J)5 z|C(;OOmscCO&6%F-87w~FzWC?w$%f7%po{qZDIRW5|K!NG>~=@CEa8b)*f8aMWJvj*=r}KiN(8kYU6R zkRh^<9D@#Poe(0`5DYY6Z?A2H^pg=}9){cIYFY~?3nI+ZYTc89-6G5dx@*F}z6u*y zBVN0>VlAmL6lFYF4Xps0#dSJ#ohS+OXZ5<#&|zwge69Cr;_GH!TX|J@?c{YUuf4oq zkW@fNnHyxM43fVXmKKPtuTX`!elm}lcZOBIwF35md}(by>lejIjNr8s=W+v5`3Gnyr3=@KcS2{Gi}z+}R+MhR^9BPupv4jg+2V1t5ZCyxYrVOKNA4E>of7tGlVOo=cc;Rd5;CNOZ^cAmzv2`ZxOnK{RZFI6xgw072w!Ia# z;n^!opl`7ow$I