コード例 #1
0
 // Token: 0x06004682 RID: 18050 RVA: 0x00108E54 File Offset: 0x00107054
 private void renderSprite(global::dfMarkupToken token, Color32 color, Vector3 position, global::dfRenderData destination)
 {
     try
     {
         string value = token.GetAttribute(0).Value.Value;
         global::dfAtlas.ItemInfo itemInfo = this.SpriteAtlas[value];
         if (!(itemInfo == null))
         {
             global::dfSprite.RenderOptions options = new global::dfSprite.RenderOptions
             {
                 atlas         = this.SpriteAtlas,
                 color         = color,
                 fillAmount    = 1f,
                 offset        = position,
                 pixelsToUnits = base.PixelRatio,
                 size          = new Vector2((float)token.Width, (float)token.Height),
                 spriteInfo    = itemInfo
             };
             global::dfSprite.renderSprite(this.SpriteBuffer, options);
         }
     }
     finally
     {
     }
 }
コード例 #2
0
 // Token: 0x0600467F RID: 18047 RVA: 0x0010886C File Offset: 0x00106A6C
 private void renderLine(global::dfDynamicFont.LineRenderInfo line, Stack <Color32> colors, Vector3 position, global::dfRenderData destination)
 {
     position.x += (float)this.calculateLineAlignment(line);
     for (int i = line.startOffset; i <= line.endOffset; i++)
     {
         global::dfMarkupToken     dfMarkupToken = this.tokens[i];
         global::dfMarkupTokenType tokenType     = dfMarkupToken.TokenType;
         if (tokenType == global::dfMarkupTokenType.Text)
         {
             this.renderText(dfMarkupToken, colors.Peek(), position, destination);
         }
         else if (tokenType == global::dfMarkupTokenType.StartTag)
         {
             if (dfMarkupToken.Matches("sprite") && this.SpriteAtlas != null && this.SpriteBuffer != null)
             {
                 this.renderSprite(dfMarkupToken, colors.Peek(), position, this.SpriteBuffer);
             }
             else if (dfMarkupToken.Matches("color"))
             {
                 colors.Push(this.parseColor(dfMarkupToken));
             }
         }
         else if (tokenType == global::dfMarkupTokenType.EndTag && dfMarkupToken.Matches("color") && colors.Count > 1)
         {
             colors.Pop();
         }
         position.x += (float)dfMarkupToken.Width;
     }
 }
コード例 #3
0
 // Token: 0x060040E0 RID: 16608 RVA: 0x000EE198 File Offset: 0x000EC398
 private void calculateTokenRenderSize(global::dfMarkupToken token)
 {
     try
     {
         global::dfFont dfFont       = (global::dfFont)base.Font;
         int            num          = 0;
         char           previousChar = '\0';
         bool           flag         = token.TokenType == global::dfMarkupTokenType.Whitespace || token.TokenType == global::dfMarkupTokenType.Text;
         if (flag)
         {
             int i = 0;
             while (i < token.Length)
             {
                 char c = token[i];
                 if (c == '\t')
                 {
                     num += base.TabSize;
                 }
                 else
                 {
                     global::dfFont.GlyphDefinition glyph = dfFont.GetGlyph(c);
                     if (glyph != null)
                     {
                         if (i > 0)
                         {
                             num += dfFont.GetKerning(previousChar, c);
                             num += base.CharacterSpacing;
                         }
                         num += glyph.xadvance;
                     }
                 }
                 i++;
                 previousChar = c;
             }
         }
         else if (token.TokenType == global::dfMarkupTokenType.StartTag && token.Matches("sprite"))
         {
             if (token.AttributeCount < 1)
             {
                 throw new Exception("Missing sprite name in markup");
             }
             Texture texture    = dfFont.Texture;
             int     lineHeight = dfFont.LineHeight;
             string  value      = token.GetAttribute(0).Value.Value;
             global::dfAtlas.ItemInfo itemInfo = dfFont.atlas[value];
             if (itemInfo != null)
             {
                 float num2 = itemInfo.region.width * (float)texture.width / (itemInfo.region.height * (float)texture.height);
                 num = Mathf.CeilToInt((float)lineHeight * num2);
             }
         }
         token.Height = base.Font.LineHeight;
         token.Width  = num;
     }
     finally
     {
     }
 }
コード例 #4
0
    // Token: 0x0600432D RID: 17197 RVA: 0x000F8254 File Offset: 0x000F6454
    private global::dfMarkupToken parseTag()
    {
        if (this.Peek(0) != '[')
        {
            return(null);
        }
        char c = this.Peek(1);

        if (c == '/')
        {
            return(this.parseEndTag());
        }
        this.Advance(1);
        c = this.Peek(0);
        if (!char.IsLetterOrDigit(c))
        {
            return(null);
        }
        int startIndex = this.index;
        int num        = this.index;

        while (this.index < this.source.Length && char.IsLetterOrDigit(this.Advance(1)))
        {
            num++;
        }
        global::dfMarkupToken dfMarkupToken = global::dfMarkupToken.Obtain(this.source, global::dfMarkupTokenType.StartTag, startIndex, num);

        if (this.index < this.source.Length && this.Peek(0) != ']')
        {
            c = this.Peek(0);
            if (char.IsWhiteSpace(c))
            {
                this.parseWhitespace();
            }
            int startIndex2 = this.index;
            int num2        = this.index;
            if (this.Peek(0) == '"')
            {
                global::dfMarkupToken dfMarkupToken2 = this.parseQuotedString();
                dfMarkupToken.AddAttribute(dfMarkupToken2, dfMarkupToken2);
            }
            else
            {
                while (this.index < this.source.Length && this.Advance(1) != ']')
                {
                    num2++;
                }
                global::dfMarkupToken dfMarkupToken3 = global::dfMarkupToken.Obtain(this.source, global::dfMarkupTokenType.Text, startIndex2, num2);
                dfMarkupToken.AddAttribute(dfMarkupToken3, dfMarkupToken3);
            }
        }
        if (this.Peek(0) == ']')
        {
            this.Advance(1);
        }
        return(dfMarkupToken);
    }
コード例 #5
0
    // Token: 0x0600430D RID: 17165 RVA: 0x000F76D0 File Offset: 0x000F58D0
    internal void AddAttribute(global::dfMarkupToken key, global::dfMarkupToken value)
    {
        global::dfMarkupTokenAttribute dfMarkupTokenAttribute = global::dfMarkupTokenAttribute.Obtain(key, value);

        if (this.AttributeCount == 0)
        {
            this.startAttributeIndex = dfMarkupTokenAttribute.Index;
        }
        this.AttributeCount++;
    }
コード例 #6
0
    // Token: 0x06004314 RID: 17172 RVA: 0x000F7768 File Offset: 0x000F5968
    public static global::dfMarkupTokenAttribute Obtain(global::dfMarkupToken key, global::dfMarkupToken value)
    {
        if (global::dfMarkupTokenAttribute.poolIndex >= global::dfMarkupTokenAttribute.pool.Count - 1)
        {
            global::dfMarkupTokenAttribute.pool.Add(new global::dfMarkupTokenAttribute());
        }
        global::dfMarkupTokenAttribute dfMarkupTokenAttribute = global::dfMarkupTokenAttribute.pool[global::dfMarkupTokenAttribute.poolIndex];

        dfMarkupTokenAttribute.Index = global::dfMarkupTokenAttribute.poolIndex;
        dfMarkupTokenAttribute.Key   = key;
        dfMarkupTokenAttribute.Value = value;
        global::dfMarkupTokenAttribute.poolIndex++;
        return(dfMarkupTokenAttribute);
    }
コード例 #7
0
 // Token: 0x06004689 RID: 18057 RVA: 0x001093D8 File Offset: 0x001075D8
 private void calculateTokenRenderSize(global::dfMarkupToken token)
 {
     try
     {
         int  num  = 0;
         bool flag = token.TokenType == global::dfMarkupTokenType.Whitespace || token.TokenType == global::dfMarkupTokenType.Text;
         global::dfDynamicFont dfDynamicFont = (global::dfDynamicFont)base.Font;
         if (flag)
         {
             int             size  = Mathf.CeilToInt((float)dfDynamicFont.FontSize * base.TextScale);
             CharacterInfo[] array = dfDynamicFont.RequestCharacters(token.Value, size, 0);
             for (int i = 0; i < token.Length; i++)
             {
                 char c = token[i];
                 if (c == '\t')
                 {
                     num += base.TabSize;
                 }
                 else
                 {
                     CharacterInfo characterInfo = array[i];
                     num += ((c == ' ') ? Mathf.CeilToInt(characterInfo.width) : Mathf.CeilToInt(characterInfo.vert.x + characterInfo.vert.width));
                     if (i > 0)
                     {
                         num += Mathf.CeilToInt((float)base.CharacterSpacing * base.TextScale);
                     }
                 }
             }
             token.Height = base.Font.LineHeight;
             token.Width  = num;
         }
         else if (token.TokenType == global::dfMarkupTokenType.StartTag && token.Matches("sprite") && this.SpriteAtlas != null && token.AttributeCount == 1)
         {
             Texture2D texture = this.SpriteAtlas.Texture;
             float     num2    = (float)dfDynamicFont.Baseline * base.TextScale;
             string    value   = token.GetAttribute(0).Value.Value;
             global::dfAtlas.ItemInfo itemInfo = this.SpriteAtlas[value];
             if (itemInfo != null)
             {
                 float num3 = itemInfo.region.width * (float)texture.width / (itemInfo.region.height * (float)texture.height);
                 num = Mathf.CeilToInt(num2 * num3);
             }
             token.Height = Mathf.CeilToInt(num2);
             token.Width  = num;
         }
     }
     finally
     {
     }
 }
コード例 #8
0
 // Token: 0x06004317 RID: 17175 RVA: 0x000F7808 File Offset: 0x000F5A08
 private List <global::dfMarkupToken> tokenize(string source)
 {
     global::dfMarkupToken.Reset();
     global::dfMarkupTokenAttribute.Reset();
     this.tokens.Clear();
     this.source = source;
     this.index  = 0;
     while (this.index < source.Length)
     {
         char c = this.Peek(0);
         if (this.AtTagPosition())
         {
             global::dfMarkupToken dfMarkupToken = this.parseTag();
             if (dfMarkupToken != null)
             {
                 this.tokens.Add(dfMarkupToken);
             }
         }
         else
         {
             global::dfMarkupToken dfMarkupToken2 = null;
             if (char.IsWhiteSpace(c))
             {
                 if (c != '\r')
                 {
                     dfMarkupToken2 = this.parseWhitespace();
                 }
             }
             else
             {
                 dfMarkupToken2 = this.parseNonWhitespace();
             }
             if (dfMarkupToken2 == null)
             {
                 this.Advance(1);
             }
             else
             {
                 this.tokens.Add(dfMarkupToken2);
             }
         }
     }
     return(this.tokens);
 }
コード例 #9
0
 // Token: 0x060040D9 RID: 16601 RVA: 0x000EDAE0 File Offset: 0x000EBCE0
 private void renderSprite(global::dfMarkupToken token, Color32 color, Vector3 position, global::dfRenderData destination)
 {
     try
     {
         global::dfList <Vector3> vertices  = destination.Vertices;
         global::dfList <int>     triangles = destination.Triangles;
         global::dfList <Color32> colors    = destination.Colors;
         global::dfList <Vector2> uv        = destination.UV;
         global::dfFont           dfFont    = (global::dfFont)base.Font;
         string value = token.GetAttribute(0).Value.Value;
         global::dfAtlas.ItemInfo itemInfo = dfFont.Atlas[value];
         if (!(itemInfo == null))
         {
             float num   = (float)token.Height * base.TextScale * base.PixelRatio;
             float num2  = (float)token.Width * base.TextScale * base.PixelRatio;
             float x     = position.x;
             float y     = position.y;
             int   count = vertices.Count;
             vertices.Add(new Vector3(x, y));
             vertices.Add(new Vector3(x + num2, y));
             vertices.Add(new Vector3(x + num2, y - num));
             vertices.Add(new Vector3(x, y - num));
             triangles.Add(count);
             triangles.Add(count + 1);
             triangles.Add(count + 3);
             triangles.Add(count + 3);
             triangles.Add(count + 1);
             triangles.Add(count + 2);
             Color32 item = (!base.ColorizeSymbols) ? this.applyOpacity(base.DefaultColor) : this.applyOpacity(color);
             colors.Add(item);
             colors.Add(item);
             colors.Add(item);
             colors.Add(item);
             Rect region = itemInfo.region;
             uv.Add(new Vector2(region.x, region.yMax));
             uv.Add(new Vector2(region.xMax, region.yMax));
             uv.Add(new Vector2(region.xMax, region.y));
             uv.Add(new Vector2(region.x, region.y));
         }
     }
     finally
     {
     }
 }
コード例 #10
0
    // Token: 0x060042FA RID: 17146 RVA: 0x000F74A4 File Offset: 0x000F56A4
    public static global::dfMarkupToken Obtain(string source, global::dfMarkupTokenType type, int startIndex, int endIndex)
    {
        if (global::dfMarkupToken.poolIndex >= global::dfMarkupToken.pool.Count - 1)
        {
            global::dfMarkupToken.pool.Add(new global::dfMarkupToken());
        }
        global::dfMarkupToken dfMarkupToken = global::dfMarkupToken.pool[global::dfMarkupToken.poolIndex++];

        dfMarkupToken.Source              = source;
        dfMarkupToken.TokenType           = type;
        dfMarkupToken.value               = null;
        dfMarkupToken.StartOffset         = startIndex;
        dfMarkupToken.EndOffset           = endIndex;
        dfMarkupToken.AttributeCount      = 0;
        dfMarkupToken.startAttributeIndex = 0;
        dfMarkupToken.Width               = 0;
        dfMarkupToken.Height              = 0;
        return(dfMarkupToken);
    }
コード例 #11
0
        // Token: 0x06004683 RID: 18051 RVA: 0x00108F24 File Offset: 0x00107124
        private Color32 parseColor(global::dfMarkupToken token)
        {
            Color color = Color.white;

            if (token.AttributeCount == 1)
            {
                string value = token.GetAttribute(0).Value.Value;
                if (value.Length == 7 && value[0] == '#')
                {
                    uint num = 0u;
                    uint.TryParse(value.Substring(1), NumberStyles.HexNumber, null, out num);
                    color = this.UIntToColor(num | 4278190080u);
                }
                else
                {
                    color = global::dfMarkupStyle.ParseColor(value, base.DefaultColor);
                }
            }
            return(this.applyOpacity(color));
        }
コード例 #12
0
        // Token: 0x06004685 RID: 18053 RVA: 0x00108FE8 File Offset: 0x001071E8
        private global::dfList <global::dfDynamicFont.LineRenderInfo> calculateLinebreaks()
        {
            global::dfList <global::dfDynamicFont.LineRenderInfo> result;

            try
            {
                if (this.lines != null)
                {
                    result = this.lines;
                }
                else
                {
                    this.lines = global::dfList <global::dfDynamicFont.LineRenderInfo> .Obtain();

                    global::dfDynamicFont dfDynamicFont = (global::dfDynamicFont)base.Font;
                    int   num  = 0;
                    int   num2 = 0;
                    int   num3 = 0;
                    int   num4 = 0;
                    float num5 = (float)dfDynamicFont.Baseline * base.TextScale;
                    while (num3 < this.tokens.Count && (float)this.lines.Count * num5 <= base.MaxSize.y + num5)
                    {
                        global::dfMarkupToken     dfMarkupToken = this.tokens[num3];
                        global::dfMarkupTokenType tokenType     = dfMarkupToken.TokenType;
                        if (tokenType == global::dfMarkupTokenType.Newline)
                        {
                            this.lines.Add(global::dfDynamicFont.LineRenderInfo.Obtain(num2, num3));
                            num  = (num2 = ++num3);
                            num4 = 0;
                        }
                        else
                        {
                            int  num6 = Mathf.CeilToInt((float)dfMarkupToken.Width);
                            bool flag = base.WordWrap && num > num2 && (tokenType == global::dfMarkupTokenType.Text || (tokenType == global::dfMarkupTokenType.StartTag && dfMarkupToken.Matches("sprite")));
                            if (flag && (float)(num4 + num6) >= base.MaxSize.x)
                            {
                                if (num > num2)
                                {
                                    this.lines.Add(global::dfDynamicFont.LineRenderInfo.Obtain(num2, num - 1));
                                    num3 = (num2 = ++num);
                                    num4 = 0;
                                }
                                else
                                {
                                    this.lines.Add(global::dfDynamicFont.LineRenderInfo.Obtain(num2, num - 1));
                                    num  = (num2 = ++num3);
                                    num4 = 0;
                                }
                            }
                            else
                            {
                                if (tokenType == global::dfMarkupTokenType.Whitespace)
                                {
                                    num = num3;
                                }
                                num4 += num6;
                                num3++;
                            }
                        }
                    }
                    if (num2 < this.tokens.Count)
                    {
                        this.lines.Add(global::dfDynamicFont.LineRenderInfo.Obtain(num2, this.tokens.Count - 1));
                    }
                    for (int i = 0; i < this.lines.Count; i++)
                    {
                        this.calculateLineSize(this.lines[i]);
                    }
                    result = this.lines;
                }
            }
            finally
            {
            }
            return(result);
        }
コード例 #13
0
 // Token: 0x06004680 RID: 18048 RVA: 0x00108988 File Offset: 0x00106B88
 private void renderText(global::dfMarkupToken token, Color32 color, Vector3 position, global::dfRenderData renderData)
 {
     try
     {
         global::dfDynamicFont dfDynamicFont = (global::dfDynamicFont)base.Font;
         int       num     = Mathf.CeilToInt((float)dfDynamicFont.FontSize * base.TextScale);
         FontStyle style   = 0;
         int       descent = dfDynamicFont.Descent;
         global::dfList <Vector3> vertices  = renderData.Vertices;
         global::dfList <int>     triangles = renderData.Triangles;
         global::dfList <Vector2> uv        = renderData.UV;
         global::dfList <Color32> colors    = renderData.Colors;
         string          value = token.Value;
         float           num2  = position.x;
         float           y     = position.y;
         CharacterInfo[] array = dfDynamicFont.RequestCharacters(value, num, style);
         renderData.Material = dfDynamicFont.Material;
         Color32 color2 = this.applyOpacity(this.multiplyColors(color, base.DefaultColor));
         Color32 item   = color2;
         if (base.BottomColor != null)
         {
             item = this.applyOpacity(this.multiplyColors(color, base.BottomColor.Value));
         }
         for (int i = 0; i < value.Length; i++)
         {
             if (i > 0)
             {
                 num2 += (float)base.CharacterSpacing * base.TextScale;
             }
             CharacterInfo glyph   = array[i];
             float         num3    = (float)dfDynamicFont.FontSize + glyph.vert.y - (float)num + (float)descent;
             float         num4    = num2 + glyph.vert.x;
             float         num5    = y + num3;
             float         num6    = num4 + glyph.vert.width;
             float         num7    = num5 + glyph.vert.height;
             Vector3       vector  = new Vector3(num4, num5) * base.PixelRatio;
             Vector3       vector2 = new Vector3(num6, num5) * base.PixelRatio;
             Vector3       vector3 = new Vector3(num6, num7) * base.PixelRatio;
             Vector3       vector4 = new Vector3(num4, num7) * base.PixelRatio;
             if (base.Shadow)
             {
                 global::dfDynamicFont.DynamicFontRenderer.addTriangleIndices(vertices, triangles);
                 Vector3 vector5 = base.ShadowOffset * base.PixelRatio;
                 vertices.Add(vector + vector5);
                 vertices.Add(vector2 + vector5);
                 vertices.Add(vector3 + vector5);
                 vertices.Add(vector4 + vector5);
                 Color32 item2 = this.applyOpacity(base.ShadowColor);
                 colors.Add(item2);
                 colors.Add(item2);
                 colors.Add(item2);
                 colors.Add(item2);
                 global::dfDynamicFont.DynamicFontRenderer.addUVCoords(uv, glyph);
             }
             if (base.Outline)
             {
                 for (int j = 0; j < global::dfDynamicFont.DynamicFontRenderer.OUTLINE_OFFSETS.Length; j++)
                 {
                     global::dfDynamicFont.DynamicFontRenderer.addTriangleIndices(vertices, triangles);
                     Vector3 vector6 = global::dfDynamicFont.DynamicFontRenderer.OUTLINE_OFFSETS[j] * (float)base.OutlineSize * base.PixelRatio;
                     vertices.Add(vector + vector6);
                     vertices.Add(vector2 + vector6);
                     vertices.Add(vector3 + vector6);
                     vertices.Add(vector4 + vector6);
                     Color32 item3 = this.applyOpacity(base.OutlineColor);
                     colors.Add(item3);
                     colors.Add(item3);
                     colors.Add(item3);
                     colors.Add(item3);
                     global::dfDynamicFont.DynamicFontRenderer.addUVCoords(uv, glyph);
                 }
             }
             global::dfDynamicFont.DynamicFontRenderer.addTriangleIndices(vertices, triangles);
             vertices.Add(vector);
             vertices.Add(vector2);
             vertices.Add(vector3);
             vertices.Add(vector4);
             colors.Add(color2);
             colors.Add(color2);
             colors.Add(item);
             colors.Add(item);
             global::dfDynamicFont.DynamicFontRenderer.addUVCoords(uv, glyph);
             num2 += (float)Mathf.CeilToInt(glyph.vert.x + glyph.vert.width);
         }
     }
     finally
     {
     }
 }
コード例 #14
0
    // Token: 0x0600431D RID: 17181 RVA: 0x000F7B24 File Offset: 0x000F5D24
    private global::dfMarkupToken parseTag()
    {
        if (this.Peek(0) != '<')
        {
            return(null);
        }
        char c = this.Peek(1);

        if (c == '/')
        {
            return(this.parseEndTag());
        }
        this.Advance(1);
        c = this.Peek(0);
        if (!char.IsLetterOrDigit(c))
        {
            return(null);
        }
        int startIndex = this.index;
        int num        = this.index;

        while (this.index < this.source.Length && char.IsLetterOrDigit(this.Advance(1)))
        {
            num++;
        }
        global::dfMarkupToken dfMarkupToken = global::dfMarkupToken.Obtain(this.source, global::dfMarkupTokenType.StartTag, startIndex, num);

        while (this.index < this.source.Length && this.Peek(0) != '>')
        {
            c = this.Peek(0);
            if (char.IsWhiteSpace(c))
            {
                this.parseWhitespace();
            }
            else
            {
                global::dfMarkupToken dfMarkupToken2 = this.parseWord();
                if (dfMarkupToken2 == null)
                {
                    this.Advance(1);
                }
                else
                {
                    c = this.Peek(0);
                    if (c != '=')
                    {
                        dfMarkupToken.AddAttribute(dfMarkupToken2, dfMarkupToken2);
                    }
                    else
                    {
                        c = this.Advance(1);
                        global::dfMarkupToken dfMarkupToken3;
                        if (c == '"' || c == '\'')
                        {
                            dfMarkupToken3 = this.parseQuotedString();
                        }
                        else
                        {
                            dfMarkupToken3 = this.parseAttributeValue();
                        }
                        dfMarkupToken.AddAttribute(dfMarkupToken2, dfMarkupToken3 ?? dfMarkupToken2);
                    }
                }
            }
        }
        if (this.Peek(0) == '>')
        {
            this.Advance(1);
        }
        return(dfMarkupToken);
    }
コード例 #15
0
 // Token: 0x060040D8 RID: 16600 RVA: 0x000ED608 File Offset: 0x000EB808
 private void renderText(global::dfMarkupToken token, Color32 color, Vector3 position, global::dfRenderData destination)
 {
     try
     {
         global::dfList <Vector3> vertices  = destination.Vertices;
         global::dfList <int>     triangles = destination.Triangles;
         global::dfList <Color32> colors    = destination.Colors;
         global::dfList <Vector2> uv        = destination.UV;
         global::dfFont           dfFont    = (global::dfFont)base.Font;
         global::dfAtlas.ItemInfo itemInfo  = dfFont.Atlas[dfFont.sprite];
         Texture texture      = dfFont.Texture;
         float   num          = 1f / (float)texture.width;
         float   num2         = 1f / (float)texture.height;
         float   num3         = num * 0.125f;
         float   num4         = num2 * 0.125f;
         float   num5         = base.TextScale * base.PixelRatio;
         char    previousChar = '\0';
         Color32 color2       = this.applyOpacity(this.multiplyColors(color, base.DefaultColor));
         Color32 item         = color2;
         if (base.BottomColor != null)
         {
             item = this.applyOpacity(this.multiplyColors(color, base.BottomColor.Value));
         }
         int i = 0;
         while (i < token.Length)
         {
             char c = token[i];
             if (c != '\0')
             {
                 global::dfFont.GlyphDefinition glyph = dfFont.GetGlyph(c);
                 if (glyph != null)
                 {
                     int     kerning = dfFont.GetKerning(previousChar, c);
                     float   num6    = position.x + (float)(glyph.xoffset + kerning) * num5;
                     float   num7    = position.y - (float)glyph.yoffset * num5;
                     float   num8    = (float)glyph.width * num5;
                     float   num9    = (float)glyph.height * num5;
                     float   num10   = num6 + num8;
                     float   num11   = num7 - num9;
                     Vector3 vector;
                     vector..ctor(num6, num7);
                     Vector3 vector2;
                     vector2..ctor(num10, num7);
                     Vector3 vector3;
                     vector3..ctor(num10, num11);
                     Vector3 vector4;
                     vector4..ctor(num6, num11);
                     float num12 = itemInfo.region.x + (float)glyph.x * num - num3;
                     float num13 = itemInfo.region.yMax - (float)glyph.y * num2 - num4;
                     float num14 = num12 + (float)glyph.width * num - num3;
                     float num15 = num13 - (float)glyph.height * num2 + num4;
                     if (base.Shadow)
                     {
                         global::dfFont.BitmappedFontRenderer.addTriangleIndices(vertices, triangles);
                         Vector3 vector5 = base.ShadowOffset * num5;
                         vertices.Add(vector + vector5);
                         vertices.Add(vector2 + vector5);
                         vertices.Add(vector3 + vector5);
                         vertices.Add(vector4 + vector5);
                         Color32 item2 = this.applyOpacity(base.ShadowColor);
                         colors.Add(item2);
                         colors.Add(item2);
                         colors.Add(item2);
                         colors.Add(item2);
                         uv.Add(new Vector2(num12, num13));
                         uv.Add(new Vector2(num14, num13));
                         uv.Add(new Vector2(num14, num15));
                         uv.Add(new Vector2(num12, num15));
                     }
                     if (base.Outline)
                     {
                         for (int j = 0; j < global::dfFont.BitmappedFontRenderer.OUTLINE_OFFSETS.Length; j++)
                         {
                             global::dfFont.BitmappedFontRenderer.addTriangleIndices(vertices, triangles);
                             Vector3 vector6 = global::dfFont.BitmappedFontRenderer.OUTLINE_OFFSETS[j] * (float)base.OutlineSize * num5;
                             vertices.Add(vector + vector6);
                             vertices.Add(vector2 + vector6);
                             vertices.Add(vector3 + vector6);
                             vertices.Add(vector4 + vector6);
                             Color32 item3 = this.applyOpacity(base.OutlineColor);
                             colors.Add(item3);
                             colors.Add(item3);
                             colors.Add(item3);
                             colors.Add(item3);
                             uv.Add(new Vector2(num12, num13));
                             uv.Add(new Vector2(num14, num13));
                             uv.Add(new Vector2(num14, num15));
                             uv.Add(new Vector2(num12, num15));
                         }
                     }
                     global::dfFont.BitmappedFontRenderer.addTriangleIndices(vertices, triangles);
                     vertices.Add(vector);
                     vertices.Add(vector2);
                     vertices.Add(vector3);
                     vertices.Add(vector4);
                     colors.Add(color2);
                     colors.Add(color2);
                     colors.Add(item);
                     colors.Add(item);
                     uv.Add(new Vector2(num12, num13));
                     uv.Add(new Vector2(num14, num13));
                     uv.Add(new Vector2(num14, num15));
                     uv.Add(new Vector2(num12, num15));
                     position.x += (float)(glyph.xadvance + kerning + base.CharacterSpacing) * num5;
                 }
             }
             i++;
             previousChar = c;
         }
     }
     finally
     {
     }
 }