Exemplo n.º 1
0
        private StaveGroup CreateStaveGroup(int currentBarIndex, int endIndex)
        {
            var group = CreateEmptyStaveGroup();

            group.Index = _groups.Count;

            var barsPerRow = Renderer.Settings.Layout.Get("barsPerRow", -1);

            var maxWidth = MaxWidth;
            var end      = endIndex + 1;

            for (int i = currentBarIndex; i < end; i++)
            {
                MasterBarsRenderers renderers;
                if (_barsFromPreviousGroup != null && _barsFromPreviousGroup.MasterBar.Index == i)
                {
                    renderers = group.AddMasterBarRenderers(Renderer.Tracks, _barsFromPreviousGroup);
                }
                else
                {
                    renderers = group.AddBars(Renderer.Tracks, i);
                    _allMasterBarRenderers.Add(renderers);
                }
                _barsFromPreviousGroup = null;

                var groupIsFull = false;

                // can bar placed in this line?
                if (barsPerRow == -1 && ((group.Width) >= maxWidth && group.MasterBarsRenderers.Count != 0))
                {
                    groupIsFull = true;
                }
                else if (group.MasterBarsRenderers.Count == barsPerRow + 1)
                {
                    groupIsFull = true;
                }

                if (groupIsFull)
                {
                    group.RevertLastBar();
                    group.IsFull           = true;
                    group.IsLast           = false;
                    _barsFromPreviousGroup = renderers;
                    return(group);
                }

                group.X = 0;
            }

            group.IsLast = endIndex == group.LastBarIndex;
            return(group);
        }
Exemplo n.º 2
0
        private StaveGroup CreateStaveGroup(int currentBarIndex, int endIndex)
        {
            var group = CreateEmptyStaveGroup();

            group.Index = _groups.Count;

            var barsPerRow = Renderer.Settings.Layout.Get("barsPerRow", -1);

            var maxWidth = MaxWidth;
            var end      = endIndex + 1;

            for (int i = currentBarIndex; i < end; i++)
            {
                if (_barsFromPreviousGroup.Count > 0)
                {
                    foreach (var renderer in _barsFromPreviousGroup)
                    {
                        group.AddMasterBarRenderers(Renderer.Tracks, renderer);
                        i = renderer.MasterBar.Index;
                    }
                }
                else
                {
                    var renderers = group.AddBars(Renderer.Tracks, i);
                    _allMasterBarRenderers.Add(renderers);
                }
                _barsFromPreviousGroup = new FastList <MasterBarsRenderers>();

                var groupIsFull = false;

                // can bar placed in this line?
                if (barsPerRow == -1 && ((group.Width) >= maxWidth && group.MasterBarsRenderers.Count != 0))
                {
                    groupIsFull = true;
                }
                else if (group.MasterBarsRenderers.Count == barsPerRow + 1)
                {
                    groupIsFull = true;
                }

                if (groupIsFull)
                {
                    MasterBarsRenderers reverted = group.RevertLastBar();
                    if (reverted != null)
                    {
                        _barsFromPreviousGroup.Add(reverted);

                        while (reverted != null && !reverted.CanWrap && group.MasterBarsRenderers.Count > 1)
                        {
                            reverted = group.RevertLastBar();
                            _barsFromPreviousGroup.Add(reverted);
                        }
                    }

                    group.IsFull = true;
                    group.IsLast = false;

                    _barsFromPreviousGroup.Reverse();
                    return(group);
                }

                group.X = 0;
            }

            group.IsLast = endIndex == group.LastBarIndex;
            return(group);
        }