]> git.donarmstrong.com Git - lilypond.git/blob - lily/ledger-line-engraver.cc
* lily/ledger-line-engraver.cc: new file.
[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
11 #include "group-interface.hh"
12 #include "spanner.hh"
13 #include "engraver.hh"
14 #include "ambitus.hh"
15
16 class Ledger_line_engraver : public Engraver
17 {
18   Spanner * span_;
19
20 public:
21   TRANSLATOR_DECLARATIONS (Ledger_line_engraver);
22
23 protected:
24   virtual void finalize ();
25   virtual void process_music ();
26   virtual void acknowledge_grob (Grob_info);
27 };
28
29 Ledger_line_engraver::Ledger_line_engraver()
30 {
31   span_ = 0;
32 }
33
34 void
35 Ledger_line_engraver::process_music ()
36 {
37   if (!span_)
38     {
39       span_ = make_spanner("LedgerLineSpanner", SCM_EOL);
40   
41       span_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
42     }
43 }
44
45 void
46 Ledger_line_engraver::finalize ()
47 {
48   if (span_)
49     span_->set_bound (RIGHT,unsmob_grob (get_property ("currentCommandColumn")));
50 }
51
52
53 void
54 Ledger_line_engraver::acknowledge_grob (Grob_info s)
55 {
56   Pointer_group_interface::add_grob (span_, ly_symbol2scm ("note-heads"),
57                                      s.grob_);
58 }
59 ENTER_DESCRIPTION (Ledger_line_engraver,
60                    "Creates spanner to draw ledger lines",
61                    /* creats*/       "LedgerLineSpanner",
62                    /* accepts */     "",
63                    /* acks  */      "custos-interface note-head-interface", // ledgered-interface? 
64                    /* reads */       "",
65                    /* write */       "")