AlphaTab.Rendering.Glyphs.TabSlideLineGlyph.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)
        {
            var r = (TabBarRenderer)Renderer;

            var sizeX = 12 * Scale;
            var sizeY = 3 * Scale;
            float startX;
            float startY;
            float endX;
            float endY;
            switch (_type)
            {
                case SlideType.Shift:
                case SlideType.Legato:
                    float startOffsetY;
                    float endOffsetY;

                    if (_startNote.SlideTarget == null)
                    {
                        startOffsetY = 0;
                        endOffsetY = 0;
                    }
                    else if (_startNote.SlideTarget.Fret > _startNote.Fret)
                    {
                        startOffsetY = sizeY;
                        endOffsetY = sizeY * -1;
                    }
                    else
                    {
                        startOffsetY = sizeY * -1;
                        endOffsetY = sizeY;
                    }

                    startX = cx + r.GetNoteX(_startNote);
                    startY = cy + r.GetNoteY(_startNote) + startOffsetY;
                    if (_startNote.SlideTarget != null)
                    {
                        endX = cx + r.GetNoteX(_startNote.SlideTarget, false);
                        endY = cy + r.GetNoteY(_startNote.SlideTarget) + endOffsetY;
                    }
                    else
                    {
                        endX = cx + _parent.X;
                        endY = startY;
                    }
                    break;

                case SlideType.IntoFromBelow:
                    endX = cx + r.GetNoteX(_startNote, false);
                    endY = cy + r.GetNoteY(_startNote);

                    startX = endX - sizeX;
                    startY = cy + r.GetNoteY(_startNote) + sizeY;
                    break;
                case SlideType.IntoFromAbove:
                    endX = cx + r.GetNoteX(_startNote, false);
                    endY = cy + r.GetNoteY(_startNote);

                    startX = endX - sizeX;
                    startY = cy + r.GetNoteY(_startNote) - sizeY;
                    break;
                case SlideType.OutUp:
                    startX = cx + r.GetNoteX(_startNote);
                    startY = cy + r.GetNoteY(_startNote);

                    endX = startX + sizeX;
                    endY = cy + r.GetNoteY(_startNote) - sizeY;
                    break;

                case SlideType.OutDown:
                    startX = cx + r.GetNoteX(_startNote);
                    startY = cy + r.GetNoteY(_startNote);

                    endX = startX + sizeX;
                    endY = cy + r.GetNoteY(_startNote) + sizeY;
                    break;
                default:
                    return;
            }

            canvas.BeginPath();
            canvas.MoveTo(startX, startY);
            canvas.LineTo(endX, endY);
            canvas.Stroke();
        }