// 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); }
// 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 { } }
// 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); } }