Added underline to the LBFontClass

Added logic to support using underbars to turn underlining on/off – only implemented in X/Y Plot RO’s for now
This commit is contained in:
John Jenko 2013-04-23 19:00:33 +00:00
parent 3dfb222834
commit 262a8c3ad3
2 changed files with 62 additions and 2 deletions

View File

@ -583,6 +583,11 @@ namespace LBWordLibrary
get { return (GetProperty("Name").ToString()); }
set { SetProperty("Name", value); }
}
public LBWdUnderline Underline
{
get { return (LBWdUnderline)GetProperty("Underline"); }
set { SetProperty("Underline", value); }
}
}
public enum LBWdInformation
{
@ -1251,4 +1256,25 @@ namespace LBWordLibrary
wdRelativeVerticalPositionInnerMarginArea = 6,
wdRelativeVerticalPositionOuterMarginArea = 7
}
public enum LBWdUnderline
{
wdUnderlineNone = 0,
wdUnderlineSingle = 1,
wdUnderlineWords = 2,
wdUnderlineDouble = 3,
wdUnderlineDotted = 4,
wdUnderlineThick = 6,
wdUnderlineDash = 7,
wdUnderlineDotDash = 9,
wdUnderlineDotDotDash = 10,
wdUnderlineWavy = 11,
wdUnderlineDottedHeavy = 20,
wdUnderlineDashHeavy = 23,
wdUnderlineDotDashHeavy = 25,
wdUnderlineDotDotDashHeavy = 26,
wdUnderlineWavyHeavy = 27,
wdUnderlineDashLong = 39,
wdUnderlineWavyDouble = 43,
wdUnderlineDashLongHeavy = 55
}
}

View File

@ -723,10 +723,9 @@ namespace VEPROMS.CSLA.Library
try
{
val = val.Replace("`", "\xB0");
//sel.Text = "";
// An X/Y Plot RO type might have text preceding the Plot Commands
int pstart = val.IndexOf("<<G"); // find the starting Plot Command
sel.Text = val.Substring(0, pstart); // replace the RO token with what's in front of the X/Y Plot
AddPrecedingText(sel, val.Substring(0, pstart));// replace the RO token with what's in front of the X/Y Plot
val = val.Substring(pstart); // set val to the start of the plot commands
//float width = 72 * Int32.Parse(vals[3], System.Globalization.NumberStyles.AllowHexSpecifier) / 12.0F;
//float height = 72 * lines / 6.0F;
@ -800,6 +799,41 @@ namespace VEPROMS.CSLA.Library
return fileName;
}
}
public static void AddPrecedingText(LBSelection sel, string val)
{
if (val.IndexOf("_") == -1) // Is some of the text underlined?
{
sel.Text = val; // nothing is underlined, use text as is
return;
}
// Back in the DOS days, an underbar was used to toggle underlining on/off
// Spit the val text on the underbar characters
string[] parts = val.Split("_".ToCharArray());
foreach (string part in parts)
{
// If there is a carrage return, and underline is turned on, then turn off the underline
if (sel.Font.Underline != LBWdUnderline.wdUnderlineNone && part.Contains("\r"))
{
int idx = part.IndexOf("\r");
string part1 = part.Substring(0, idx);
string part2 = part.Substring(idx);
sel.TypeText(part1);
sel.Font.Underline = LBWdUnderline.wdUnderlineNone;
sel.TypeText(part2);
}
else // put out each part of the split text and toggle the underline on/off
{
sel.TypeText(part);
if (sel.Font.Underline == LBWdUnderline.wdUnderlineNone)
sel.Font.Underline = LBWdUnderline.wdUnderlineSingle;
else
sel.Font.Underline = LBWdUnderline.wdUnderlineNone;
}
}
// We are done processing the text in val, if underline is on, turn it off
if (sel.Font.Underline != LBWdUnderline.wdUnderlineNone)
sel.Font.Underline = LBWdUnderline.wdUnderlineNone;
}
public static void AdjustMargins(DocStyle myDocStyle, LBDocumentClass myDoc, bool printingMode)
{