]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/dynamic-engraver.cc
release: 1.3.74
[lilypond.git] / lily / dynamic-engraver.cc
index 8224b1f6f6939f39d2691f2c9764fd4b213ea6d9..cfd5eae9a234c79b72bc0525074bda483c825112 100644 (file)
@@ -7,22 +7,15 @@
 */
 #include "debug.hh"
 #include "dimensions.hh"
-#include "dimension-cache.hh"
 #include "crescendo.hh"
 #include "musical-request.hh"
-#include "lookup.hh"
-#include "paper-def.hh"
 #include "paper-column.hh"
-#include "staff-symbol.hh"
 #include "note-column.hh"
 #include "item.hh"
 #include "side-position-interface.hh"
 #include "engraver.hh"
-#include "stem.hh"
-#include "rhythmic-head.hh"
 #include "group-interface.hh"
 #include "directional-element-interface.hh"
-#include "staff-symbol-referencer.hh"
 #include "translator-group.hh"
 #include "axis-group-interface.hh"
 
@@ -40,8 +33,8 @@
 class Dynamic_engraver : public Engraver
 {
   Item * text_p_;
-  Crescendo * finished_cresc_p_;
-  Crescendo * cresc_p_;
+  Spanner * finished_cresc_p_;
+  Spanner * cresc_p_;
 
   Text_script_req* text_req_l_;
   
@@ -127,12 +120,11 @@ Dynamic_engraver::do_process_music ()
        {
          line_spanner_ = new Spanner (get_property ("basicDynamicLineSpannerProperties"));
 
-         Side_position_interface (line_spanner_).set_axis (Y_AXIS);
-         Axis_group_interface (line_spanner_).set_interface ();
-         Axis_group_interface (line_spanner_).set_axes (Y_AXIS, Y_AXIS);
-         announce_element (Score_element_info
-                           (line_spanner_,
-                            text_req_l_ ? text_req_l_ : accepted_spanreqs_drul_[START]));
+         Side_position::set_axis (line_spanner_, Y_AXIS);
+         Axis_group_interface::set_interface (line_spanner_);
+         Axis_group_interface::set_axes (line_spanner_, Y_AXIS, Y_AXIS);
+         announce_element (line_spanner_,
+                            text_req_l_ ? text_req_l_ : accepted_spanreqs_drul_[START]);
 
        }
     }
@@ -177,18 +169,18 @@ Dynamic_engraver::do_process_music ()
       if (Direction d=text_req_l_->get_direction ())
        Directional_element_interface (line_spanner_).set (d);
 
-      Axis_group_interface (line_spanner_).add_element (text_p_);
+      Axis_group_interface::add_element (line_spanner_, text_p_);
 
-      text_p_->add_offset_callback (Side_position_interface::aligned_on_self,
+      text_p_->add_offset_callback (Side_position::aligned_on_self,
                                    Y_AXIS);
-      announce_element (Score_element_info (text_p_, text_req_l_));
+      announce_element (text_p_, text_req_l_);
     }
 
   if (accepted_spanreqs_drul_[STOP])
     {
       if (!cresc_p_)
        {
-         accepted_spanreqs_drul_[STOP]->warning
+         accepted_spanreqs_drul_[STOP]->origin ()->warning
            (_ ("can't find start of (de)crescendo"));
        }
       else
@@ -205,7 +197,7 @@ Dynamic_engraver::do_process_music ()
     {
       if (current_cresc_req_)
        {
-         accepted_spanreqs_drul_[START]->warning
+         accepted_spanreqs_drul_[START]->origin ()->warning
            (current_cresc_req_->span_dir_ == 1
             ?
             _ ("already have a crescendo")
@@ -214,7 +206,8 @@ Dynamic_engraver::do_process_music ()
       else
        {
          current_cresc_req_ = accepted_spanreqs_drul_[START];
-         cresc_p_  = new Crescendo (get_property ("basicCrescendoProperties"));
+         cresc_p_  = new Spanner (get_property ("basicCrescendoProperties"));
+         Crescendo::set_interface (cresc_p_);
          cresc_p_->set_elt_property
            ("grow-direction",
             gh_int2scm ((accepted_spanreqs_drul_[START]->span_type_str_ == "crescendo")
@@ -263,17 +256,17 @@ Dynamic_engraver::do_process_music ()
          if (text_p_)
            {
              index_set_cell (cresc_p_->get_elt_property ("dynamic-drul"),
-                             LEFT, SCM_BOOL_T);
+                             LEFT, text_p_->self_scm ());
              if (finished_cresc_p_)
                index_set_cell (finished_cresc_p_->get_elt_property ("dynamic-drul"),
-                               RIGHT, SCM_BOOL_T);
+                               RIGHT, text_p_->self_scm ());
            }
 
-         Axis_group_interface (line_spanner_).add_element (cresc_p_);
+         Axis_group_interface::add_element (line_spanner_, cresc_p_);
          cresc_p_->set_elt_property ("self-alignment-Y", gh_int2scm (0));
          cresc_p_->add_offset_callback
-           (Side_position_interface::aligned_on_self, Y_AXIS);
-         announce_element (Score_element_info (cresc_p_, accepted_spanreqs_drul_[START]));
+           (Side_position::aligned_on_self, Y_AXIS);
+         announce_element (cresc_p_, accepted_spanreqs_drul_[START]);
        }
     }
 }
@@ -293,7 +286,7 @@ Dynamic_engraver::do_removal_processing ()
     {
       typeset_element (cresc_p_ );
       finished_cresc_p_ = cresc_p_;
-      current_cresc_req_->warning (_ ("unterminated (de)crescendo"));
+      current_cresc_req_->origin ()->warning (_ ("unterminated (de)crescendo"));
     }
   if (line_spanner_)
     {
@@ -318,7 +311,7 @@ Dynamic_engraver::typeset_all ()
     }
   if (finished_line_spanner_)
     {
-      Side_position_interface (finished_line_spanner_).add_staff_support ();
+      Side_position::add_staff_support (finished_line_spanner_);
 
       if (!finished_line_spanner_->get_bound (LEFT))
        {
@@ -339,12 +332,12 @@ Dynamic_engraver::typeset_all ()
 void
 Dynamic_engraver::acknowledge_element (Score_element_info i)
 {
-  if (Note_column* n = dynamic_cast<Note_column*> (i.elem_l_))
+  if (Note_column::has_interface (i.elem_l_))
     {
       if (line_spanner_)
        {
-         Side_position_interface (line_spanner_).add_support (n);
-         add_bound_item (line_spanner_,n);
+         Side_position::add_support (line_spanner_,i.elem_l_);
+         add_bound_item (line_spanner_,dynamic_cast<Item*>(i.elem_l_));
        }
     }
 }