]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fix 537 (introduced in c0e7005ed202874f8ea67279e5c96ec53985c3fb)
authorRune Zedeler <rune@lilypond.org>
Fri, 21 Dec 2007 22:31:55 +0000 (23:31 +0100)
committerRune Zedeler <rune@lilypond.org>
Fri, 21 Dec 2007 22:31:55 +0000 (23:31 +0100)
pitch-interval.cc: fixed empty interval case of add_point()
ambitus-engraver.cc: Handle empty interval explicitly

lily/ambitus-engraver.cc
lily/pitch-interval.cc

index a9f1d92f57001726213ea408d25efc7063527f57..0cfbc58e98684e127836535e6cdcda3a329b3ca9 100644 (file)
@@ -122,6 +122,8 @@ Ambitus_engraver::acknowledge_note_head (Grob_info info)
   if (nr && nr->in_event_class ("note-event"))
     {
       Pitch pitch = *unsmob_pitch (nr->get_property ("pitch"));
+      if (pitch_interval_.is_empty())
+       causes_[UP] = causes_[DOWN] = nr;
       Direction expand_dir = pitch_interval_.add_point (pitch);
       if (expand_dir)
        causes_[expand_dir] = nr;
index 84d4911498525bcabf2decdb443af58a6e5c14a7..3043bbff07a8f9c5bec36394175da7bc71c386a2 100644 (file)
@@ -31,7 +31,12 @@ Pitch_interval::is_empty () const
 Direction
 Pitch_interval::add_point (Pitch p)
 {
-  if (at (LEFT).tone_pitch () > p.tone_pitch ())
+  if (is_empty())
+    {
+      at (LEFT) = at (RIGHT) = p;
+      return CENTER;
+    }
+  else if (at (LEFT).tone_pitch () > p.tone_pitch ())
     {
       at (LEFT) = p;
       return LEFT;
@@ -67,7 +72,12 @@ Pitch_lexicographic_interval::is_empty () const
 Direction
 Pitch_lexicographic_interval::add_point (Pitch p)
 {
-  if (at (LEFT) > p)
+  if (is_empty())
+    {
+      at (LEFT) = at (RIGHT) = p;
+      return CENTER;
+    }
+  else if (at (LEFT) > p)
     {
       at (LEFT) = p;
       return LEFT;