AlphaTab.Rendering.Glyphs.WhammyBarGlyph.DoLayout C# (CSharp) Method

DoLayout() public method

public DoLayout ( ) : void
return void
        public override void DoLayout()
        {
            base.DoLayout();

            //
            // Calculate the min and max offsets
            var minY = 0f;
            var maxY = 0f;

            var sizeY = WhammyMaxOffset * Scale;
            if (_beat.WhammyBarPoints.Count >= 2)
            {
                var dy = sizeY / Beat.WhammyBarMaxValue;
                for (int i = 0, j = _beat.WhammyBarPoints.Count; i < j; i++)
                {
                    var pt = _beat.WhammyBarPoints[i];
                    var ptY = 0 - (dy * pt.Value);
                    if (ptY > maxY) maxY = ptY;
                    if (ptY < minY) minY = ptY;
                }
            }

            //
            // calculate the overflow
            var tabBarRenderer = (TabBarRenderer)Renderer;
            var track = Renderer.Bar.Staff.Track;
            var tabTop = tabBarRenderer.GetTabY(0, -2);
            var tabBottom = tabBarRenderer.GetTabY(track.Tuning.Length, -2);

            var absMinY = Y + minY + tabTop;
            var absMaxY = Y + maxY - tabBottom;

            if (absMinY < 0)
                tabBarRenderer.RegisterOverflowTop(Math.Abs(absMinY));
            if (absMaxY > 0)
                tabBarRenderer.RegisterOverflowBottom(Math.Abs(absMaxY));
        }