X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fstaff-symbol-engraver.cc;h=38c39dffc4e5fb5c7048a2dcf160811d0e749596;hb=9458fa215af0294e9c38d62cc3a237a85fe50509;hp=f749d7d007cc099987c738be3e2a7e31534781be;hpb=e7d84e6728ecfdf74d8f214486a29c2aca199819;p=lilypond.git diff --git a/lily/staff-symbol-engraver.cc b/lily/staff-symbol-engraver.cc index f749d7d007..38c39dffc4 100644 --- a/lily/staff-symbol-engraver.cc +++ b/lily/staff-symbol-engraver.cc @@ -1,15 +1,15 @@ /* - staff-sym-reg.cc -- implement Staff_symbol_engraver + staff-symbol-engraver.cc -- implement Staff_symbol_engraver source file of the GNU LilyPond music typesetter - (c) 1997--2000 Han-Wen Nienhuys + (c) 1997--2004 Han-Wen Nienhuys */ -#include "staff-symbol.hh" + #include "score.hh" #include "paper-column.hh" -#include "paper-def.hh" +#include "output-def.hh" #include "side-position-interface.hh" #include "engraver.hh" #include "moment.hh" @@ -18,66 +18,103 @@ Manage the staff symbol. */ class Staff_symbol_engraver : public Engraver { - Staff_symbol *span_p_; public: - VIRTUAL_COPY_CONS(Translator); - Staff_symbol_engraver(); + TRANSLATOR_DECLARATIONS (Staff_symbol_engraver); protected: - virtual ~Staff_symbol_engraver(); - - virtual void acknowledge_element (Score_element_info); - virtual void do_removal_processing(); - virtual void do_creation_processing(); - + Spanner *span_; + + virtual ~Staff_symbol_engraver (); + virtual void acknowledge_grob (Grob_info); + virtual void finalize (); + virtual void process_music (); }; -Staff_symbol_engraver::~Staff_symbol_engraver() +Staff_symbol_engraver::~Staff_symbol_engraver () { - assert (!span_p_); + assert (!span_); } -Staff_symbol_engraver::Staff_symbol_engraver() +Staff_symbol_engraver::Staff_symbol_engraver () { - span_p_ = 0; + span_ = 0; } void -Staff_symbol_engraver::do_creation_processing() +Staff_symbol_engraver::process_music () { - span_p_ = new Staff_symbol; - span_p_->set_bound(LEFT,get_staff_info().command_pcol_l ()); + if (!span_) + { + span_ = make_spanner ("StaffSymbol", SCM_EOL); + + span_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn"))); + + } +} - // ugh, should do generic - span_p_->property_alist_ = get_property ("staffSymbolBasicProperties"); - announce_element (Score_element_info (span_p_, 0)); +void +Staff_symbol_engraver::finalize () +{ + if (span_) + { + span_->set_bound (RIGHT,unsmob_grob (get_property ("currentCommandColumn"))); + } + span_ =0; } void -Staff_symbol_engraver::do_removal_processing() +Staff_symbol_engraver::acknowledge_grob (Grob_info s) { - SCM n = get_property ("numberOfStaffLines"); - SCM ss = get_property ("staffSpace"); + s.grob_->set_property ("staff-symbol", span_->self_scm ()); +} - if (gh_number_p (ss)) - span_p_->set_elt_property ("staff-space", ss); - if (gh_number_p (n)) - span_p_->set_elt_property ("line-count", n); - span_p_->set_bound(RIGHT,get_staff_info().command_pcol_l ()); - typeset_element (span_p_); - span_p_ =0; -} + + +ENTER_DESCRIPTION (Staff_symbol_engraver, +/* descr */ "Create the constellation of five (default) " +"staff lines.", +/* creats*/ "StaffSymbol", +/* accepts */ "", +/* acks */ "grob-interface", +/* reads */ "", +/* write */ ""); + +/****************************************************************/ + + +class Tab_staff_symbol_engraver : public Staff_symbol_engraver +{ +public: + TRANSLATOR_DECLARATIONS (Tab_staff_symbol_engraver); +protected: + virtual void process_music (); +}; void -Staff_symbol_engraver::acknowledge_element (Score_element_info s) +Tab_staff_symbol_engraver::process_music () { - s.elem_l_->set_elt_pointer ("staff-symbol", span_p_->self_scm_); - s.elem_l_->add_dependency (span_p_); // UGH. UGH. UGH + bool init = !span_; + Staff_symbol_engraver::process_music (); + if (init) + { + int k = scm_ilength (get_property ("stringTunings")); + if (k>=0) + span_->set_property ("line-count", scm_int2num (k)); + } } +Tab_staff_symbol_engraver::Tab_staff_symbol_engraver () +{ +} -ADD_THIS_TRANSLATOR(Staff_symbol_engraver); - +ENTER_DESCRIPTION (Tab_staff_symbol_engraver, +/* descr */ "Create a staff-symbol, but look at stringTunings for the number of lines." +"staff lines.", +/* creats*/ "StaffSymbol", +/* accepts */ "", +/* acks */ "grob-interface", +/* reads */ "stringTunings", +/* write */ "");