]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/script-engraver.cc
release: 1.1.29
[lilypond.git] / lily / script-engraver.cc
index 435e312729ed365241da483aa725374fca0c64c1..921b43c0e7b9b32dcade45c1fa0c06c546f56c64 100644 (file)
@@ -1,7 +1,7 @@
 /*
-  script-reg.cc -- implement Script_engraver
+  script-engraver.cc -- implement Script_engraver
 
-  (c)  1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+  (c)  1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
 */
 
 #include "script-engraver.hh"
@@ -19,19 +19,19 @@ Script_engraver::Script_engraver()
 }
 
 bool
-Script_engraver::do_try_request (Request *r_l)
+Script_engraver::do_try_music (Music *r_l)
 {
-  if (!r_l->access_Musical_req () || ! r_l->access_Musical_req ()->access_Musical_script_req ())
-    return false ;
-  
-  for (int i=0; i < script_req_l_arr_.size(); i++) 
+  if (Musical_script_req *mr = dynamic_cast <Musical_script_req *> (r_l))
     {
-      if (r_l->equal_b (script_req_l_arr_[i]))
-       return true;
+      for (int i=0; i < script_req_l_arr_.size(); i++) 
+       {
+         if (script_req_l_arr_[i]->equal_b (mr))
+           return true;
+       }
+      script_req_l_arr_.push (mr);
+      return true;
     }
-  script_req_l_arr_.push (r_l->access_Script_req ());
-  
-  return true;
+  return false;
 }
 
 void
@@ -61,13 +61,19 @@ Script_engraver::do_pre_move_processing()
       if (!script_p->specs_p_->inside_b())
        script_p->add_support (s_l);
 
-      if (script_p->specs_p_->is_type_b (Text_def::static_name ()))
+      if (Text_def*td_l = dynamic_cast<Text_def *> (script_p->specs_p_)) // UGH
        {
-         Text_def * td_l = (Text_def*)script_p->specs_p_;
-         Scalar style = get_property ("textstyle");
-         if (style.to_bool ())
+         if (!td_l->style_str_.length_i ())
            {
-             td_l->style_str_= style;
+             Scalar style = get_property ("textstyle", 0);
+             if (style.to_bool ())
+               td_l->style_str_= style;
+           }
+         // urg, what if this is already set? in-band signaling...
+         Scalar alignment = get_property ("textalignment", 0);
+         if (alignment.isnum_b())
+           {
+             td_l->align_dir_= (Direction)(int)alignment;
            }
        }
       typeset_element (script_p);
@@ -82,5 +88,5 @@ Script_engraver::do_post_move_processing()
 }
 
 
-IMPLEMENT_IS_TYPE_B1(Script_engraver,Engraver);
+
 ADD_THIS_TRANSLATOR(Script_engraver);