BGE: Apply bold/underline next word for special cases

This commit is contained in:
Kathy Ruffing 2014-05-07 13:28:34 +00:00
parent 800adeb883
commit 091487cf7a

View File

@ -51,6 +51,86 @@ namespace DataLoader
if (tok == -1 && Textm[Textm.Length - 1] == '\x5')
tok = Textm.Length - 1;
// if this is bge, handle some special cases for bold/underline next that were not
// getting processed from regular expression, as defined in comments for each case below:
if (fmt.PlantFormat.FormatData.PrintData.SpecialCaseCalvert)
{
// get step type, and check its format for bold. BGE had data that was high5 (bolded step)
// with the bold of the next word character, but it was redundant
int stptype = Convert.ToInt32(StepType) + 1;
bool isbold = (stptype == 41); // This is hardcoded for BGE only
if (isbold && Textm.Contains("\x13")) Textm = Textm.Replace("\x13", "");
// BGE was not migrating a few styles on next word correctly because of the other
// characters after the hex, i.e. '[', '(', etc (see comments on specific cases).
// The regular expression that handled replacing the 'style next word' hex flag was
// not working with those. Handle those special cases here.
int indxH = -1;
int indxHE = -1;
if (Textm.Contains("\x13"))
{
if (Textm.Contains("\x13[")) // bold before '['
{
indxH = Textm.IndexOf("\x13[");
indxHE = Textm.IndexOf("]", indxH);
Textm = Textm.Insert(indxHE+1, @"\b0 ");
Textm = Textm.Replace("\x13[", @"\b [");
}
if (Textm.Contains("\x13(")) // bold before '('
{
indxH = Textm.IndexOf("\x13(");
indxHE = Textm.IndexOf(")", indxH);
Textm = Textm.Insert(indxHE+1, @"\b0 ");
Textm = Textm.Replace("\x13(", @"\b (");
}
if (Textm.Contains("\x13{")) // bold before '{'
{
indxH = Textm.IndexOf("\x13{");
indxHE = Textm.IndexOf(" ", indxH);
Textm = Textm.Insert(indxHE + 1, @"\b0 ");
Textm = Textm.Replace("\x13{", @"\b {");
}
if (Textm.Contains("\x13}")) // bold before '}'
{
indxH = Textm.IndexOf("\x13}");
indxHE = Textm.IndexOf(" ", indxH);
if (indxHE == -1) // add the bold off to end of string (no space needed at end)
Textm = Textm + @"\b0";
else
Textm = Textm.Insert(indxHE + 1, @"\b0 ");
Textm = Textm.Replace("\x13}", @"\b }");
}
if (Textm.Contains("\x13\xa0")) // bold before hardspace
{
indxH = Textm.IndexOf("\x13\xa0");
indxHE = Textm.IndexOf(" ", indxH);
if (indxHE == -1) // add the bold off to end of string (no space needed at end)
Textm = Textm + @"\b0";
else
Textm = Textm.Insert(indxHE + 1, @"\b0 ");
Textm = Textm.Replace("\x13\xa0", "\\b \xa0");
}
if (Textm.Contains("\x13 ")) // bold before a space, switch bold & space
Textm = Textm.Replace("\x13 ", " \x13");
}
// BGE also had special cases for underline next word \x17
if (Textm.Contains("\x17\\b")) // before bold on
{
indxH = Textm.IndexOf("\x17\\b");
indxHE = Textm.IndexOf(@"\b0", indxH);
Textm = Textm.Insert(indxHE+1, @"\ulnone ");
Textm = Textm.Replace("\x17\\b", @"\ul\b");
}
if (Textm.Contains("\x17\x13")) // before bold next word token
{
indxH = Textm.IndexOf("\x17\x13");
indxHE = Textm.IndexOf(" ", indxH);
Textm = Textm.Insert(indxHE + 1, @"\ulnone ");
Textm = Textm.Replace("\x17\x13", "\\ul\x13");
}
}
if (tok < 0)
stptext = TextConvert.ConvertText(Textm, conv_caret);
else
@ -301,7 +381,7 @@ namespace DataLoader
// ChgBarMessageFromEdit flag, the data after the Multiple change id token was not used in
// 16bit, at least anywhere that could be found when running the program through the debugger.
if (fmt.PlantFormat.FormatData.ProcData.ChangeBarData.ChgBarMessageFromEdit &&
fmt.PlantFormat.FormatData.ProcData.ChangeBarData.MultipleChangeIds)
fmt.PlantFormat.FormatData.ProcData.ChangeBarData.ChangeIds)
{
if ((nxttok = tkstring.IndexOf("\x2")) > -1) // Multiple Change Ids
{
@ -309,7 +389,7 @@ namespace DataLoader
if (tmpchgid.Length > 0)
{
//Console.WriteLine("Multiple Change ID: {0}", tkstring.Substring(nxttok + 1));
ci.AddItem("Step", "MultipleChangeID", tkstring.Substring(nxttok + 1));
ci.AddItem("Step", "ChangeID", tkstring.Substring(nxttok + 1));
recdirty = true;
//recdirty |= AddContentDetail(content, STP_MULT_CHGID, tkstring.Substring(nxttok + 1));
}