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); }
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); }