2 grace-position-engraver.cc -- implement Grace_position_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
10 #include "engraver.hh"
11 #include "grace-align-item.hh"
12 #include "note-head.hh"
13 #include "local-key-item.hh"
15 class Grace_position_engraver:public Engraver
18 VIRTUAL_COPY_CONS(Translator);
19 virtual void acknowledge_element (Score_element_info);
20 virtual void process_acknowledged ();
21 virtual void do_post_move_processing ();
22 Grace_align_item*align_l_;
23 Link_array<Item> support_;
25 Grace_position_engraver();
29 Grace_position_engraver::Grace_position_engraver ()
35 Grace_position_engraver::acknowledge_element (Score_element_info i)
37 if (Grace_align_item*g =dynamic_cast<Grace_align_item*>(i.elem_l_))
41 else if (Note_head * n = dynamic_cast <Note_head*> (i.elem_l_))
45 else if (Local_key_item*it = dynamic_cast<Local_key_item*>(i.elem_l_))
47 if (it->get_elt_property (grace_scm_sym) == SCM_BOOL_F)
50 it->add_dependency (align_l_);
55 Grace_position_engraver::process_acknowledged ()
59 for (int i=0; i < support_.size (); i++)
60 align_l_->add_support (support_[i]);
66 Grace_position_engraver::do_post_move_processing ()
72 ADD_THIS_TRANSLATOR(Grace_position_engraver);