]> git.donarmstrong.com Git - lilypond.git/commitdiff
Suppress continuing LyricHyphen under grace note at start of line
authorTrevor Daniels <t.daniels@treda.co.uk>
Thu, 24 Mar 2011 15:36:04 +0000 (15:36 +0000)
committerTrevor Daniels <t.daniels@treda.co.uk>
Mon, 28 Mar 2011 15:48:02 +0000 (16:48 +0100)
 - fixes 688

input/regression/lyric-hyphen-grace.ly [new file with mode: 0644]
lily/include/moment.hh
lily/lyric-hyphen.cc
lily/moment.cc

diff --git a/input/regression/lyric-hyphen-grace.ly b/input/regression/lyric-hyphen-grace.ly
new file mode 100644 (file)
index 0000000..64a11b1
--- /dev/null
@@ -0,0 +1,30 @@
+\header {
+
+  texidoc = "No hyphen should be printed under a grace note at the start
+of a line if the grace's main note starts a new syllable."
+}
+
+<<
+  \new Staff {
+    \appoggiatura f'8 g'2 g'( | \break
+    \appoggiatura f'8 g'2) \appoggiatura f'8 g'2 | \break
+    \appoggiatura f'8 g'2 g' | \break
+    g'2 g' |
+  }
+  \addlyrics {
+    \lyricmode {
+      bla -- bla -- bla -- bla -- bla -- bla -- bla
+    }
+  }
+  \new Staff {
+    g'2 g' |
+    g'2 g' |
+    g'2 g' |
+    g'2 g' |
+  }
+  \addlyrics {
+    \lyricmode {
+      bla -- bla -- bla -- bla -- bla -- bla -- bla -- bla
+    }
+  }
+>>
index 6a3922066eefe427a02cc74267857ef52c0363aa..59dfcd3798b3de2cf7dac935b16186b90811dccf 100644 (file)
@@ -54,6 +54,8 @@ public:
   bool to_bool () const;
   I64 den () const;
   I64 num () const;
+  Rational main_part () const;
+  Rational grace_part () const;
   /*
     Deliver a copy of THIS as a smobified SCM
   */
@@ -81,4 +83,3 @@ ostream &operator << (ostream &, Moment const &);
 bool moment_less (SCM a, SCM b);
 
 #endif /* MOMENT_HH */
-
index 5fae21fc34f9e4704d6561ad0637158c193b56fc..b80fcaa7d0a7b6699c5016bfffc3629ecd5b9414 100644 (file)
@@ -35,10 +35,19 @@ MAKE_SCHEME_CALLBACK (Lyric_hyphen, print, 1);
 SCM
 Lyric_hyphen::print (SCM smob)
 {
+
   Spanner *me = unsmob_spanner (smob);
   Drul_array<Item *> bounds (me->get_bound (LEFT),
                             me->get_bound (RIGHT));
 
+  /* No hyphen should be printed under a grace note at the start
+     of a line if the grace's main note starts a new syllable.  */
+
+  if (Paper_column::when_mom (bounds[LEFT]->get_column ()).grace_part () != Rational (0)
+      && Paper_column::when_mom (bounds[LEFT]->get_column ()).main_part ()
+      == Paper_column::when_mom (bounds[RIGHT]->get_column ()).main_part ())
+    return SCM_EOL;
+
   if (bounds[LEFT]->break_status_dir ()
       && (Paper_column::when_mom (bounds[LEFT])
          == Paper_column::when_mom (bounds[RIGHT]->get_column ())))
@@ -153,4 +162,3 @@ ADD_INTERFACE (Lyric_hyphen,
               "padding "
               "thickness "
               );
-
index ae6ea63dd2f6f421c0ea2b127a6edd0dfd97d123..1a646b9735ce08eb9fb9b11035d812da5db1c010 100644 (file)
@@ -159,6 +159,18 @@ Moment::to_bool () const
   return main_part_ || grace_part_;
 }
 
+Rational
+Moment::main_part () const
+{
+  return main_part_;
+}
+
+Rational
+Moment::grace_part () const
+{
+  return grace_part_;
+}
+
 void
 Moment::set_infinite (int k)
 {
@@ -207,4 +219,3 @@ moment_less (SCM a, SCM b)
 {
   return *unsmob_moment (a) < *unsmob_moment (b);
 }
-