Esempio n. 1
0
 public void RegisterMaxSizes(BarSizeInfo sizes)
 {
     for (int i = 0, j = BeatGlyphs.Count; i < j; i++)
     {
         var b = BeatGlyphs[i];
         b.RegisterMaxSizes(sizes);
     }
 }
Esempio n. 2
0
        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;
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 4
0
 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);
     }
 }
Esempio n. 5
0
        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();
        }
Esempio n. 6
0
        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;
        }
Esempio n. 7
0
        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;
            }
        }
Esempio n. 8
0
        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;
 }
Esempio n. 10
0
 public virtual void RegisterMaxSizes(BarSizeInfo sizes)
 {
 }
Esempio n. 11
0
 public virtual void ApplySizes(BarSizeInfo sizes)
 {
 }