]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-0.1.42
authorfred <fred>
Sun, 24 Mar 2002 20:05:02 +0000 (20:05 +0000)
committerfred <fred>
Sun, 24 Mar 2002 20:05:02 +0000 (20:05 +0000)
lily/beam-grav.cc
lily/include/beam-grav.hh
lily/include/lily-proto.hh
lily/include/musical-request.hh
lily/musical-request.cc
lily/text-spanner.cc

index 2d931e150fd1a8481c41a2357ffd7fc7b56c68d9..6592166fa2de3ebd3dcd38eedb870b8017d9321b 100644 (file)
@@ -12,8 +12,6 @@
 #include "beam.hh"
 #include "musical-request.hh"
 #include "grouping.hh"
-#include "text-spanner.hh"
-#include "text-def.hh"
 #include "p-col.hh"
 
 Beam_engraver::Beam_engraver()
@@ -21,7 +19,6 @@ Beam_engraver::Beam_engraver()
   span_reqs_drul_[LEFT] = span_reqs_drul_[RIGHT] =0;
   beam_p_ =0;
   current_grouping_p_ =0;
-  plet_spanner_p_ =0;
 }
 
 bool
@@ -50,61 +47,39 @@ Beam_engraver::do_try_request(Request*r)
 void
 Beam_engraver::do_process_requests()
 {
-  if ( !beam_p_ && span_reqs_drul_[LEFT])
-    {
-      current_grouping_p_ = new Rhythmic_grouping;
-      beam_p_ = new Beam;
-      if (span_reqs_drul_[LEFT]->nplet)
-       {
-         plet_spanner_p_ = new Text_spanner;
-         Text_def *defp = new Text_def;
-         plet_spanner_p_->set_support (beam_p_);
-       
-         defp->align_i_ = 0;
-         defp->text_str_ = span_reqs_drul_[LEFT]->nplet;
-         defp->style_str_="italic";
-         plet_spanner_p_->spec_p_  = defp;
-         announce_element (Score_elem_info(plet_spanner_p_,0));
-       }
-
-      Scalar prop = get_property ("beamslopedamping");
-      if (prop.isnum_b ()) 
-       {
-         beam_p_->damping_i_ = prop;
-       }
-
-      prop = get_property ("beamquantisaton");
-      if (prop.isnum_b ()) 
-       {
-         beam_p_->quantisation_ = (Beam::Quantise)(int)prop;
-       }
-     
-      announce_element (Score_elem_info (beam_p_, span_reqs_drul_[LEFT]));
-    }
+  if (beam_p_ || !span_reqs_drul_[LEFT])
+    return;
+
+  current_grouping_p_ = new Rhythmic_grouping;
+  beam_p_ = new Beam;
+
+  Scalar prop = get_property ("beamslopedamping");
+  if (prop.isnum_b ()) 
+    beam_p_->damping_i_ = prop;
+
+  prop = get_property ("beamquantisaton");
+  if (prop.isnum_b ()) 
+    beam_p_->quantisation_ = (Beam::Quantise)(int)prop;
+  announce_element (Score_elem_info (beam_p_, span_reqs_drul_[LEFT]));
 }
 
 void
 Beam_engraver::do_pre_move_processing()
 {
-  if (beam_p_ && span_reqs_drul_[RIGHT]) 
-    {
-      Rhythmic_grouping const * rg_C = get_staff_info().rhythmic_C_;
-      rg_C->extend (current_grouping_p_->interval());
-      beam_p_->set_grouping (*rg_C, *current_grouping_p_);
-      typeset_element (beam_p_);
-      beam_p_ = 0;
-
-      delete current_grouping_p_;
-      current_grouping_p_ = 0;
-
-      span_reqs_drul_[RIGHT] =
-       span_reqs_drul_[LEFT] = 0;
-      if (plet_spanner_p_)
-       {
-         typeset_element (plet_spanner_p_);
-         plet_spanner_p_ =0;
-       }
-    }
+  if (!beam_p_ || !span_reqs_drul_[RIGHT]) 
+    return;
+
+  Rhythmic_grouping const * rg_C = get_staff_info().rhythmic_C_;
+  rg_C->extend (current_grouping_p_->interval());
+  beam_p_->set_grouping (*rg_C, *current_grouping_p_);
+  typeset_element (beam_p_);
+  beam_p_ = 0;
+
+  delete current_grouping_p_;
+  current_grouping_p_ = 0;
+
+  span_reqs_drul_[RIGHT] = span_reqs_drul_[LEFT] = 0;
 }
 
 void
index 027fd92679433b8de6452cfdf3742acd4b891a2d..81b68adfc19b7edfb3b851a7e34907a25dd551d5 100644 (file)
@@ -20,7 +20,6 @@ class Beam_engraver : public Engraver
 {
   Drul_array<Beam_req *> span_reqs_drul_;
   Beam *beam_p_;
-  Text_spanner *plet_spanner_p_;
   Rhythmic_grouping *current_grouping_p_;
 
 public:
index 34059b444780463cbc635499d27b0edc719b47d2..48d8e9872378572662707e05f3458e5c3dba7539 100644 (file)
@@ -41,6 +41,7 @@ struct Beam;
 struct Beam_engraver;
 struct Beam_req;
 struct Blank_req;
+struct Bow;
 struct Box;
 struct Break_align_item;
 struct Bracket_req;
@@ -152,6 +153,9 @@ struct Paper_score;
 struct Paper_def;
 struct Partial_measure_req;
 struct Plet;
+struct Plet_engraver;
+struct Plet_req;
+struct Plet_spanner;
 struct Pulk_voice;
 struct Pulk_voices;
 struct Rational;
@@ -211,6 +215,7 @@ struct Text_gob;
 struct Text_item ;
 struct Text_engraver;
 struct Text_req;
+struct Text_spanner;
 struct Tie;
 struct Tie_engraver;
 struct Tie_req;
index f53fc44de1d96a4ccddd804e1b1c88a2e9d59873..28fa8d04aa45c86caba4551572f370807d25045f 100644 (file)
@@ -37,6 +37,7 @@ public:
   virtual Dynamic_req* dynamic() { return 0; }
   virtual Absolute_dynamic_req * absdynamic() { return 0; }
   virtual Tie_req * tie() { return 0; }
+  virtual Plet_req* plet() { return 0; }
   virtual Span_dynamic_req * span_dynamic() { return 0; }
   virtual Abbreviation_req* abbrev() { return 0; }
   REQUESTMETHODS(Musical_req, musical);
@@ -174,12 +175,9 @@ public:
   
 };
 
-/** Start / stop a beam at this note.  if #nplet# is set, the staff
-will try to put an appropriate number over the beam */
+/** Start / stop a beam at this note */
 class Beam_req  : public Span_req  {
 public:
-  int nplet;
-
   /* *************** */
   REQUESTMETHODS(Beam_req,beam);
 
@@ -213,6 +211,16 @@ public:
 
 };
 
+/// a plet (bracket with) number
+class Plet_req : public Span_req  {
+public:
+  int plet_i_;
+
+  REQUESTMETHODS(Plet_req,plet);
+
+  Plet_req ();
+};
+
 class Musical_script_req : public Musical_req,  public Script_req {
 public:
   REQUESTMETHODS(Musical_script_req, musicalscript);
index 0e3dd06ce8ab1289d11ead88df9a8b878bcf40fd..bf2fe3590b9cddb92c3705be72f0b6c659993e79 100644 (file)
@@ -263,7 +263,6 @@ IMPLEMENT_IS_TYPE_B1(Beam_req,Span_req);
 
 Beam_req::Beam_req()
 {
-  nplet = 0;
 }
 
 void
@@ -286,12 +285,23 @@ Abbreviation_beam_req::do_print () const
 }
 
 IMPLEMENT_IS_TYPE_B1(Slur_req,Span_req);
-
 void
 Slur_req::do_print() const
 {
 }
 
+IMPLEMENT_IS_TYPE_B1(Plet_req,Span_req);
+
+Plet_req::Plet_req ()
+{
+  plet_i_ = 0;
+}
+
+void
+Plet_req::do_print () const
+{
+}
+
 /* *************** */
 
 bool
index f100b72ae7dd8862245b7b7d47672794c4d2ff80..9a4406b24af1dc54a51be76b1175d3ea84018542 100644 (file)
@@ -24,6 +24,7 @@ Text_spanner::set_support (Directional_spanner*d)
   support_span_l_ =d;
   add_dependency (d);
 }
+
 void
 Text_spanner::do_add_processing ()
 {