示例#1
0
        // Token: 0x0600467C RID: 18044 RVA: 0x0010858C File Offset: 0x0010678C
        public float[] GetCharacterWidths(string text, int startIndex, int endIndex, out float totalWidth)
        {
            totalWidth = 0f;
            global::dfDynamicFont dfDynamicFont = (global::dfDynamicFont)base.Font;
            int size = Mathf.CeilToInt((float)dfDynamicFont.FontSize * base.TextScale);

            CharacterInfo[] array  = dfDynamicFont.RequestCharacters(text, size, 0);
            float[]         array2 = new float[text.Length];
            float           num    = 0f;
            float           num2   = 0f;
            int             i      = startIndex;

            while (i <= endIndex)
            {
                CharacterInfo characterInfo = array[i];
                if (text[i] == '\t')
                {
                    num2 += (float)base.TabSize;
                }
                else if (text[i] == ' ')
                {
                    num2 += characterInfo.width;
                }
                else
                {
                    num2 += characterInfo.vert.x + characterInfo.vert.width;
                }
                array2[i] = (num2 - num) * base.PixelRatio;
                i++;
                num = num2;
            }
            return(array2);
        }
示例#2
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
     {
     }
 }
示例#3
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
     {
     }
 }
    // Token: 0x060046CF RID: 18127 RVA: 0x0010B5B4 File Offset: 0x001097B4
    private void renderText(string text)
    {
        global::dfDynamicFont font         = this.Style.Font;
        int       fontSize                 = this.Style.FontSize;
        FontStyle fontStyle                = this.Style.FontStyle;
        global::dfList <Vector3> vertices  = this.renderData.Vertices;
        global::dfList <int>     triangles = this.renderData.Triangles;
        global::dfList <Vector2> uv        = this.renderData.UV;
        global::dfList <Color32> colors    = this.renderData.Colors;
        float num  = (float)fontSize / (float)font.FontSize;
        float num2 = (float)font.Descent * num;
        float num3 = 0f;

        CharacterInfo[] array = font.RequestCharacters(text, fontSize, fontStyle);
        this.renderData.Material = font.Material;
        for (int i = 0; i < text.Length; i++)
        {
            CharacterInfo characterInfo = array[i];
            global::dfMarkupBoxText.addTriangleIndices(vertices, triangles);
            float   num4 = (float)font.FontSize + characterInfo.vert.y - (float)fontSize + num2;
            float   num5 = num3 + characterInfo.vert.x;
            float   num6 = num4;
            float   num7 = num5 + characterInfo.vert.width;
            float   num8 = num6 + characterInfo.vert.height;
            Vector3 item;
            item..ctor(num5, num6);
            Vector3 item2;
            item2..ctor(num7, num6);
            Vector3 item3;
            item3..ctor(num7, num8);
            Vector3 item4;
            item4..ctor(num5, num8);
            vertices.Add(item);
            vertices.Add(item2);
            vertices.Add(item3);
            vertices.Add(item4);
            Color color = this.Style.Color;
            colors.Add(color);
            colors.Add(color);
            colors.Add(color);
            colors.Add(color);
            Rect  uv2   = characterInfo.uv;
            float x     = uv2.x;
            float num9  = uv2.y + uv2.height;
            float num10 = x + uv2.width;
            float y     = uv2.y;
            if (characterInfo.flipped)
            {
                uv.Add(new Vector2(num10, y));
                uv.Add(new Vector2(num10, num9));
                uv.Add(new Vector2(x, num9));
                uv.Add(new Vector2(x, y));
            }
            else
            {
                uv.Add(new Vector2(x, num9));
                uv.Add(new Vector2(num10, num9));
                uv.Add(new Vector2(num10, y));
                uv.Add(new Vector2(x, y));
            }
            num3 += (float)Mathf.CeilToInt(characterInfo.vert.x + characterInfo.vert.width);
        }
    }