]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/instrument-name-engraver.cc
release: 1.3.61
[lilypond.git] / lily / instrument-name-engraver.cc
index e16a53c9273a1f674a510a6c7628d1ea6969c211..010db52474e89e2f3ae45dba9d550541135bd7c0 100644 (file)
@@ -1,3 +1,4 @@
+
 /*   
   new-staff-margin-engraver.cc --  implement Instrument_name_engraver
   
@@ -8,13 +9,15 @@
  */
 
 #include "engraver.hh"
-#include "text-item.hh"
+#include "item.hh"
 #include "bar.hh"
-#include "span-bar.hh"
+#include "system-start-delimiter.hh"
+#include "side-position-interface.hh"
 
 class Instrument_name_engraver : public Engraver
 {
-  Text_item *text_;
+  Item *text_;
+  System_start_delimiter * delim_ ;
 
   void create_text (SCM s);
 public:
@@ -30,6 +33,7 @@ ADD_THIS_TRANSLATOR(Instrument_name_engraver);
 Instrument_name_engraver::Instrument_name_engraver ()
 {
   text_ = 0;
+  delim_ =0;
 }
 
 
@@ -38,6 +42,9 @@ Instrument_name_engraver::do_pre_move_processing ()
 {
   if (text_)
     {
+      text_->add_offset_callback (Side_position_interface::centered_on_parent,
+                                 Y_AXIS);
+
       typeset_element (text_);
       text_ = 0;
     }
@@ -48,16 +55,14 @@ Instrument_name_engraver::create_text (SCM txt)
 {
   if(!text_)
     {
-      text_ = new Text_item;
+      text_ = new Item (get_property ("basicInstrumentNameProperties"));
       text_->set_elt_property ("text", txt);
-      text_->set_elt_property ("breakable", SCM_BOOL_T);
 
       /*
        TODO: use more lispish names for break-align-symbols
        */
-      text_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Instrument_name"));
-      text_->set_elt_property ("visibility-lambda",
-                              scm_eval (ly_symbol2scm ("begin-of-line-visible")));
+      if (delim_)
+       text_->set_parent (delim_, Y_AXIS);
 
       announce_element (Score_element_info (text_,0));
     }
@@ -76,12 +81,14 @@ Instrument_name_engraver::acknowledge_element (Score_element_info i)
       if (Bar* b= dynamic_cast<Bar*> (i.elem_l_))
        {
          create_text (s);
-         if (Span_bar* s= dynamic_cast<Span_bar*> (b))
-           {
-             text_->set_parent (s, Y_AXIS);
-           }
        }
     }
+
+  if (dynamic_cast <System_start_delimiter*> (i.elem_l_)
+      && i.origin_trans_l_->daddy_trans_l_ == daddy_trans_l_)
+    {
+      delim_ = dynamic_cast<System_start_delimiter*> (i.elem_l_);
+    }
 }