Пример #1
0
 private void renderLine(dfDynamicFont.LineRenderInfo line, Stack <Color32> colors, Vector3 position, dfRenderData destination)
 {
     position.x = position.x + (float)this.calculateLineAlignment(line);
     for (int i = line.startOffset; i <= line.endOffset; i++)
     {
         dfMarkupToken     item      = this.tokens[i];
         dfMarkupTokenType tokenType = item.TokenType;
         if (tokenType == dfMarkupTokenType.Text)
         {
             this.renderText(item, colors.Peek(), position, destination);
         }
         else if (tokenType != dfMarkupTokenType.StartTag)
         {
             if (tokenType == dfMarkupTokenType.EndTag && item.Matches("color") && colors.Count > 1)
             {
                 colors.Pop();
             }
         }
         else if (item.Matches("sprite") && this.SpriteAtlas != null && this.SpriteBuffer != null)
         {
             this.renderSprite(item, colors.Peek(), position, this.SpriteBuffer);
         }
         else if (item.Matches("color"))
         {
             colors.Push(this.parseColor(item));
         }
         position.x = position.x + (float)item.Width;
     }
 }
Пример #2
0
        public override void Render(string text, dfRenderData destination)
        {
            dfDynamicFont.DynamicFontRenderer.textColors.Clear();
            dfDynamicFont.DynamicFontRenderer.textColors.Push(Color.white);
            this.tokenize(text);
            dfList <dfDynamicFont.LineRenderInfo> lineRenderInfos = this.calculateLinebreaks();
            int     num     = 0;
            int     num1    = 0;
            Vector3 vector3 = (base.VectorOffset / base.PixelRatio).CeilToInt();

            for (int i = 0; i < lineRenderInfos.Count; i++)
            {
                dfDynamicFont.LineRenderInfo item = lineRenderInfos[i];
                int count = destination.Vertices.Count;
                int num2  = (this.SpriteBuffer == null ? 0 : this.SpriteBuffer.Vertices.Count);
                this.renderLine(lineRenderInfos[i], dfDynamicFont.DynamicFontRenderer.textColors, vector3, destination);
                vector3.y = vector3.y - item.lineHeight;
                num       = Mathf.Max((int)item.lineWidth, num);
                num1      = num1 + Mathf.CeilToInt(item.lineHeight);
                if (item.lineWidth > base.MaxSize.x)
                {
                    this.clipRight(destination, count);
                    this.clipRight(this.SpriteBuffer, num2);
                }
                this.clipBottom(destination, count);
                this.clipBottom(this.SpriteBuffer, num2);
            }
            Vector2 maxSize = base.MaxSize;
            float   single  = Mathf.Min(maxSize.x, (float)num);
            Vector2 vector2 = base.MaxSize;

            base.RenderedSize = new Vector2(single, Mathf.Min(vector2.y, (float)num1)) * base.TextScale;
        }
Пример #3
0
        private int calculateLineAlignment(dfDynamicFont.LineRenderInfo line)
        {
            float single = line.lineWidth;

            if (base.TextAlign == TextAlignment.Left || single < 1f)
            {
                return(0);
            }
            float single1 = 0f;

            single1 = (base.TextAlign != TextAlignment.Right ? (base.MaxSize.x - single) * 0.5f : base.MaxSize.x - single);
            return(Mathf.CeilToInt(Mathf.Max(0f, single1)));
        }
Пример #4
0
        private void calculateLineSize(dfDynamicFont.LineRenderInfo line)
        {
            dfDynamicFont font = (dfDynamicFont)base.Font;

            line.lineHeight = (float)font.Baseline * base.TextScale;
            int width = 0;

            for (int i = line.startOffset; i <= line.endOffset; i++)
            {
                width = width + this.tokens[i].Width;
            }
            line.lineWidth = (float)width;
        }
Пример #5
0
        public static dfDynamicFont.LineRenderInfo Obtain(int start, int end)
        {
            if (dfDynamicFont.LineRenderInfo.poolIndex >= dfDynamicFont.LineRenderInfo.pool.Count - 1)
            {
                dfDynamicFont.LineRenderInfo.pool.Add(new dfDynamicFont.LineRenderInfo());
            }
            dfList <dfDynamicFont.LineRenderInfo> lineRenderInfos = dfDynamicFont.LineRenderInfo.pool;
            int num = dfDynamicFont.LineRenderInfo.poolIndex;

            dfDynamicFont.LineRenderInfo.poolIndex = num + 1;
            dfDynamicFont.LineRenderInfo item = lineRenderInfos[num];
            item.startOffset = start;
            item.endOffset   = end;
            item.lineHeight  = 0f;
            return(item);
        }