2 rhythmic-column-grav.cc -- implement Rhythmic_column_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
9 #include "dimension-cache.hh"
11 #include "rhythmic-column-engraver.hh"
12 #include "note-head.hh"
14 #include "note-column.hh"
15 #include "dot-column.hh"
16 #include "musical-request.hh"
18 Rhythmic_column_engraver::Rhythmic_column_engraver()
27 Rhythmic_column_engraver::process_acknowledged ()
29 if (rhead_l_arr_
.size ())
33 ncol_p_
= new Note_column
;
34 announce_element (Score_element_info (ncol_p_
, 0));
37 for (int i
=0; i
< rhead_l_arr_
.size (); i
++)
39 if (!rhead_l_arr_
[i
]->parent_l(X_AXIS
))
40 ncol_p_
->add_head (rhead_l_arr_
[i
]);
42 rhead_l_arr_
.set_size (0);
49 && !dotcol_l_
->parent_l(X_AXIS
))
51 ncol_p_
->set_dotcol (dotcol_l_
);
55 && !stem_l_
->parent_l(X_AXIS
))
57 ncol_p_
->set_stem (stem_l_
);
61 SCM wg
= get_property ("weAreGraceContext",0);
62 bool wegrace
= to_boolean (wg
);
65 for (int i
=0; i
< grace_slur_endings_
.size(); i
++)
66 grace_slur_endings_
[i
]->add_column (ncol_p_
);
67 grace_slur_endings_
.clear ();
72 Rhythmic_column_engraver::acknowledge_element (Score_element_info i
)
74 SCM wg
= get_property ("weAreGraceContext",0);
75 bool wegrace
= to_boolean (wg
);
77 (i
.elem_l_
->get_elt_property ("grace") != SCM_UNDEFINED
))
78 && !dynamic_cast<Slur
*> (i
.elem_l_
))
81 Item
* item
= dynamic_cast <Item
*> (i
.elem_l_
);
82 if (Stem
*s
=dynamic_cast<Stem
*> (item
))
86 else if (Rhythmic_head
*r
=dynamic_cast<Rhythmic_head
*> (item
))
88 rhead_l_arr_
.push (r
);
90 else if (Dot_column
*d
=dynamic_cast<Dot_column
*> (item
))
94 else if (Slur
*s
= dynamic_cast<Slur
*> (i
.elem_l_
))
97 end slurs starting on grace notes
100 if (to_boolean (s
->get_elt_property ("grace")))
101 grace_slur_endings_
.push (s
);
106 Rhythmic_column_engraver::do_pre_move_processing()
110 typeset_element (ncol_p_
);
116 Rhythmic_column_engraver::do_post_move_processing()
118 grace_slur_endings_
.clear ();
123 ADD_THIS_TRANSLATOR(Rhythmic_column_engraver
);