Example #1
0
 /// <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);
     }
 }
Example #2
0
        /// <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);
        }
Example #3
0
 /// <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_", "");
     }
 }
Example #4
0
        /// <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);
        }
Example #5
0
        /// <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());
        }
Example #6
0
        /// <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;
            }
        }
Example #7
0
        /// <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="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="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();
        }
 /// <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_", "");
     }
 }