// 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 { } }
// Token: 0x060040D7 RID: 16599 RVA: 0x000ED4F8 File Offset: 0x000EB6F8 private void renderLine(global::dfFont.LineRenderInfo line, Stack <Color32> colors, Vector3 position, global::dfRenderData destination) { float num = base.TextScale * base.PixelRatio; position.x += (float)this.calculateLineAlignment(line) * num; 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.renderSprite(dfMarkupToken, colors.Peek(), position, destination); } 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 * num; } }
// 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 { } }
// Token: 0x0600412D RID: 16685 public abstract void Render(string text, global::dfRenderData destination);