X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fnote-heads-engraver.cc;h=bd8b1c8a86810d6223bfb2750561d4fbc2ebfd0b;hb=7095841e441b2ad2d8ca798e6d1d241e57bdd0c5;hp=4bad6447d884732662f53a49b4f7823e27109e37;hpb=a6ee9dcd388111e842064a8d46ab06c4897a00d2;p=lilypond.git diff --git a/lily/note-heads-engraver.cc b/lily/note-heads-engraver.cc index 4bad6447d8..bd8b1c8a86 100644 --- a/lily/note-heads-engraver.cc +++ b/lily/note-heads-engraver.cc @@ -1,13 +1,13 @@ /* head-grav.cc -- part of GNU LilyPond - (c) 1997--2002 Han-Wen Nienhuys + (c) 1997--2003 Han-Wen Nienhuys */ #include #include "rhythmic-head.hh" #include "paper-def.hh" -#include "musical-request.hh" +#include "event.hh" #include "dots.hh" #include "dot-column.hh" #include "staff-symbol-referencer.hh" @@ -18,57 +18,40 @@ /** make balls and rests */ + class Note_heads_engraver : public Engraver { Link_array notes_; Link_array dots_; - Link_array note_reqs_; + Link_array note_reqs_; public: TRANSLATOR_DECLARATIONS(Note_heads_engraver); protected: - virtual void start_translation_timestep (); virtual bool try_music (Music *req) ; virtual void process_music (); virtual void stop_translation_timestep (); - -private: - bool in_ligature; }; Note_heads_engraver::Note_heads_engraver() { - in_ligature = 0; } bool Note_heads_engraver::try_music (Music *m) { - if (Note_req * n =dynamic_cast (m)) + if (m->is_mus_type ("note-event")) { - note_reqs_.push (n); + note_reqs_.push (m); return true; } - else if (dynamic_cast (m)) - { - return note_reqs_.size (); - } - else if (Span_req *req_ = dynamic_cast (m)) - { - if (scm_equal_p (req_->get_mus_property ("span-type"), - ly_str02scm ("abort")) == SCM_BOOL_T) - { - in_ligature = 0; - } - else if (scm_equal_p (req_->get_mus_property ("span-type"), - ly_str02scm ("ligature")) == SCM_BOOL_T) - { - in_ligature = (req_->get_span_dir () == START); - } - } + else if (m->is_mus_type ("busy-playing-event")) + return note_reqs_.size (); + else if (m->is_mus_type ("start-playing-event")) + return note_reqs_.size (); return false; } @@ -79,8 +62,7 @@ Note_heads_engraver::process_music () { for (int i=0; i < note_reqs_.size (); i++) { - Item *note = - new Item (get_property ((in_ligature) ? "LigatureHead" : "NoteHead")); + Item *note = make_item ("NoteHead"); Music * req = note_reqs_[i]; @@ -90,11 +72,11 @@ Note_heads_engraver::process_music () if (dur.dot_count ()) { - Item * d = new Item (get_property ("Dots")); + Item * d = make_item ("Dots"); Rhythmic_head::set_dots (note, d); if (dur.dot_count () - != gh_scm2int (d->get_grob_property ("dot-count"))) + != robust_scm2int (d->get_grob_property ("dot-count"), 0)) d->set_grob_property ("dot-count", gh_int2scm (dur.dot_count ())); d->set_parent (note, Y_AXIS); @@ -129,19 +111,15 @@ Note_heads_engraver::stop_translation_timestep () typeset_grob (dots_[i]); } dots_.clear (); - note_reqs_.clear (); } -void -Note_heads_engraver::start_translation_timestep () -{ -} ENTER_DESCRIPTION(Note_heads_engraver, -/* descr */ "Generate one or more noteheads from Music of type Note_req.", +/* descr */ "Generate noteheads.", /* creats*/ "NoteHead Dots", -/* acks */ "", +/* accepts */ "note-event busy-playing-event ligature-event abort-event", +/* acks */ "", /* reads */ "centralCPosition", /* write */ "");