pitch-interval.cc: fixed empty interval case of add_point()
ambitus-engraver.cc: Handle empty interval explicitly
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;
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;
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;