public virtual void BuildBoundingsLookup(MasterBarBounds masterBarBounds, float cx, float cy) { var barBounds = new BarBounds(); barBounds.Bar = Bar; barBounds.VisualBounds = new Bounds(cx + X, cy + Y + TopPadding, Width, Height - TopPadding - BottomPadding); barBounds.RealBounds = new Bounds(cx + X, cy + Y, Width, Height); masterBarBounds.AddBar(barBounds); foreach (var voice in _voiceContainers) { var c = _voiceContainers[voice]; if (!c.Voice.IsEmpty) { for (int i = 0, j = c.BeatGlyphs.Count; i < j; i++) { var bc = c.BeatGlyphs[i]; var beatBoundings = new BeatBounds(); beatBoundings.Beat = bc.Beat; beatBoundings.VisualBounds = new Bounds(cx + X + c.X + bc.X + bc.OnNotes.X, barBounds.VisualBounds.Y, bc.OnNotes.Width, barBounds.VisualBounds.H); beatBoundings.RealBounds = new Bounds(cx + X + c.X + bc.X, barBounds.RealBounds.Y, bc.Width, barBounds.RealBounds.H); barBounds.AddBeat(beatBoundings); } } } }
public virtual void BuildBoundingsLookup(MasterBarBounds masterBarBounds, float cx, float cy) { var barBounds = new BarBounds(); barBounds.Bar = Bar; barBounds.VisualBounds = new Bounds { X = cx + X, Y = cy + Y + TopPadding, W = Width, H = Height - TopPadding - BottomPadding }; barBounds.RealBounds = new Bounds { X = cx + X, Y = cy + Y, W = Width, H = Height }; masterBarBounds.AddBar(barBounds); foreach (var voice in _voiceContainers) { var c = _voiceContainers[voice]; var isEmptyBar = (Bar.IsEmpty && voice == 0); if (!c.Voice.IsEmpty || isEmptyBar) { for (int i = 0, j = c.BeatGlyphs.Count; i < j; i++) { var bc = c.BeatGlyphs[i]; var beatBoundings = new BeatBounds(); beatBoundings.Beat = bc.Beat; beatBoundings.VisualBounds = new Bounds { X = cx + X + c.X + bc.X + bc.OnNotes.X, Y = barBounds.VisualBounds.Y, W = bc.OnNotes.Width, H = barBounds.VisualBounds.H }; beatBoundings.RealBounds = new Bounds { X = cx + X + c.X + bc.X, Y = barBounds.RealBounds.Y, W = bc.Width, H = barBounds.RealBounds.H }; if (isEmptyBar) { beatBoundings.VisualBounds.X = cx + X; beatBoundings.RealBounds.X = beatBoundings.VisualBounds.X; } barBounds.AddBeat(beatBoundings); } } } }
private void BuildBoundingsLookup(float cx, float cy) { if (Layout.Renderer.BoundsLookup.IsFinished) { return; } if (_firstStaffInAccolade == null || _lastStaffInAccolade == null) { return; } var visualTop = cy + Y + _firstStaffInAccolade.Y; var visualBottom = cy + Y + _lastStaffInAccolade.Y + _lastStaffInAccolade.Height; var realTop = cy + Y + _allStaves[0].Y; var realBottom = cy + Y + _allStaves[_allStaves.Count - 1].Y + _allStaves[_allStaves.Count - 1].Height; var visualHeight = visualBottom - visualTop; var realHeight = realBottom - realTop; var x = X + _firstStaffInAccolade.X; var staveGroupBounds = new StaveGroupBounds(); staveGroupBounds.VisualBounds = new Bounds(cx, cy + Y, Width, Height); staveGroupBounds.RealBounds = new Bounds(cx, cy + Y, Width, Height); Layout.Renderer.BoundsLookup.AddStaveGroup(staveGroupBounds); var masterBarBoundsLookup = new FastList <MasterBarBounds>(); for (int i = 0; i < Staves.Count; i++) { for (int j = 0, k = Staves[i].FirstStaffInAccolade.BarRenderers.Count; j < k; j++) { var renderer = Staves[i].FirstStaffInAccolade.BarRenderers[j]; if (i == 0) { var masterBarBounds = new MasterBarBounds(); masterBarBounds.IsFirstOfLine = renderer.IsFirstOfLine; masterBarBounds.RealBounds = new Bounds(x + renderer.X, realTop, renderer.Width, realHeight); masterBarBounds.VisualBounds = new Bounds(x + renderer.X, visualTop, renderer.Width, visualHeight); Layout.Renderer.BoundsLookup.AddMasterBar(masterBarBounds); masterBarBoundsLookup.Add(masterBarBounds); } renderer.BuildBoundingsLookup(masterBarBoundsLookup[j], x, cy + Y + _firstStaffInAccolade.Y); } } }
private void BuildBoundingsLookup(float cx, float cy) { if (Layout.Renderer.BoundsLookup.IsFinished) { return; } if (_firstStaffInAccolade == null || _lastStaffInAccolade == null) { return; } var lastStaff = _allStaves[_allStaves.Count - 1]; var visualTop = cy + Y + _firstStaffInAccolade.Y; var visualBottom = cy + Y + _lastStaffInAccolade.Y + _lastStaffInAccolade.Height; var realTop = cy + Y + _allStaves[0].Y; var realBottom = cy + Y + lastStaff.Y + lastStaff.Height; var lineTop = cy + Y + _firstStaffInAccolade.Y + _firstStaffInAccolade.TopSpacing + _firstStaffInAccolade.TopOverflow + (_firstStaffInAccolade.BarRenderers.Count > 0 ? _firstStaffInAccolade.BarRenderers[0].TopPadding : 0); var lineBottom = cy + Y + lastStaff.Y + lastStaff.Height - lastStaff.BottomSpacing - lastStaff.BottomOverflow - (lastStaff.BarRenderers.Count > 0 ? lastStaff.BarRenderers[0].BottomPadding : 0); var visualHeight = visualBottom - visualTop; var lineHeight = lineBottom - lineTop; var realHeight = realBottom - realTop; var x = X + _firstStaffInAccolade.X; var staveGroupBounds = new StaveGroupBounds(); staveGroupBounds.VisualBounds = new Bounds { X = cx, Y = cy + Y, W = Width, H = Height }; staveGroupBounds.RealBounds = new Bounds { X = cx, Y = cy + Y, W = Width, H = Height }; Layout.Renderer.BoundsLookup.AddStaveGroup(staveGroupBounds); var masterBarBoundsLookup = new FastList <MasterBarBounds>(); for (int i = 0; i < Staves.Count; i++) { for (int j = 0, k = Staves[i].FirstStaffInAccolade.BarRenderers.Count; j < k; j++) { var renderer = Staves[i].FirstStaffInAccolade.BarRenderers[j]; if (i == 0) { var masterBarBounds = new MasterBarBounds(); masterBarBounds.Index = renderer.Bar.MasterBar.Index; masterBarBounds.IsFirstOfLine = renderer.IsFirstOfLine; masterBarBounds.RealBounds = new Bounds { X = x + renderer.X, Y = realTop, W = renderer.Width, H = realHeight }; masterBarBounds.VisualBounds = new Bounds { X = x + renderer.X, Y = visualTop, W = renderer.Width, H = visualHeight }; masterBarBounds.LineAlignedBounds = new Bounds { X = x + renderer.X, Y = lineTop, W = renderer.Width, H = lineHeight }; Layout.Renderer.BoundsLookup.AddMasterBar(masterBarBounds); masterBarBoundsLookup.Add(masterBarBounds); } renderer.BuildBoundingsLookup(masterBarBoundsLookup[j], x, cy + Y + _firstStaffInAccolade.Y); } } }