diff --git a/PROMS/Formats/fmtall/BNPPalrall.xml b/PROMS/Formats/fmtall/BNPPalrall.xml index fe872695..b9366633 100644 Binary files a/PROMS/Formats/fmtall/BNPPalrall.xml and b/PROMS/Formats/fmtall/BNPPalrall.xml differ diff --git a/PROMS/VEPROMS User Interface/frmVersionsProperties.cs b/PROMS/VEPROMS User Interface/frmVersionsProperties.cs index 4de193d2..294408e9 100644 --- a/PROMS/VEPROMS User Interface/frmVersionsProperties.cs +++ b/PROMS/VEPROMS User Interface/frmVersionsProperties.cs @@ -1996,7 +1996,7 @@ namespace VEPROMS set { _otherNumber = value; IsDirty = true; } } private string _otherText; - [XmlAttribute("OyherText")] + [XmlAttribute("OyherText")] // 11/3/21: Typo that is in data. Don't fix unless writing code to fix data public string OtherText { get { return _otherText; } diff --git a/PROMS/VEPROMS.CSLA.Library/Format/PageStyles.cs b/PROMS/VEPROMS.CSLA.Library/Format/PageStyles.cs index 366a20eb..873cb6f0 100644 --- a/PROMS/VEPROMS.CSLA.Library/Format/PageStyles.cs +++ b/PROMS/VEPROMS.CSLA.Library/Format/PageStyles.cs @@ -161,8 +161,15 @@ namespace VEPROMS.CSLA.Library return (LazyLoad(ref _MaxWidthCurPage, "@MaxWidthCurPage")); } } + private LazyLoad _FontShrinkAftLen; // F2021-066 & 070 (text len before shrinking font) + public int? FontShrinkAftLen + { + get + { + return (LazyLoad(ref _FontShrinkAftLen, "@FontShrinkAftLen")); + } + } #endregion - #region Override ToString public override string ToString() { diff --git a/PROMS/Volian.Print.Library/VlnSvgPageHelper.cs b/PROMS/Volian.Print.Library/VlnSvgPageHelper.cs index ca11a466..d1b67595 100644 --- a/PROMS/Volian.Print.Library/VlnSvgPageHelper.cs +++ b/PROMS/Volian.Print.Library/VlnSvgPageHelper.cs @@ -2686,6 +2686,9 @@ i = 0; } } svgText.Font = pageItem.Font.WindowsFont; + // F2021-070 & 066 - shrink font size of page list items if format has amount + if (pageItem.FontShrinkAftLen != null && pageItem.FontShrinkAftLen > 0) + svgText.FontSize = ShrinkIt(text, svgText, (float)pageItem.FontShrinkAftLen); float row = (float)pageItem.Row < 0 ? -(float)pageItem.Row : (float)pageItem.Row; if ((justify & VEPROMS.CSLA.Library.E_Justify.PSTop) == VEPROMS.CSLA.Library.E_Justify.PSTop) row -= ((72 / 6) / 2); float lcol = pageItem.Col ?? 0; @@ -2705,6 +2708,35 @@ i = 0; Volian.Base.Library.BaselineMetaFile.WriteLine(" PL x {0} y {1} {2} {3} {4} \"{5}\"", svgText.X, svgText.Y, svgText.FontFamily, svgText.FontSize, svgText.SVGFontStyle, TextForBaseline.FixText(svgText.Text)); return svgText; } + // F2021-070 & 066 - shrink font size of page list items if format has amount. ShrinkIt compares size (width) of text with input font and + // will decrement font size by one until the text size is less than value from format file. + private static string ShrinkIt(string text, SvgText svgText, float fontShrinkAftLen) + { + int tmpi = 0; + using (var image = new System.Drawing.Bitmap(1, 1)) + { + using (var g = System.Drawing.Graphics.FromImage(image)) + { + try + { + // pageitem's font size did not have a 'set'. svgtext's fontsize is in format of 12PT, so get font size from that + // and decrement until it is less than format value + System.Drawing.SizeF mySize = g.MeasureString(text, svgText.Font); + while (mySize.Width > fontShrinkAftLen) + { + tmpi = Convert.ToInt32(svgText.FontSize.Substring(0, svgText.FontSize.IndexOf("PT"))); + tmpi = tmpi - 1; + svgText.FontSize = tmpi.ToString() + "PT"; + mySize = g.MeasureString(text, svgText.Font); + } + } + catch // don't reset if error occurred. + { + } + } + } + return svgText.FontSize; + } private SvgPart PageItemToSvgText(VEPROMS.CSLA.Library.PageItem pageItem, string text, float yOffset) { SvgText svgText = new SvgText();