public void RegisterMaxSizes(BarSizeInfo sizes) { for (int i = 0, j = BeatGlyphs.Count; i < j; i++) { var b = BeatGlyphs[i]; b.RegisterMaxSizes(sizes); } }
public void AddBars(Track[] tracks, int barIndex) { if (tracks.Length == 0) { return; } var score = tracks[0].Score; var masterBar = score.MasterBars[barIndex]; MasterBars.Add(masterBar); Helpers.BuildHelpers(tracks, barIndex); if (!_accoladeSpacingCalculated && Index == 0) { _accoladeSpacingCalculated = true; var canvas = Layout.Renderer.Canvas; var res = Layout.Renderer.RenderingResources.EffectFont; canvas.Font = res; for (var i = 0; i < tracks.Length; i++) { AccoladeSpacing = Math.Max(AccoladeSpacing, canvas.MeasureText(tracks[i].ShortName)); } AccoladeSpacing += (2 * AccoladeLabelSpacing); Width += AccoladeSpacing; } // add renderers var maxSizes = new BarSizeInfo(); for (int i = 0, j = Staves.Count; i < j; i++) { var g = Staves[i]; for (int k = 0, l = g.Staves.Count; k < l; k++) { var s = g.Staves[k]; s.AddBar(g.Track.Bars[barIndex]); s.BarRenderers[s.BarRenderers.Count - 1].RegisterMaxSizes(maxSizes); } } // ensure same widths of new renderer var realWidth = 0f; for (int i = 0, j = _allStaves.Count; i < j; i++) { var s = _allStaves[i]; s.BarRenderers[s.BarRenderers.Count - 1].ApplySizes(maxSizes); if (s.BarRenderers[s.BarRenderers.Count - 1].Width > realWidth) { realWidth = s.BarRenderers[s.BarRenderers.Count - 1].Width; } } Width += realWidth; }
public void ApplySizes(BarSizeInfo sizes) { Width = 0; for (int i = 0, j = BeatGlyphs.Count; i < j; i++) { BeatGlyphs[i].X = (i == 0) ? 0 : BeatGlyphs[i - 1].X + BeatGlyphs[i - 1].Width; BeatGlyphs[i].ApplySizes(sizes); } if (BeatGlyphs.Count > 0) { Width = BeatGlyphs[BeatGlyphs.Count - 1].X + BeatGlyphs[BeatGlyphs.Count - 1].Width; } }
public void RegisterMaxSizes(BarSizeInfo sizes) { if (sizes.GetPreNoteSize(Beat.Start) < PreNotes.Width) { sizes.SetPreNoteSize(Beat.Start, PreNotes.Width); } if (sizes.GetOnNoteSize(Beat.Start) < OnNotes.Width) { sizes.SetOnNoteSize(Beat.Start, OnNotes.Width); } if (sizes.GetPostNoteSize(Beat.Start) < PostNotes.Width) { sizes.SetPostNoteSize(Beat.Start, PostNotes.Width); } }
public void ApplySizes(BarSizeInfo sizes) { float size; float diff; size = sizes.GetPreNoteSize(Beat.Start); diff = size - PreNotes.Width; PreNotes.X = 0; if (diff > 0) PreNotes.ApplyGlyphSpacing(diff); size = sizes.GetOnNoteSize(Beat.Start); diff = size - OnNotes.Width; OnNotes.X = PreNotes.X + PreNotes.Width; if (diff > 0) OnNotes.ApplyGlyphSpacing(diff); size = sizes.GetPostNoteSize(Beat.Start); diff = size - PostNotes.Width; PostNotes.X = OnNotes.X + OnNotes.Width; if (diff > 0) PostNotes.ApplyGlyphSpacing(diff); Width = CalculateWidth(); }
public void AddBars(Track[] tracks, int barIndex) { if (tracks.Length == 0) return; var score = tracks[0].Score; var masterBar = score.MasterBars[barIndex]; MasterBars.Add(masterBar); Helpers.BuildHelpers(tracks, barIndex); if (!_accoladeSpacingCalculated && Index == 0) { _accoladeSpacingCalculated = true; var canvas = Layout.Renderer.Canvas; var res = Layout.Renderer.RenderingResources.EffectFont; canvas.Font = res; for (var i = 0; i < tracks.Length; i++) { AccoladeSpacing = Math.Max(AccoladeSpacing, canvas.MeasureText(tracks[i].ShortName)); } AccoladeSpacing += (2 * AccoladeLabelSpacing); Width += AccoladeSpacing; } // add renderers var maxSizes = new BarSizeInfo(); for (int i = 0, j = Staves.Count; i < j; i++) { var g = Staves[i]; for (int k = 0, l = g.Staves.Count; k < l; k++) { var s = g.Staves[k]; s.AddBar(g.Track.Bars[barIndex]); s.BarRenderers[s.BarRenderers.Count - 1].RegisterMaxSizes(maxSizes); } } // ensure same widths of new renderer var realWidth = 0f; for (int i = 0, j = _allStaves.Count; i < j; i++) { var s = _allStaves[i]; s.BarRenderers[s.BarRenderers.Count - 1].ApplySizes(maxSizes); if (s.BarRenderers[s.BarRenderers.Count - 1].Width > realWidth) { realWidth = s.BarRenderers[s.BarRenderers.Count - 1].Width; } } Width += realWidth; }
public override void RegisterMaxSizes(BarSizeInfo sizes) { var preSize = BeatGlyphsStart; if (sizes.GetSize(KeySizePre) < preSize) { sizes.SetSize(KeySizePre, preSize); } Std.Foreach(_voiceContainers.Values, c => c.RegisterMaxSizes(sizes)); float postSize; if (_postBeatGlyphs.Count == 0) { postSize = 0; } else { postSize = _postBeatGlyphs[_postBeatGlyphs.Count - 1].X + _postBeatGlyphs[_postBeatGlyphs.Count - 1].Width; } if (sizes.GetSize(KeySizePost) < postSize) { sizes.SetSize(KeySizePost, postSize); } if (sizes.FullWidth < Width) { sizes.FullWidth = Width; } }
public override void ApplySizes(BarSizeInfo sizes) { // if we need additional space in the preBeat group we simply // add a new spacer var preSize = sizes.GetSize(KeySizePre); var preSizeDiff = preSize - BeatGlyphsStart; if (preSizeDiff > 0) { AddPreBeatGlyph(new SpacingGlyph(0, 0, preSizeDiff)); } // on beat glyphs we apply the glyph spacing Std.Foreach(_voiceContainers.Values, c=>c.ApplySizes(sizes)); // on the post glyphs we add the spacing before all other glyphs var postSize = sizes.GetSize(KeySizePost); float postSizeDiff; if (_postBeatGlyphs.Count == 0) { postSizeDiff = postSize; } else { postSizeDiff = postSize - (_postBeatGlyphs[_postBeatGlyphs.Count - 1].X + _postBeatGlyphs[_postBeatGlyphs.Count - 1].Width); } if (postSizeDiff > 0) { _postBeatGlyphs.Insert(0, new SpacingGlyph(0, 0, postSizeDiff)); for (var i = 0; i < _postBeatGlyphs.Count; i++) { var g = _postBeatGlyphs[i]; g.X = i == 0 ? 0 : _postBeatGlyphs[_postBeatGlyphs.Count - 1].X + _postBeatGlyphs[_postBeatGlyphs.Count - 1].Width; g.Index = i; g.Renderer = this; } } UpdateWidth(); }
public override void ApplySizes(BarSizeInfo sizes) { base.ApplySizes(sizes); Width = sizes.FullWidth; }
public virtual void RegisterMaxSizes(BarSizeInfo sizes) { }
public virtual void ApplySizes(BarSizeInfo sizes) { }