source file of the GNU LilyPond music typesetter
- (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
#include "engraver.hh"
#include "rhythmic-head.hh"
#include "stem.hh"
#include "note-column.hh"
+#include "item.hh"
#include "dot-column.hh"
#include "pointer-group-interface.hh"
class Rhythmic_column_engraver : public Engraver
{
- Link_array<Grob> rheads_;
+ vector<Grob*> rheads_;
Grob *stem_;
Grob *note_column_;
Grob *dotcol_;
- Grob *last_spacing_;
- Grob *spacing_;
-
- void add_spacing_item (Grob *);
-
TRANSLATOR_DECLARATIONS (Rhythmic_column_engraver);
protected:
Rhythmic_column_engraver::Rhythmic_column_engraver ()
{
- spacing_ = 0;
- last_spacing_ = 0;
stem_ = 0;
note_column_ = 0;
dotcol_ = 0;
}
-void
-Rhythmic_column_engraver::add_spacing_item (Grob *g)
-{
- if (spacing_)
- {
- Pointer_group_interface::add_grob (spacing_,
- ly_symbol2scm ("left-items"),
- g);
- if (last_spacing_)
- {
- Pointer_group_interface::add_grob (last_spacing_,
- ly_symbol2scm ("right-items"),
- g);
- }
- }
-}
void
Rhythmic_column_engraver::process_acknowledged ()
{
if (!note_column_)
{
note_column_ = make_item ("NoteColumn", rheads_[0]->self_scm ());
-
- spacing_ = make_item ("NoteSpacing", SCM_EOL);
- add_spacing_item (note_column_);
}
for (vsize i = 0; i < rheads_.size (); i++)
Rhythmic_column_engraver::stop_translation_timestep ()
{
note_column_ = 0;
-
- if (spacing_)
- {
- last_spacing_ = spacing_;
- spacing_ = 0;
- }
-
dotcol_ = 0;
stem_ = 0;
}
ADD_TRANSLATOR (Rhythmic_column_engraver,
/* doc */ "Generates NoteColumn, an objects that groups stems, noteheads and rests.",
- /* create */ "NoteColumn NoteSpacing",
- /* accept */ "",
+ /* create */ "NoteColumn",
/* read */ "",
/* write */ "");