]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/staff-symbol-engraver.cc
release: 1.3.55
[lilypond.git] / lily / staff-symbol-engraver.cc
index ae325bd35a0db254e6030283dfd61ac1ba89d390..e5bc48cd622a82126bd16bcbd6be411fdcb2fe08 100644 (file)
@@ -1,9 +1,9 @@
 /*
-  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--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "staff-symbol.hh"
@@ -32,7 +32,6 @@ protected:
        
 };
 
-ADD_THIS_TRANSLATOR (Staff_symbol_engraver);
 
 Staff_symbol_engraver::~Staff_symbol_engraver()
 {
@@ -47,15 +46,24 @@ Staff_symbol_engraver::Staff_symbol_engraver()
 void
 Staff_symbol_engraver::do_creation_processing()
 {
-  span_p_ = new Staff_symbol;
-  span_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ());
+  span_p_ = new Staff_symbol (get_property ("staffSymbolBasicProperties"));
+  span_p_->set_bound(LEFT,get_staff_info().command_pcol_l ());
+
   announce_element (Score_element_info (span_p_, 0));
 }
 
 void
 Staff_symbol_engraver::do_removal_processing()
 {
-  span_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ());
+  SCM n = get_property ("numberOfStaffLines");
+  SCM ss = get_property ("staffSpace");
+
+  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;
 }
@@ -63,15 +71,10 @@ Staff_symbol_engraver::do_removal_processing()
 void
 Staff_symbol_engraver::acknowledge_element (Score_element_info s)
 {
-  s.elem_l_->set_elt_property ("staff-symbol", span_p_->self_scm_);
+  s.elem_l_->set_elt_pointer ("staff-symbol", span_p_->self_scm_);
   s.elem_l_->add_dependency (span_p_); // UGH. UGH. UGH 
-
-  SCM ss =s.elem_l_->remove_elt_property ("staff-support");
-  if (to_boolean (ss))
-    {
-      Side_position_interface si (s.elem_l_);
-      if (si.has_interface_b ())
-       si.add_support (span_p_);
-    }
 }
 
+
+ADD_THIS_TRANSLATOR(Staff_symbol_engraver);
+