]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/dynamic-engraver.cc
* configure.in: Test for and accept lmodern if EC fonts not found.
[lilypond.git] / lily / dynamic-engraver.cc
index 71dfcce857cadd90f9e1be69bd26eb58b92d7110..467573700590f52b538c82dabc4ab6e902d32c2c 100644 (file)
 #include "dimensions.hh"
 #include "directional-element-interface.hh"
 #include "engraver.hh"
-#include "event.hh"
-#include "group-interface.hh"
 #include "hairpin.hh"
 #include "interval.hh"
-#include "item.hh"
-#include "slur.hh"
 #include "note-column.hh"
 #include "paper-column.hh"
 #include "script-interface.hh"
@@ -45,7 +41,6 @@ class Dynamic_engraver : public Engraver
 {
   Item *script_;
   Spanner *line_spanner_;
-  Spanner *slur_;
   Spanner *cresc_;
 
   Spanner *finished_line_spanner_;
@@ -77,7 +72,6 @@ protected:
 Dynamic_engraver::Dynamic_engraver ()
 {
   script_ = 0;
-  slur_ = 0;
   finished_cresc_ = 0;
   line_spanner_ = 0;
   finished_line_spanner_ = 0;
@@ -136,7 +130,6 @@ Dynamic_engraver::process_music ()
     Note: line-spanner must always have at least same duration
     as (de)crecsendo, b.o. line-breaking.
   */
-
   
 
   /*
@@ -258,7 +251,7 @@ Dynamic_engraver::process_music ()
              /*
                FIXME: use get_markup () to check type.
              */
-             if (scm_is_string (s) || ly_c_pair_p (s))
+             if (scm_is_string (s) || scm_is_pair (s))
                {
                  cresc_->set_property ("edge-text",
                                        scm_cons (s, scm_makfrom0str ("")));
@@ -267,13 +260,13 @@ Dynamic_engraver::process_music ()
                }
            }
 
-         cresc_->set_bound (LEFT, script_
-                            ? script_
-                            : unsmob_grob (get_property ("currentMusicalColumn")));
-
+         if (script_)
+           {
+             cresc_->set_bound (LEFT, script_);
+             add_bound_item (line_spanner_, cresc_->get_bound (LEFT));
+           }
+         
          Axis_group_interface::add_element (line_spanner_, cresc_);
-
-         add_bound_item (line_spanner_, cresc_->get_bound (LEFT));
        }
     }
 }
@@ -284,12 +277,17 @@ Dynamic_engraver::stop_translation_timestep ()
   typeset_all ();
   if (!current_cresc_ev_)
     {
-      
       finished_line_spanner_ = line_spanner_;
       line_spanner_ = 0;
       typeset_all ();
     }
 
+  if (cresc_ && !cresc_->get_bound (LEFT))
+    {
+      cresc_->set_bound (LEFT, unsmob_grob (get_property ("currentMusicalColumn")));
+      add_bound_item (line_spanner_, cresc_->get_bound (LEFT));
+    }
+  
   script_ev_ = 0;
   accepted_spanreqs_drul_[START] = 0;
   accepted_spanreqs_drul_[STOP] = 0;
@@ -393,9 +391,18 @@ Dynamic_engraver::acknowledge_grob (Grob_info info)
       if (script_ && !script_->get_parent (X_AXIS))
        {
          SCM head = scm_last_pair (info.grob_->get_property ("note-heads"));
-         if (ly_c_pair_p (head))
-           script_->set_parent (unsmob_grob (ly_car (head)),  X_AXIS);
+         if (scm_is_pair (head))
+           script_->set_parent (unsmob_grob (scm_car (head)),  X_AXIS);
+       }
+
+
+
+      if (cresc_ && !cresc_->get_bound (LEFT))
+       {
+         cresc_->set_bound (LEFT, info.grob_);
+         add_bound_item (line_spanner_, cresc_->get_bound (LEFT));
        }
+        
     }
   else if (Script_interface::has_interface (info.grob_) && script_)
     {
@@ -411,8 +418,6 @@ Dynamic_engraver::acknowledge_grob (Grob_info info)
          < scm_to_int (script_->get_property ("script-priority")))
        Side_position_interface::add_support (line_spanner_, info.grob_);
     }
-  else if (Slur::has_interface (info.grob_))
-    slur_ = dynamic_cast<Spanner*> (info.grob_);
 }
 
 ENTER_DESCRIPTION (Dynamic_engraver,
@@ -424,6 +429,6 @@ ENTER_DESCRIPTION (Dynamic_engraver,
                  
 /* creats*/       "DynamicLineSpanner DynamicText Hairpin TextSpanner",
 /* accepts */     "absolute-dynamic-event crescendo-event decrescendo-event",
-/* acks  */      "note-column-interface script-interface slur-interface",
+/* acks  */      "note-column-interface script-interface",
 /* reads */       "",
 /* write */       "");