]> git.donarmstrong.com Git - lilypond.git/blob - lily/ledger-line-engraver.cc
(DECLARE_EVENT_SWALLOWER): ENTER_DESCRIPTION -> ADD_TRANSLATOR
[lilypond.git] / lily / ledger-line-engraver.cc
1 /* 
2   ledger-line-engraver.cc --  implement Ledger_line_engraver =
3   
4   source file of the GNU LilyPond music typesetter
5   
6   (c) 2004 Han-Wen Nienhuys <hanwen@xs4all.nl>
7   
8 */
9
10 #include "group-interface.hh"
11 #include "spanner.hh"
12 #include "engraver.hh"
13
14 class Ledger_line_engraver : public Engraver
15 {
16   Spanner * span_;
17
18 public:
19   TRANSLATOR_DECLARATIONS (Ledger_line_engraver);
20
21 protected:
22   virtual void finalize ();
23   virtual void process_music ();
24   virtual void acknowledge_grob (Grob_info);
25 };
26
27 Ledger_line_engraver::Ledger_line_engraver()
28 {
29   span_ = 0;
30 }
31
32 void
33 Ledger_line_engraver::process_music ()
34 {
35   if (!span_)
36     {
37       span_ = make_spanner("LedgerLineSpanner", SCM_EOL);
38   
39       span_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
40     }
41 }
42
43 void
44 Ledger_line_engraver::finalize ()
45 {
46   if (span_)
47     span_->set_bound (RIGHT,unsmob_grob (get_property ("currentCommandColumn")));
48 }
49
50
51 void
52 Ledger_line_engraver::acknowledge_grob (Grob_info s)
53 {
54   if (!to_boolean (s.grob_->get_property ("no-ledgers")))
55     Pointer_group_interface::add_grob (span_, ly_symbol2scm ("note-heads"),
56                                        s.grob_);
57 }
58 ADD_TRANSLATOR (Ledger_line_engraver,
59                    "Creates the spanner to draw ledger lines, and notices objects that need ledger lines",
60                    /* creats*/       "LedgerLineSpanner",
61                    /* accepts */     "",
62                    /* acks  */      "ledgered-interface", // ledgered-interface? 
63                    /* reads */       "",
64                    /* write */       "")