AlphaTab.Rendering.Glyphs.TabClefGlyph.Paint C# (CSharp) Method

Paint() public method

public Paint ( float cx, float cy, ICanvas canvas ) : void
cx float
cy float
canvas ICanvas
return void
        public override void Paint(float cx, float cy, ICanvas canvas)
        {
            //TabBarRenderer tabBarRenderer = (TabBarRenderer)Renderer;
            var track = Renderer.Bar.Staff.Track;
            var res = Renderer.Resources;

            var startY = cy + Y + TabBarRenderer.LineSpacing * Scale * 0.6f;
            //var endY = cy + Y + tabBarRenderer.GetTabY(track.Tuning.Count, -2);

            // TODO: Find a more generic way of calculating the font size but for now this works.
            float fontScale = 1;
            float correction = 0;
            switch (track.Tuning.Length)
            {
                case 4:
                    fontScale = 0.6f;
                    break;
                case 5:
                    fontScale = 0.8f;
                    break;
                case 6:
                    fontScale = 1.1f;
                    correction = 1;
                    break;
                case 7:
                    fontScale = 1.15f;
                    break;
                case 8:
                    fontScale = 1.35f;
                    break;
            }

            var font = res.TabClefFont.Clone();
            font.Size = font.Size * fontScale;

            canvas.Font = font;
            var old = canvas.TextAlign;
            canvas.TextAlign = TextAlign.Center;

            canvas.FillText("T", cx + X + Width / 2, startY);
            canvas.FillText("A", cx + X + Width / 2, startY + font.Size - (correction * Scale));
            canvas.FillText("B", cx + X + Width / 2, startY + (font.Size - (correction * Scale)) * 2);
            canvas.TextAlign = old;
        }