public static async Task DrawPostConnection(IRootElementRenderer rootRenderer, PostNoteConnection postConnection,
                                                    Beat beat, IEnumerable <int> stringIndices)
        {
            switch (postConnection)
            {
            case PostNoteConnection.SlideOutToHigher:
                await NoteConnectionRenderer.DrawGliss(rootRenderer, beat, stringIndices, GlissDirection.ToHigher);

                break;

            case PostNoteConnection.SlideOutToLower:
                await NoteConnectionRenderer.DrawGliss(rootRenderer, beat, stringIndices, GlissDirection.ToLower);

                break;
            }
        }
        public static async Task <Rect> DrawConnection(IRootElementRenderer rootRenderer, NoteConnection connection, Beat from, Beat to, IEnumerable <int> stringIndices, Core.Style.VerticalDirection tiePosition)
        {
            switch (connection)
            {
            case NoteConnection.Slide:
            case NoteConnection.Hammer:
            case NoteConnection.Pull:
                return(await NoteConnectionRenderer.DrawTie(rootRenderer, @from, to, stringIndices, tiePosition));

            case NoteConnection.SlideInFromHigher:
            case NoteConnection.SlideInFromLower:
                return(await NoteConnectionRenderer.DrawGliss(rootRenderer, to, stringIndices, (GlissDirection)connection));

            case NoteConnection.SlideOutToHigher:
            case NoteConnection.SlideOutToLower:
                return(await NoteConnectionRenderer.DrawGliss(rootRenderer, from, stringIndices, (GlissDirection)connection));
            }

            return(default(Rect));
        }