X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Frhythmic-column-engraver.cc;h=f095ef8e1e069d176fa32f54db56b3385a7b37c1;hb=0c54db94e3374140be744305374583aa5ba8cb1d;hp=7099ecae8b804247a947184e2c19892145f2087b;hpb=a6ee9dcd388111e842064a8d46ab06c4897a00d2;p=lilypond.git diff --git a/lily/rhythmic-column-engraver.cc b/lily/rhythmic-column-engraver.cc index 7099ecae8b..f095ef8e1e 100644 --- a/lily/rhythmic-column-engraver.cc +++ b/lily/rhythmic-column-engraver.cc @@ -1,24 +1,18 @@ /* - rhythmic-column-grav.cc -- implement Rhythmic_column_engraver + rhythmic-column-engraver.cc -- implement Rhythmic_column_engraver source file of the GNU LilyPond music typesetter - (c) 1997--2002 Han-Wen Nienhuys + (c) 1997--2005 Han-Wen Nienhuys */ - -#include "slur.hh" #include "engraver.hh" #include "rhythmic-head.hh" #include "stem.hh" #include "note-column.hh" #include "dot-column.hh" -#include "musical-request.hh" -#include "item.hh" #include "group-interface.hh" - - /* this engraver glues together stems, rests and note heads into a NoteColumn grob. @@ -55,25 +49,24 @@ class Rhythmic_column_engraver :public Engraver Grob * last_spacing_; Grob * spacing_; - TRANSLATOR_DECLARATIONS(Rhythmic_column_engraver); + TRANSLATOR_DECLARATIONS (Rhythmic_column_engraver); protected: virtual void acknowledge_grob (Grob_info); virtual void process_acknowledged_grobs (); virtual void stop_translation_timestep (); - virtual void start_translation_timestep (); }; Rhythmic_column_engraver::Rhythmic_column_engraver () { - spacing_ =0 ; + spacing_ = 0 ; last_spacing_ = 0; - stem_ =0; - note_column_=0; - dotcol_ =0; + stem_ = 0; + note_column_ = 0; + dotcol_ = 0; } @@ -84,24 +77,24 @@ Rhythmic_column_engraver::process_acknowledged_grobs () { if (!note_column_) { - note_column_ = new Item (get_property ("NoteColumn")); - announce_grob(note_column_, SCM_EOL); + note_column_ = make_item ("NoteColumn", rheads_[0]->self_scm ()); + spacing_ = make_item ("NoteSpacing", SCM_EOL); + spacing_->set_property ("left-items", scm_cons (note_column_->self_scm (), SCM_EOL)); - spacing_ = new Item (get_property ("NoteSpacing")); - spacing_->set_grob_property ("left-items", gh_cons (note_column_->self_scm (), SCM_EOL)); - announce_grob(spacing_, SCM_EOL); - if (last_spacing_) - { - Pointer_group_interface::add_grob (last_spacing_, - ly_symbol2scm ("right-items" ), - note_column_); - } + + + if (last_spacing_) + { + Pointer_group_interface::add_grob (last_spacing_, + ly_symbol2scm ("right-items" ), + note_column_); + } } - for (int i=0; i < rheads_.size (); i++) + for (int i = 0; i < rheads_.size (); i++) { if (!rheads_[i]->get_parent (X_AXIS)) Note_column::add_head (note_column_, rheads_[i]); @@ -151,32 +144,24 @@ Rhythmic_column_engraver::acknowledge_grob (Grob_info i) void Rhythmic_column_engraver::stop_translation_timestep () { - if (note_column_) - { - typeset_grob (note_column_); - note_column_ =0; - } + note_column_ = 0; if (spacing_) { - typeset_grob (spacing_); last_spacing_ = spacing_; - spacing_ =0; + spacing_ = 0; } -} - -void -Rhythmic_column_engraver::start_translation_timestep () -{ - dotcol_ =0; - stem_ =0; + + dotcol_ = 0; + stem_ = 0; } -ENTER_DESCRIPTION(Rhythmic_column_engraver, +ADD_TRANSLATOR (Rhythmic_column_engraver, /* descr */ "Generates NoteColumn, an objects that groups stems, noteheads and rests.", /* creats*/ "NoteColumn NoteSpacing", -/* acks */ "stem-interface rhythmic-head-interface dot-column-interface", +/* accepts */ "", +/* acks */ "stem-interface rhythmic-head-interface dot-column-interface", /* reads */ "", /* write */ "");