Esempio n. 1
0
 /// <summary>
 /// Represents an Emoji.
 /// </summary>
 /// <param name="Document">Markdown document.</param>
 /// <param name="Emoji">Emoji reference.</param>
 /// <param name="Level">Level (number of colons used to define the emoji)</param>
 public EmojiReference(MarkdownDocument Document, EmojiInfo Emoji, int Level)
     : base(Document)
 {
     this.emoji     = Emoji;
     this.level     = Level;
     this.delimiter = Level == 1 ? ":" : new string(':', Level);
 }
Esempio n. 2
0
    public static void InitFaceConfig(string atlasName, string atlasData, EmojiAtlasInfo atlasInfo)
    {
        Dictionary <string, EmojiInfo> atlasDatas = null;

        if (atlasDataDic.TryGetValue(atlasName, out atlasDatas) == false)
        {
            atlasDatas = new Dictionary <string, EmojiInfo>();
            atlasDataDic[atlasName] = atlasDatas;
            atlasInfoDic[atlasName] = atlasInfo;

            var   lineList  = atlasData.Split('\n');
            var   firstLine = lineList[0].Split(',');
            float width     = float.Parse(firstLine[0]);
            float height    = float.Parse(firstLine[1]);

            for (int i = 1, count = lineList.Length; i < count; i++)
            {
                var line      = lineList[i];
                var rowValues = line.Split(',');
                if (rowValues.Length >= 5)
                {
                    string key = rowValues[0];

                    EmojiInfo info = new EmojiInfo();
                    info.x      = float.Parse(rowValues[1]) / width;
                    info.y      = (height - float.Parse(rowValues[2])) / height;//ngui打包的图集,(0,0)点在左上角,uv的(0,0)点应该在左下角
                    info.width  = float.Parse(rowValues[3]) / width;
                    info.height = float.Parse(rowValues[4]) / height;

                    atlasDatas[key] = info;
                }
            }
        }
    }
Esempio n. 3
0
 /// <summary>
 /// Generates HTML for a given Emoji.
 /// </summary>
 /// <param name="Output">Output</param>
 /// <param name="Emoji">Emoji</param>
 /// <param name="EmbedImage">If image should be embedded into the generated HTML, using the data URI scheme.</param>
 public void GenerateHTML(StringBuilder Output, EmojiInfo Emoji, bool EmbedImage)
 {
     Output.Append("<img alt=\":");
     Output.Append(Encode(Emoji.ShortName));
     Output.Append(":\" title=\"");
     Output.Append(Encode(Emoji.Description));
     Output.Append("\" width=\"");
     Output.Append(this.width.ToString());
     Output.Append("\" height=\"");
     Output.Append(this.height.ToString());
     Output.Append("\" src=\"");
     Output.Append(Encode(this.GetUrl(Emoji, EmbedImage)));
     Output.Append("\"/>");
 }
Esempio n. 4
0
        /// <summary>
        /// Gets the local file name for a given emoji.
        /// </summary>
        /// <param name="Emoji">Emoji</param>
        /// <returns>Local file name.</returns>
        public string GetLocalFileName(EmojiInfo Emoji)
        {
            StringBuilder Result   = new StringBuilder();
            string        FileName = Emoji.FileName;

            Result.Append("Graphics");
            Result.Append(Path.DirectorySeparatorChar);
            Result.Append("Emoji1");
            Result.Append(Path.DirectorySeparatorChar);

            switch (this.sourceFileType)
            {
            case Emoji1SourceFileType.Png64:
                Result.Append("png");
                Result.Append(Path.DirectorySeparatorChar);
                Result.Append("64x64");
                break;

            case Emoji1SourceFileType.Png128:
                Result.Append("png");
                Result.Append(Path.DirectorySeparatorChar);
                Result.Append("128x128");
                break;

            case Emoji1SourceFileType.Png512:
                Result.Append("png");
                Result.Append(Path.DirectorySeparatorChar);
                Result.Append("512x512");
                break;

            case Emoji1SourceFileType.Svg:
                Result.Append("svg");
                if (FileName.EndsWith(".png"))
                {
                    FileName = FileName.Substring(0, FileName.Length - 3) + "svg";
                }
                break;
            }

            Result.Append(Path.DirectorySeparatorChar);
            Result.Append(FileName);

            return(Result.ToString());
        }
Esempio n. 5
0
        /// <summary>
        /// Gets the local file name for a given emoji.
        /// </summary>
        /// <param name="Emoji">Emoji</param>
        /// <returns>Local file name.</returns>
        public string GetFileName(EmojiInfo Emoji)
        {
            switch (this.sourceFileType)
            {
            case Emoji1SourceFileType.Png64: return(Path.Combine(this.programDataFolder, "Emoji1", "png", "64x64", Emoji.FileName));

            case Emoji1SourceFileType.Png128: return(Path.Combine(this.programDataFolder, "Emoji1", "png", "128x128", Emoji.FileName));

            case Emoji1SourceFileType.Png512: return(Path.Combine(this.programDataFolder, "Emoji1", "png", "512x512", Emoji.FileName));

            case Emoji1SourceFileType.Svg:
            default:
                string s = Emoji.FileName;
                if (s.EndsWith(".png"))
                {
                    s = s.Substring(0, s.Length - 3) + "svg";
                }

                return(Path.Combine(this.programDataFolder, "Emoji1", "svg", s));
            }
        }
Esempio n. 6
0
    public void SetEmojiItem(EmojiInfo info)
    {
        if (m_installItemList.Count < MAX_EMOJI_COUNT)
        {
            int depth = 0;
            for (int i = 0; i < m_installItemList.Count; i++)
            {
                depth = Mathf.Max(depth, m_installItemList[i].GetIcon.depth);
            }

            PhotoStudioEmojiItem item = m_emojiItemList[m_getItemCount];
            m_getItemCount = (m_getItemCount + 1).Equals(MAX_EMOJI_COUNT) ? 0 : m_getItemCount + 1;

            m_installItemList.Add(item);

            item.ActiveItem(info, depth + 1);

            m_workTimeline.AddBeforeTimeline(new PhotoStudioWorkTimeline.Timeline(PHOTOSTUDIO_WORK_TYPE.TYPE_ADD, item));
            m_workTimeline.ReleaseAfterTimeline();

            m_uiWindow.CloseEmojiPopup();
        }
    }
Esempio n. 7
0
        /// <summary>
        /// Gets an URL for the emoji.
        /// </summary>
        /// <param name="Emoji">Emoji</param>
        /// <param name="Embed">If emoji should be embedded.</param>
        /// <returns>URL</returns>
        public string GetUrl(EmojiInfo Emoji, bool Embed)
        {
            if (Embed || string.IsNullOrEmpty(this.imageUrl))
            {
                StringBuilder Output = new StringBuilder();

                Output.Append("data:image/");

                if (this.sourceFileType == Emoji1SourceFileType.Svg)
                {
                    Output.Append("svg+xml");
                }
                else
                {
                    Output.Append("png");
                }

                Output.Append(";base64,");

                string FileName = this.GetFileName(Emoji);
                byte[] Data     = File.ReadAllBytes(FileName);

                Output.Append(Convert.ToBase64String(Data));

                return(Output.ToString());
            }
            else
            {
                string s = Emoji.FileName;
                if (this.sourceFileType == Emoji1SourceFileType.Svg && s.EndsWith(".png"))
                {
                    s = s.Substring(0, s.Length - 3) + "svg";
                }

                return(this.imageUrl.Replace("%FILENAME%", s));
            }
        }
Esempio n. 8
0
 /// <summary>
 /// Gets the image source of an emoji.
 /// </summary>
 /// <param name="Emoji">Emoji</param>
 /// <param name="Url">URL to emoji.</param>
 /// <param name="Width">Width of emoji.</param>
 /// <param name="Height">Height of emoji.</param>
 public void GetImageSource(EmojiInfo Emoji, out string Url, out int Width, out int Height)
 {
     Url    = this.GetUrl(Emoji, false);
     Width  = this.width;
     Height = this.height;
 }
Esempio n. 9
0
        /// <summary>
        /// If the emoji is supported by the emoji source.
        /// </summary>
        /// <param name="Emoji">Emoji</param>
        /// <returns>If emoji is supported.</returns>
        public bool EmojiSupported(EmojiInfo Emoji)
        {
            string FileName = this.GetFileName(Emoji);

            return(File.Exists(FileName));
        }
Esempio n. 10
0
 /// <summary>
 /// Represents an Emoji.
 /// </summary>
 /// <param name="Document">Markdown document.</param>
 /// <param name="Emoji">Emoji reference.</param>
 public EmojiReference(MarkdownDocument Document, EmojiInfo Emoji)
     : this(Document, Emoji, 1)
 {
 }
Esempio n. 11
0
        public override void SetVerticesDirty()
        {
            originText = m_Text;
            MatchCollection collections = TextRegex.Matches(originText);

            _GraphicItemModels.Clear();
            _TextLinkModels.Clear();
            int last_index = 0;

            if (stringBuilder == null)
            {
                stringBuilder = new StringBuilder();
            }
            stringBuilder.Length = 0;

            for (var i = 0; i < collections.Count; i++)
            {
                Match  match       = collections[i];
                int    match_index = match.Index;
                string type        = match.Groups[1].Value;
                if (type == EMOTIONTAG)
                {
                    stringBuilder.Append(originText.Substring(last_index, match_index - last_index));
                    var    start_index = stringBuilder.Length;
                    string quad        = StringUtility.Format(TEXTQUAD, match.Groups[2].Value, (int)(fontSize), (GraphicScale));
                    stringBuilder.Append(quad);
                    UIEmotionTextModel model = new UIEmotionTextModel
                    {
                        TextIndex  = start_index,
                        SpriteName = match.Groups[2].Value
                    };
                    EmojiInfo emojiInfo = EmojiInfos[model.SpriteName];
                    model.X    = emojiInfo.x;
                    model.Y    = emojiInfo.y;
                    model.Size = emojiInfo.size;
                    _GraphicItemModels.Add(model);
                }
                else if (type == LINKTAG)
                {
                    string seg = originText.Substring(last_index, match_index - last_index);
                    stringBuilder.Append(seg);
                    UILinkTextModel linkModel = new UILinkTextModel();
                    string          inner_txt;
                    string          color_text;
                    MatchCollection collections_con = LinkRegex.Matches(match.Groups[2].Value);
                    if (collections_con.Count == 1 && collections_con[0].Groups.Count == 3)
                    {
                        color_text = collections_con[0].Groups[1].Value;
                        inner_txt  = collections_con[0].Groups[2].Value;
                    }
                    else
                    {
                        color_text = "#0066cc";
                        inner_txt  = match.Groups[2].Value;
                    }

                    stringBuilder.AppendFormat("<color={0}>", color_text);
                    linkModel.StartIndex = stringBuilder.Length;
                    stringBuilder.AppendFormat(inner_txt);
                    linkModel.EndIndex = stringBuilder.Length - 1;
                    stringBuilder.Append("</color>");
                    _TextLinkModels.Add(linkModel);
                }
                last_index = match_index + match.Value.Length;
            }
            stringBuilder.Append(originText.Substring(last_index, originText.Length - last_index));
            buildText = stringBuilder.ToString();
            base.SetVerticesDirty();
        }
Esempio n. 12
0
 /// <summary>
 /// Represents an Emoji.
 /// </summary>
 /// <param name="Document">Markdown document.</param>
 /// <param name="Emoji">Emoji reference.</param>
 public EmojiReference(MarkdownDocument Document, EmojiInfo Emoji)
     : base(Document)
 {
     this.emoji = Emoji;
 }
Esempio n. 13
0
        /// <summary>
        /// If the emoji is supported by the emoji source.
        /// </summary>
        /// <param name="Emoji">Emoji</param>
        /// <returns>If emoji is supported.</returns>
        public bool EmojiSupported(EmojiInfo Emoji)
        {
            string LocalFileName = this.GetLocalFileName(Emoji);

            return(this.fileexists(LocalFileName));
        }
Esempio n. 14
0
 /// <summary>
 /// Gets the image source of an emoji.
 /// </summary>
 /// <param name="Emoji">Emoji</param>
 /// <param name="Level">Level (number of colons used to define the emoji)</param>
 /// <param name="Url">URL to emoji.</param>
 /// <param name="Width">Width of emoji.</param>
 /// <param name="Height">Height of emoji.</param>
 public void GetImageSource(EmojiInfo Emoji, int Level, out string Url, out int Width, out int Height)
 {
     Url    = this.GetUrl(Emoji, false);
     Width  = this.CalcSize(this.width, Level);
     Height = this.CalcSize(this.height, Level);
 }
Esempio n. 15
0
 /// <summary>
 /// Gets the image source of an emoji.
 /// </summary>
 /// <param name="Emoji">Emoji</param>
 /// <param name="Url">URL to emoji.</param>
 /// <param name="Width">Width of emoji.</param>
 /// <param name="Height">Height of emoji.</param>
 public void GetImageSource(EmojiInfo Emoji, out string Url, out int Width, out int Height)
 {
     this.GetImageSource(Emoji, 1, out Url, out Width, out Height);
 }
Esempio n. 16
0
 /// <summary>
 /// Generates HTML for a given Emoji.
 /// </summary>
 /// <param name="Output">Output</param>
 /// <param name="Emoji">Emoji</param>
 /// <param name="EmbedImage">If image should be embedded into the generated HTML, using the data URI scheme.</param>
 public void GenerateHTML(StringBuilder Output, EmojiInfo Emoji, bool EmbedImage)
 {
 }