Ejemplo n.º 1
0
 public override void DoLayout()
 {
     _helpers = Stave.StaveGroup.Helpers.Helpers[Bar.Track.Index][Bar.Index];
     base.DoLayout();
     Height  = Stave.GetSetting("rhythm-height", 24) * Scale;
     IsEmpty = false;
 }
        public override void DoLayout()
        {
            _helpers = Stave.StaveGroup.Helpers.Helpers[Bar.Track.Index][Bar.Index];
            base.DoLayout();


            Height = (LineOffset * 4) + TopPadding + BottomPadding;
            if (Index == 0)
            {
                Stave.RegisterStaveTop(GlyphOverflow);
                Stave.RegisterStaveBottom(Height - GlyphOverflow);
            }

            var top    = GetScoreY(0);
            var bottom = GetScoreY(8);

            for (int i = 0, j = _helpers.BeamHelpers.Count; i < j; i++)
            {
                var v = _helpers.BeamHelpers[i];
                for (int k = 0, l = v.Count; k < l; k++)
                {
                    var h = v[k];
                    //
                    // max note (highest) -> top overflow
                    //
                    var maxNoteY = GetScoreY(GetNoteLine(h.MaxNote));
                    if (h.Direction == BeamDirection.Up)
                    {
                        maxNoteY -= GetStemSize(h.MaxDuration);
                        maxNoteY -= h.FingeringCount * Resources.GraceFont.Size;
                        if (h.HasTuplet)
                        {
                            maxNoteY -= Resources.EffectFont.Size * 2;
                        }
                    }

                    if (maxNoteY < top)
                    {
                        RegisterOverflowTop(Math.Abs(maxNoteY));
                    }

                    //
                    // min note (lowest) -> bottom overflow
                    //t
                    var minNoteY = GetScoreY(GetNoteLine(h.MinNote));
                    if (h.Direction == BeamDirection.Down)
                    {
                        minNoteY += GetStemSize(h.MaxDuration);
                        minNoteY += h.FingeringCount * Resources.GraceFont.Size;
                    }

                    if (minNoteY > bottom)
                    {
                        RegisterOverflowBottom(Math.Abs(minNoteY) - bottom);
                    }
                }
            }
        }
Ejemplo n.º 3
0
 public override void DoLayout()
 {
     _helpers = Stave.StaveGroup.Helpers.Helpers[Bar.Track.Index][Bar.Index];
     base.DoLayout();
     Height = LineOffset * (Bar.Track.Tuning.Length - 1) + (NumberOverflow * 2);
     if (Index == 0)
     {
         Stave.RegisterStaveTop(NumberOverflow);
         Stave.RegisterStaveBottom(Height - NumberOverflow);
     }
 }
Ejemplo n.º 4
0
        private void PaintBeamHelper(float cx, float cy, ICanvas canvas, BeamingHelper h)
        {
            if (h.Beats[0].GraceType != GraceType.None)
            {
                return;
            }
            var useBeams = Stave.GetSetting("use-beams", false);

            // check if we need to paint simple footer
            if (useBeams && h.Beats.Count == 1)
            {
                PaintFooter(cx, cy, canvas, h);
            }
            else
            {
                PaintBar(cx, cy, canvas, h);
            }
        }
Ejemplo n.º 5
0
        public void AddStave(Track track, Stave stave)
        {
            var group = GetStaveTrackGroup(track);
            if (group == null)
            {
                group = new StaveTrackGroup(this, track);
                Staves.Add(group);
            }

            stave.StaveTrackGroup = group;
            stave.StaveGroup = this;
            stave.Index = _allStaves.Count;
            _allStaves.Add(stave);
            group.Staves.Add(stave);

            if (stave.IsInAccolade)
            {
                if (_firstStaveInAccolade == null)
                {
                    _firstStaveInAccolade = stave;
                    stave.IsFirstInAccolade = true;
                }
                if (group.FirstStaveInAccolade == null)
                {
                    group.FirstStaveInAccolade = stave;
                }
                if (_lastStaveInAccolade == null)
                {
                    _lastStaveInAccolade = stave;
                    stave.IsLastInAccolade = true;
                }

                if (_lastStaveInAccolade != null) { _lastStaveInAccolade.IsLastInAccolade = false; }
                _lastStaveInAccolade = stave;
                _lastStaveInAccolade.IsLastInAccolade = true;
                group.LastStaveInAccolade = stave;
            }
        }