Exemple #1
0
        private void MoveFramedTextAboveNoteheadExtenders(Metrics framedTextMetrics, List <NoteheadExtenderMetrics> noteheadExtendersMetrics)
        {
            double padding            = Gap * 1.5;
            int    indexOfTopExtender = 0;

            for (int i = 1; i < noteheadExtendersMetrics.Count; ++i)
            {
                indexOfTopExtender = (noteheadExtendersMetrics[indexOfTopExtender].Top < noteheadExtendersMetrics[i].Top) ? indexOfTopExtender : i;
            }
            NoteheadExtenderMetrics topExtender = noteheadExtendersMetrics[indexOfTopExtender];
            double verticalOverlap = topExtender.OverlapHeight(framedTextMetrics, padding);

            if (verticalOverlap > 0)
            {
                verticalOverlap = (verticalOverlap > padding) ? verticalOverlap : padding;
                framedTextMetrics.Move(0, -(verticalOverlap));
            }
        }
Exemple #2
0
        /// <summary>
        /// Extenders are created for chords of all duration classes, but only displayed on crotchets or greater.
        /// This is so that extenders become part of the staff's edge, which is used when shifting staves and drawing barlines.
        /// Extenders shorter than a gap are not created.
        /// </summary>
        private List <NoteheadExtenderMetrics> CreateExtenders(List <float> x1s, List <float> x2s, List <float> ys, float extenderStrokeWidth, float gap, bool drawExtender)
        {
            Debug.Assert(ys.Count == x1s.Count);
            Debug.Assert(ys.Count == x2s.Count);
            Debug.Assert(ys.Count > 0);

            List <NoteheadExtenderMetrics> noteheadExtendersMetrics = new List <NoteheadExtenderMetrics>();

            for (int i = 0; i < ys.Count; ++i)
            {
                if ((x2s[i] - x1s[i]) > (gap / 2))
                {
                    NoteheadExtenderMetrics nem =
                        new NoteheadExtenderMetrics(x1s[i], x2s[i], ys[i], extenderStrokeWidth, gap, drawExtender);

                    noteheadExtendersMetrics.Add(nem);
                }
            }
            return(noteheadExtendersMetrics);
        }
Exemple #3
0
        /// <summary>
        /// Extenders are created for chords of all duration classes, but only displayed on crotchets or greater.
        /// This is so that extenders become part of the staff's edge, which is used when shifting staves and drawing barlines.
        /// Extenders shorter than a gap are not created.
        /// </summary>
        private List<NoteheadExtenderMetrics> CreateExtenders(List<float> x1s, List<float> x2s, List<float> ys, List<HeadMetrics> headMetrics, float extenderStrokeWidth, float gap, bool drawExtender)
        {
            Debug.Assert(ys.Count == x1s.Count);
            Debug.Assert(ys.Count == x2s.Count);
            Debug.Assert(ys.Count > 0);

            List<NoteheadExtenderMetrics> noteheadExtendersMetrics = new List<NoteheadExtenderMetrics>();
            for(int i = 0; i < ys.Count; ++i)
            {
                if((x2s[i] - x1s[i]) > (gap / 2))
                {
                    NoteheadExtenderMetrics nem =
                        new NoteheadExtenderMetrics(x1s[i], x2s[i], ys[i], headMetrics[i].ColorAttribute, extenderStrokeWidth, gap, drawExtender);

                    noteheadExtendersMetrics.Add(nem);
                }
            }
            return noteheadExtendersMetrics;
        }