コード例 #1
0
        public static bool ContainsEmoji(string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return(false);
            }
            TextElementEnumerator elementEnumerator = StringInfo.GetTextElementEnumerator(str);
            bool flag1 = elementEnumerator.MoveNext();

            while (flag1)
            {
                string textElement1 = elementEnumerator.GetTextElement();
                string hexString1   = BrowserNavigationService.ConvertToHexString(Encoding.BigEndianUnicode.GetBytes(textElement1));
                if (hexString1 == "")
                {
                    flag1 = elementEnumerator.MoveNext();
                }
                else
                {
                    bool flag2        = true;
                    bool flag3        = BrowserNavigationService._flagsPrefixes.Contains(hexString1);
                    int  elementIndex = elementEnumerator.ElementIndex;
                    if ((flag3 || BrowserNavigationService._modificatableSmiles.Contains(hexString1)) && elementEnumerator.MoveNext())
                    {
                        string textElement2 = elementEnumerator.GetTextElement();
                        string hexString2   = BrowserNavigationService.ConvertToHexString(Encoding.BigEndianUnicode.GetBytes(textElement2));
                        if (hexString2 == "" && elementEnumerator.MoveNext())
                        {
                            textElement2 = elementEnumerator.GetTextElement();
                            hexString2   = BrowserNavigationService.ConvertToHexString(Encoding.BigEndianUnicode.GetBytes(textElement2));
                        }
                        if (hexString2 != "" && (flag3 || BrowserNavigationService._smilesModificators.Contains(hexString2)))
                        {
                            flag2         = false;
                            hexString1   += hexString2;
                            textElement1 += textElement2;
                        }
                        else
                        {
                            elementEnumerator.Reset();
                            elementEnumerator.MoveNext();
                            while (elementEnumerator.ElementIndex != elementIndex)
                            {
                                elementEnumerator.MoveNext();
                            }
                        }
                    }
                    if (flag2)
                    {
                        BrowserNavigationService.CheckRelationsSmiles(ref hexString1, ref elementEnumerator, ref textElement1);
                    }
                    if (Emoji.Dict.ContainsKey(hexString1))
                    {
                        return(true);
                    }
                    flag1 = elementEnumerator.MoveNext();
                }
            }
            return(false);
        }
コード例 #2
0
        private static void AddRawText(RichTextBox text_block, Paragraph par, string raw_text)
        {
            TextElementEnumerator elementEnumerator = StringInfo.GetTextElementEnumerator(raw_text);
            StringBuilder         stringBuilder     = new StringBuilder();
            bool flag1 = elementEnumerator.MoveNext();

            while (flag1)
            {
                string textElement1 = elementEnumerator.GetTextElement();
                string hexString1   = BrowserNavigationService.ConvertToHexString(Encoding.BigEndianUnicode.GetBytes(textElement1));
                if (hexString1 == "")
                {
                    flag1 = elementEnumerator.MoveNext();
                }
                else
                {
                    bool flag2        = true;
                    bool flag3        = BrowserNavigationService._flagsPrefixes.Contains(hexString1);
                    int  elementIndex = elementEnumerator.ElementIndex;
                    if ((flag3 || BrowserNavigationService._modificatableSmiles.Contains(hexString1)) && elementEnumerator.MoveNext())
                    {
                        string textElement2 = elementEnumerator.GetTextElement();
                        string hexString2   = BrowserNavigationService.ConvertToHexString(Encoding.BigEndianUnicode.GetBytes(textElement2));
                        if (hexString2 == "" && elementEnumerator.MoveNext())
                        {
                            textElement2 = elementEnumerator.GetTextElement();
                            hexString2   = BrowserNavigationService.ConvertToHexString(Encoding.BigEndianUnicode.GetBytes(textElement2));
                        }
                        if (hexString2 != "" && (flag3 || BrowserNavigationService._smilesModificators.Contains(hexString2)))
                        {
                            flag2         = false;
                            hexString1   += hexString2;
                            textElement1 += textElement2;
                        }
                        else
                        {
                            elementEnumerator.Reset();
                            elementEnumerator.MoveNext();
                            while (elementEnumerator.ElementIndex != elementIndex)
                            {
                                elementEnumerator.MoveNext();
                            }
                        }
                    }
                    if (flag2)
                    {
                        BrowserNavigationService.CheckRelationsSmiles(ref hexString1, ref elementEnumerator, ref textElement1);
                    }
                    string name;
                    Emoji.Dict.TryGetValue(hexString1, out name);
                    if (name != null)
                    {
                        string text = stringBuilder.ToString();
                        stringBuilder = stringBuilder.Clear();
                        if (text != string.Empty)
                        {
                            ((PresentationFrameworkCollection <Inline>)par.Inlines).Add((Inline)BrowserNavigationService.GetRunWithStyle(text, text_block));
                        }
                        ((PresentationFrameworkCollection <Inline>)par.Inlines).Add((Inline)BrowserNavigationService.GetImage(name));
                    }
                    else
                    {
                        stringBuilder = stringBuilder.Append(textElement1);
                    }
                    flag1 = elementEnumerator.MoveNext();
                }
            }
            string text1 = stringBuilder.ToString();

            if (!(text1 != string.Empty))
            {
                return;
            }
            ((PresentationFrameworkCollection <Inline>)par.Inlines).Add((Inline)BrowserNavigationService.GetRunWithStyle(text1, text_block));
        }