X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Fbeam-engraver.cc;h=609b3798c106314d86b9effafef6f5fc218f93d6;hb=14cb1905eaf37be1f8a5f5222b5c2433e0e80657;hp=288a47494149b9077187d17902b224a791905be3;hpb=16cb456cabf477f6d398ff731aa0f10b60913394;p=lilypond.git diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index 288a474941..609b3798c1 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -46,9 +46,9 @@ protected: /// moment (global time) where beam started. Moment beam_start_mom_; - bool subdivide_beams_; - Moment beat_length_; - + Beaming_options beaming_options_; + Beaming_options finished_beaming_options_; + void typeset_beam (); void set_melisma (bool); @@ -135,13 +135,17 @@ Beam_engraver::process_music () beam_start_location_ = mp; beam_start_mom_ = now_mom (); + beaming_options_.from_context (context ()); beam_info_ = new Beaming_pattern; /* urg, must copy to Auto_beam_engraver too */ } typeset_beam (); if (stop_ev_ && beam_) - announce_end_grob (beam_, stop_ev_->self_scm ()); + { + announce_end_grob (beam_, stop_ev_->self_scm ()); + + } } void @@ -151,8 +155,8 @@ Beam_engraver::typeset_beam () { if (!finished_beam_->get_bound (RIGHT)) finished_beam_->set_bound (RIGHT, finished_beam_->get_bound (LEFT)); - - finished_beam_info_->beamify (context ()); + + finished_beam_info_->beamify (finished_beaming_options_); Beam::set_beaming (finished_beam_, finished_beam_info_); delete finished_beam_info_; @@ -179,7 +183,8 @@ Beam_engraver::stop_translation_timestep () { finished_beam_ = beam_; finished_beam_info_ = beam_info_; - + finished_beaming_options_ = beaming_options_; + stop_ev_ = 0; beam_ = 0; beam_info_ = 0; @@ -210,7 +215,7 @@ Beam_engraver::acknowledge_rest (Grob_info info) if (beam_ && !scm_is_number (info.grob ()->get_property_data ("staff-position"))) { - chain_offset_callback (info.grob(), + chain_offset_callback (info.grob (), Beam::rest_collision_callback_proc, Y_AXIS); } } @@ -266,19 +271,20 @@ ADD_ACKNOWLEDGER (Beam_engraver, rest); ADD_TRANSLATOR (Beam_engraver, /* doc */ - - "Handles Beam events by engraving Beams. If omitted, then notes will be " - "printed with flags instead of beams.", + "Handle @code{Beam} events by engraving beams. If omitted," + " then notes are printed with flags instead of beams.", - /* create */ "Beam", + /* create */ + "Beam ", /* read */ "beamMelismaBusy " "beatLength " - "subdivideBeams " - , + "subdivideBeams ", + /* write */ - "forbidBreak"); + "forbidBreak" + ); class Grace_beam_engraver : public Beam_engraver { @@ -330,18 +336,20 @@ ADD_ACKNOWLEDGER (Grace_beam_engraver, stem); ADD_ACKNOWLEDGER (Grace_beam_engraver, rest); ADD_TRANSLATOR (Grace_beam_engraver, - /* doc */ - - "Handles Beam events by engraving Beams. If omitted, then notes will " - "be printed with flags instead of beams. Only engraves beams when we " - " are at grace points in time. ", + "Handle @code{Beam} events by engraving beams. If omitted," + " then notes are printed with flags instead of beams. Only" + " engraves beams when we are at grace points in time.", - /* create */ "Beam", + /* create */ + "Beam ", + /* read */ "beamMelismaBusy " "beatLength " - "subdivideBeams " - , - /* write */ ""); + "subdivideBeams ", + + /* write */ + "" + );