]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/score-engraver.cc
release: 1.1.0
[lilypond.git] / lily / score-engraver.cc
index c5350418efa622c5e552380c47ea23fdae424d07..30a38f5360cf12c182909ddee006cb08ec623a68 100644 (file)
@@ -16,7 +16,7 @@
 #include "score-column.hh"
 #include "command-request.hh"
 #include "paper-def.hh"
-#include "main.hh"
+
 
 
 Score_engraver::Score_engraver()
@@ -104,8 +104,8 @@ Score_engraver::do_announces()
          */
        if (announce_info_arr_[i].req_l_) 
          {
-           Musical_req *m = announce_info_arr_[i].req_l_->access_Musical_req ();
-           if (m && m->access_Rhythmic_req ()) 
+           Musical_req *m =dynamic_cast <Musical_req *> ( announce_info_arr_[i].req_l_);
+           if (m && dynamic_cast <Rhythmic_req *> (m)) 
              {
                musical_column_l_->add_duration (m->duration());
              }
@@ -118,23 +118,22 @@ Score_engraver::do_announces()
 void
 Score_engraver::typeset_element (Score_element *elem_p)
 {
-  elem_p_arr_.push(elem_p);
+  elem_p_arr_.push (elem_p);
 }
 
+
 void
 Score_engraver::typeset_all()
 {
   for  (int i =0; i < elem_p_arr_.size(); i++) 
     {
       Score_element * elem_p = elem_p_arr_[i];
-      if (elem_p->access_Spanner ()) 
+      if (dynamic_cast <Spanner *> (elem_p)) 
        {
-         Spanner *s = elem_p->access_Spanner ();
+         Spanner *s = dynamic_cast <Spanner *> (elem_p);
          pscore_p_->typeset_unbroken_spanner (s);
 
-
-
-                 /*
+           /*
            do something sensible if spanner not 
            spanned on 2 items.
           */
@@ -149,7 +148,7 @@ Score_engraver::typeset_all()
        }
       else 
        {
-         Item *item_p = elem_p->access_Item ();
+         Item *item_p = dynamic_cast <Item *> (elem_p);
          pscore_p_->typeset_element (item_p);
          if (!item_p->axis_group_l_a_[X_AXIS]) {
            if (item_p->breakable_b_) 
@@ -229,7 +228,6 @@ Score_engraver::get_staff_info() const
 }
 
 
-
 Music_output*
 Score_engraver::get_output_p ()
 {
@@ -243,13 +241,13 @@ Score_engraver::do_try_request (Request*r)
 {
   bool gotcha = Engraver_group_engraver::do_try_request (r);  
 
-  if (gotcha || !r->access_Command_req ())
+  if (gotcha || !dynamic_cast <Command_req *> (r))
     return gotcha;
 
-  Command_req * c = r->access_Command_req ();
-  if (c->access_Break_req ())
+  Command_req * c = dynamic_cast <Command_req *> (r);
+  if (dynamic_cast <Break_req *> (c))
     {
-      Break_req* b = (Break_req*)c->access_Break_req ();
+      Break_req* b = (Break_req*)dynamic_cast <Break_req *> (c);
       if (b->penalty_i_ <= Break_req::DISALLOW)
        break_penalty_i_ = b->penalty_i_;
       else if (b->penalty_i_ >= Break_req::FORCE)
@@ -268,23 +266,8 @@ void
 Score_engraver::do_add_processing ()
 {
   Translator_group::do_add_processing ();
-  //assert (output_def_l_->is_type_b (Paper_def::static_name ()));
-  // urg
-  pscore_p_ = output_def_l_->paper_score_p ();
-  //  assert (pscore_p_);
-  // urg, via parser a Paper_def gets constructed
-  // this should never happen, but can't be prevented (Paper_def can't be
-  // abstract bo virtual_copy_cons etc.
-  if (!pscore_p_)
-    {
-      printf ("\nBRAAK\n");
-      output_def_l_ = global_paper_l->paper_l ()->clone ();
-      //      pscore_p_ = output_def_l_->paper_score_p ();
-      pscore_p_ = global_paper_l->paper_score_p ();
-      pscore_p_->paper_l_ = global_paper_l->paper_l ();
-    }
-  else
-    pscore_p_->paper_l_ = output_def_l_->paper_l ();
-  assert (pscore_p_->paper_l_);
+  assert (output_def_l_->is_type_b (Paper_def::static_name ()));
   assert (!daddy_trans_l_);
+  pscore_p_ = new Paper_score;
+  pscore_p_->paper_l_ = (Paper_def*)output_def_l_;
 }