/// <summary> /// 依据组添加标签 /// </summary> /// <param name="ProcessInfo">GlobalProcessStruct结构值</param> /// <param name="ProcessGroup">决定需要参与的所有标签</param> /// <param name="Result">结果</param> private void AddTags(ref GlobalProcessStruct ProcessInfo, string[] ProcessGroup, ref string Result) { foreach (string strTagKey in ProcessGroup) { AddTag(strTagKey, ref Result, ProcessInfo); } }
/// <summary> /// 初始时决定最后要显示的文字 /// </summary> /// <param name="ProcessInfo">GlobalProcessStruct结构值</param> /// <returns></returns> private string DetermineShowText(ref GlobalProcessStruct ProcessInfo) { string strResult = ""; if (ProcessInfo.AsInsertCode) { if ((ProcessInfo.Mail && ProcessInfo.Show != "") || (ProcessInfo.Link && ProcessInfo.Show != "")) { strResult = ProcessInfo.Show; } else { strResult = ProcessInfo.MiniOrigText; } } else { if (ProcessInfo.StartWithResultText) { strResult = ProcessInfo.ResultText; } else { strResult = ProcessInfo.OriginalText; } } return(strResult); }
/// <summary> /// 处理手工标签 /// </summary> /// <param name="ProcessInfo">GlobalProcessStruct结构值</param> private void ProcessManualTags(ref GlobalProcessStruct ProcessInfo) { if (ProcessInfo.LowerTags) { ProcessInfo.Alignment = ProcessInfo.Alignment.ToLower().Replace("align_", ""); } else { ProcessInfo.Alignment = ProcessInfo.Alignment.ToUpper().Replace("align_", ""); } }
/// <summary> /// 处理全局信息 /// </summary> /// <param name="ProcessInfo">GlobalProcessStruct结构值</param> /// <returns>结果</returns> public string ProcessInformation(GlobalProcessStruct ProcessInfo) { //GlobalProcessStruct origProcessInfo = ProcessInfo; string strResult = DetermineShowText(ref ProcessInfo); string strLstProcResult = ""; //添加标签模板 AddTagTemplate(ProcessInfo.LowerTags); //决定需要参与的所有标签 string[] astrProcessGroup = DetermineProcessGroup(ProcessInfo); //处理手工标签 ProcessManualTags(ref ProcessInfo); if (!ProcessInfo.AsInsertCode || ProcessInfo.List == "")//无列表 { AddTags(ref ProcessInfo, astrProcessGroup, ref strResult); } else//列表 { StringBuilder sbLstProcResult = new StringBuilder(); foreach (string strLine in strResult.Replace(Environment.NewLine, "\r").Split(("\r" as string).ToCharArray())) { string strln = strLine; AddTags(ref ProcessInfo, astrProcessGroup, ref strln); sbLstProcResult.AppendLine(strln); } strLstProcResult = sbLstProcResult.ToString(); if (ProcessInfo.List.ToLower() == "blank") { AddTag("List", ref strLstProcResult, ProcessInfo); } else { AddTag("List1", ref strLstProcResult, ProcessInfo); } strResult = strLstProcResult; } return(strResult); }
/// <summary> /// 决定需要参与的所有标签 /// </summary> /// <param name="ProcessInfo">GlobalProcessStruct结构值</param> /// <returns></returns> private string[] DetermineProcessGroup(GlobalProcessStruct ProcessInfo) { List <string> retVal = new List <string>(); if (ProcessInfo.AsInsertCode) { if (ProcessInfo.ContainAbove) { //基础1 + 追加2 foreach (string var in DetermineGroupItems(1, ProcessInfo)) { retVal.Add(var); } foreach (string var in DetermineGroupItems(2, ProcessInfo)) { retVal.Add(var); } } else { //追加2 foreach (string var in DetermineGroupItems(2, ProcessInfo)) { retVal.Add(var); } } } else { //基础 foreach (string var in DetermineGroupItems(1, ProcessInfo)) { retVal.Add(var); } } return(retVal.ToArray()); }
/// <summary> /// 对文字添加标签 /// </summary> /// <param name="TagKey">标签名</param> /// <param name="Text">文字</param> /// <param name="ProcessInfo">GlobalProcessStruct结构值</param> private void AddTag(string TagKey, ref string Text, GlobalProcessStruct ProcessInfo) { switch (TagKey) { case "Bold": case "Italic": case "Underline": case "Scored": case "Fly": case "VerbatimFlash": case "Free": case "Picture": case "Flash": case "Code": case "Quote": case "Superscript": case "Subscript": case "QQ": case "EMule": case "Formatted": case "Mail": case "Link": case "List": case "ListItem": Text = string.Format(_dicTagTemplate[TagKey], Text); break; case "Size": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.Size, Text); break; case "Font": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.Font, Text); break; case "BackgroundColor": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.BackgroundColor, Text); break; case "Luminescence": case "Shadow": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.ColorName, Text); break; case "Alignment": case "Alignment1": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.Alignment, Text); break; case "Color": switch (ProcessInfo.ColorPattern) { case ColorPattern.Single: if (ProcessInfo.ColorCategories == "WIN") { Text = string.Format(_dicTagTemplate[TagKey], ColorTranslator.ToHtml(Color.FromArgb(Color.FromName(ProcessInfo.ColorName).ToArgb())), Text); } else { Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.ColorName, Text); } break; case ColorPattern.Dynamic: Text = AddDynamicColorTag(Text, ProcessInfo.ColorCategories, false); break; case ColorPattern.Rainbow: Text = AddRainbowColorTag(Text, false); break; case ColorPattern.Gray: Text = AddGrayColorTag(Text, false); break; } break; case "Underline,Color": switch (ProcessInfo.ColorPattern) { case ColorPattern.Dynamic: Text = AddDynamicColorTag(Text, ProcessInfo.ColorCategories, true); break; case ColorPattern.Rainbow: Text = AddRainbowColorTag(Text, true); break; case ColorPattern.Gray: Text = AddGrayColorTag(Text, true); break; } break; case "Mail1": case "Link1": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.MiniOrigText, Text); break; case "List1": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.List, Text); break; } }
/// <summary> /// 决定基础 或 追加组中需要参与标签的项 /// </summary> /// <param name="GroupID">1或2</param> /// <param name="ProcessInfo">GlobalProcessStruct结构值</param> /// <returns></returns> private string[] DetermineGroupItems(int GroupID, GlobalProcessStruct ProcessInfo) { List <string> retVal = new List <string>(); //基础部分 if (GroupID == 1) { //斜体与字体颜色设置必须最先处理 if (ProcessInfo.Underline && ProcessInfo.ColorPattern != ColorPattern.None && ProcessInfo.ColorPattern != ColorPattern.Single) { switch (ProcessInfo.ColorPattern) { case ColorPattern.Dynamic: case ColorPattern.Rainbow: case ColorPattern.Gray: retVal.Add("Underline,Color"); break; } } else { switch (ProcessInfo.ColorPattern) { case ColorPattern.Single: if (ProcessInfo.Color.ToArgb() != Color.Black.ToArgb()) { retVal.Add("Color"); } break; case ColorPattern.Dynamic: case ColorPattern.Rainbow: case ColorPattern.Gray: retVal.Add("Color"); break; } if (ProcessInfo.Underline) { retVal.Add("Underline"); } } if (ProcessInfo.Bold) { retVal.Add("Bold"); } if (ProcessInfo.Italic) { retVal.Add("Italic"); } if (ProcessInfo.Scored) { retVal.Add("Scored"); } if (ProcessInfo.Fly) { retVal.Add("Fly"); } if (ProcessInfo.Luminescence) { retVal.Add("Luminescence"); } if (ProcessInfo.Shadow) { retVal.Add("Shadow"); } if (ProcessInfo.VerbatimFlash) { retVal.Add("VerbatimFlash"); } if (ProcessInfo.Free) { retVal.Add("Free"); } if (ProcessInfo.Alignment != "") { if (ProcessInfo.Alignment.ToLower().StartsWith("align_")) { retVal.Add("Alignment"); } else { retVal.Add("Alignment1"); } } if (ProcessInfo.Size != "") { retVal.Add("Size"); } if (ProcessInfo.Font != "") { retVal.Add("Font"); } if (ProcessInfo.BackgroundColor.ToLower() != "white") { retVal.Add("BackgroundColor"); } } //追加部分 if (GroupID == 2) { if (ProcessInfo.Mail && ProcessInfo.Show == "") { retVal.Add("Mail"); } if (ProcessInfo.Mail && ProcessInfo.Show != "") { retVal.Add("Mail1"); } if (ProcessInfo.Link && ProcessInfo.Show == "") { retVal.Add("Link"); } if (ProcessInfo.Link && ProcessInfo.Show != "") { retVal.Add("Link1"); } if (ProcessInfo.Picture) { retVal.Add("Picture"); } if (ProcessInfo.Flash) { retVal.Add("Flash"); } if (ProcessInfo.Code) { retVal.Add("Code"); } if (ProcessInfo.Quote) { retVal.Add("Quote"); } if (ProcessInfo.Superscript) { retVal.Add("Superscript"); } if (ProcessInfo.Subscript) { retVal.Add("Subscript"); } if (ProcessInfo.EMule) { retVal.Add("EMule"); } if (ProcessInfo.QQ) { retVal.Add("QQ"); } if (ProcessInfo.Formatted) { retVal.Add("Formatted"); } //列表必须放在最后! if (ProcessInfo.List != "") { retVal.Add("ListItem"); } } return(retVal.ToArray()); }
/// <summary> /// 初始时决定最后要显示的文字 /// </summary> /// <param name="ProcessInfo">GlobalProcessStruct结构值</param> /// <returns></returns> private string DetermineShowText(ref GlobalProcessStruct ProcessInfo) { string strResult = ""; if (ProcessInfo.AsInsertCode) { if ((ProcessInfo.Mail && ProcessInfo.Show != "") || (ProcessInfo.Link && ProcessInfo.Show != "")) strResult = ProcessInfo.Show; else strResult = ProcessInfo.MiniOrigText; } else { if (ProcessInfo.StartWithResultText) strResult = ProcessInfo.ResultText; else strResult = ProcessInfo.OriginalText; } return strResult; }
/// <summary> /// 处理全局信息 /// </summary> /// <param name="ProcessInfo">GlobalProcessStruct结构值</param> /// <returns>结果</returns> public string ProcessInformation(GlobalProcessStruct ProcessInfo) { //GlobalProcessStruct origProcessInfo = ProcessInfo; string strResult = DetermineShowText(ref ProcessInfo); string strLstProcResult = ""; //添加标签模板 AddTagTemplate(ProcessInfo.LowerTags); //决定需要参与的所有标签 string[] astrProcessGroup = DetermineProcessGroup(ProcessInfo); //处理手工标签 ProcessManualTags(ref ProcessInfo); if (!ProcessInfo.AsInsertCode || ProcessInfo.List == "")//无列表 { AddTags(ref ProcessInfo, astrProcessGroup, ref strResult); } else//列表 { StringBuilder sbLstProcResult = new StringBuilder(); foreach (string strLine in strResult.Replace(Environment.NewLine, "\r").Split(("\r" as string).ToCharArray())) { string strln = strLine; AddTags(ref ProcessInfo, astrProcessGroup, ref strln); sbLstProcResult.AppendLine(strln); } strLstProcResult = sbLstProcResult.ToString(); if (ProcessInfo.List.ToLower() == "blank") AddTag("List", ref strLstProcResult, ProcessInfo); else AddTag("List1", ref strLstProcResult, ProcessInfo); strResult = strLstProcResult; } return strResult; }
/// <summary> /// 对文字添加标签 /// </summary> /// <param name="TagKey">标签名</param> /// <param name="Text">文字</param> /// <param name="ProcessInfo">GlobalProcessStruct结构值</param> private void AddTag(string TagKey, ref string Text, GlobalProcessStruct ProcessInfo) { switch (TagKey) { case "Bold": case "Italic": case "Underline": case "Scored": case "Fly": case "VerbatimFlash": case "Free": case "Picture": case "Flash": case "Code": case "Quote": case "Superscript": case "Subscript": case "QQ": case "EMule": case "Formatted": case "Mail": case "Link": case "List": case "ListItem": Text = string.Format(_dicTagTemplate[TagKey], Text); break; case "Size": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.Size, Text); break; case "Font": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.Font, Text); break; case "BackgroundColor": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.BackgroundColor, Text); break; case "Luminescence": case "Shadow": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.ColorName, Text); break; case "Alignment": case "Alignment1": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.Alignment, Text); break; case "Color": switch (ProcessInfo.ColorPattern) { case ColorPattern.Single: if (ProcessInfo.ColorCategories == "WIN") Text = string.Format(_dicTagTemplate[TagKey], ColorTranslator.ToHtml(Color.FromArgb(Color.FromName(ProcessInfo.ColorName).ToArgb())), Text); else Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.ColorName, Text); break; case ColorPattern.Dynamic: Text = AddDynamicColorTag(Text, ProcessInfo.ColorCategories, false); break; case ColorPattern.Rainbow: Text = AddRainbowColorTag(Text, false); break; case ColorPattern.Gray: Text = AddGrayColorTag(Text, false); break; } break; case "Underline,Color": switch (ProcessInfo.ColorPattern) { case ColorPattern.Dynamic: Text = AddDynamicColorTag(Text, ProcessInfo.ColorCategories, true); break; case ColorPattern.Rainbow: Text = AddRainbowColorTag(Text, true); break; case ColorPattern.Gray: Text = AddGrayColorTag(Text, true); break; } break; case "Mail1": case "Link1": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.MiniOrigText, Text); break; case "List1": Text = string.Format(_dicTagTemplate[TagKey], ProcessInfo.List, Text); break; } }
/// <summary> /// 决定需要参与的所有标签 /// </summary> /// <param name="ProcessInfo">GlobalProcessStruct结构值</param> /// <returns></returns> private string[] DetermineProcessGroup(GlobalProcessStruct ProcessInfo) { List<string> retVal = new List<string>(); if (ProcessInfo.AsInsertCode) { if (ProcessInfo.ContainAbove) { //基础1 + 追加2 foreach (string var in DetermineGroupItems(1, ProcessInfo)) { retVal.Add(var); } foreach (string var in DetermineGroupItems(2, ProcessInfo)) { retVal.Add(var); } } else { //追加2 foreach (string var in DetermineGroupItems(2, ProcessInfo)) { retVal.Add(var); } } } else { //基础 foreach (string var in DetermineGroupItems(1, ProcessInfo)) { retVal.Add(var); } } return retVal.ToArray(); }
/// <summary> /// 决定基础 或 追加组中需要参与标签的项 /// </summary> /// <param name="GroupID">1或2</param> /// <param name="ProcessInfo">GlobalProcessStruct结构值</param> /// <returns></returns> private string[] DetermineGroupItems(int GroupID, GlobalProcessStruct ProcessInfo) { List<string> retVal = new List<string>(); //基础部分 if (GroupID == 1) { //斜体与字体颜色设置必须最先处理 if (ProcessInfo.Underline && ProcessInfo.ColorPattern != ColorPattern.None && ProcessInfo.ColorPattern != ColorPattern.Single) { switch (ProcessInfo.ColorPattern) { case ColorPattern.Dynamic: case ColorPattern.Rainbow: case ColorPattern.Gray: retVal.Add("Underline,Color"); break; } } else { switch (ProcessInfo.ColorPattern) { case ColorPattern.Single: if (ProcessInfo.Color.ToArgb() != Color.Black.ToArgb()) retVal.Add("Color"); break; case ColorPattern.Dynamic: case ColorPattern.Rainbow: case ColorPattern.Gray: retVal.Add("Color"); break; } if (ProcessInfo.Underline) retVal.Add("Underline"); } if (ProcessInfo.Bold) retVal.Add("Bold"); if (ProcessInfo.Italic) retVal.Add("Italic"); if (ProcessInfo.Scored) retVal.Add("Scored"); if (ProcessInfo.Fly) retVal.Add("Fly"); if (ProcessInfo.Luminescence) retVal.Add("Luminescence"); if (ProcessInfo.Shadow) retVal.Add("Shadow"); if (ProcessInfo.VerbatimFlash) retVal.Add("VerbatimFlash"); if (ProcessInfo.Free) retVal.Add("Free"); if (ProcessInfo.Alignment != "") { if (ProcessInfo.Alignment.ToLower().StartsWith("align_")) retVal.Add("Alignment"); else retVal.Add("Alignment1"); } if (ProcessInfo.Size != "") retVal.Add("Size"); if (ProcessInfo.Font != "") retVal.Add("Font"); if (ProcessInfo.BackgroundColor.ToLower() != "white") retVal.Add("BackgroundColor"); } //追加部分 if (GroupID == 2) { if (ProcessInfo.Mail && ProcessInfo.Show == "") retVal.Add("Mail"); if (ProcessInfo.Mail && ProcessInfo.Show != "") retVal.Add("Mail1"); if (ProcessInfo.Link && ProcessInfo.Show == "") retVal.Add("Link"); if (ProcessInfo.Link && ProcessInfo.Show != "") retVal.Add("Link1"); if (ProcessInfo.Picture) retVal.Add("Picture"); if (ProcessInfo.Flash) retVal.Add("Flash"); if (ProcessInfo.Code) retVal.Add("Code"); if (ProcessInfo.Quote) retVal.Add("Quote"); if (ProcessInfo.Superscript) retVal.Add("Superscript"); if (ProcessInfo.Subscript) retVal.Add("Subscript"); if (ProcessInfo.EMule) retVal.Add("EMule"); if (ProcessInfo.QQ) retVal.Add("QQ"); if (ProcessInfo.Formatted) retVal.Add("Formatted"); //列表必须放在最后! if (ProcessInfo.List != "") retVal.Add("ListItem"); } return retVal.ToArray(); }