]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/include/musical-request.hh
release: 0.1.54
[lilypond.git] / lily / include / musical-request.hh
index 64328afc97688b28d6875fc88c979f0a88d9e179..cd822d1ac283c5011e1f947c6ecc07c21e26aaf6 100644 (file)
@@ -28,6 +28,7 @@ public:
   virtual Melodic_req *melodic() { return 0; }
   virtual Slur_req *slur() { return 0 ; }
   virtual Beam_req *beam() { return 0 ; }
+  virtual Abbreviation_beam_req* abbrev_beam() { return 0 ; }
   virtual Rhythmic_req*rhythmic() { return 0; }
   virtual Musical_script_req*musicalscript() { return 0; }
   virtual Text_req*text() { return 0; }
@@ -36,7 +37,9 @@ 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);
 };
 
@@ -62,6 +65,7 @@ class Skip_req  : public Rhythmic_req  {
 public:
   REQUESTMETHODS(Skip_req, skip);
 };
+
 struct Spacing_req :virtual Request {
   Moment next;
   Real distance;
@@ -71,6 +75,12 @@ struct Spacing_req :virtual Request {
   REQUESTMETHODS(Spacing_req, spacing);
 };
 
+struct Abbreviation_req : public Musical_req {
+  REQUESTMETHODS (Abbreviation_req, abbrev);
+  Abbreviation_req ();
+  int type_i_;
+};
+
 class Blank_req  : public Spacing_req, Rhythmic_req  {
 public:
   REQUESTMETHODS(Spacing_req, spacing);
@@ -117,7 +127,7 @@ struct Melodic_req :virtual Musical_req
   int height() const;
 
   /// transpose. #delta# is relative to central c.
-  void transpose (Melodic_req const &delta);
+  virtual void transpose (Melodic_req const *delta);
   /// return pitch from central c (in halfnotes)
   int pitch() const; 
   Melodic_req();
@@ -155,9 +165,9 @@ public:
 class Span_req  : public virtual Musical_req  {
 public:
   /// should the spanner start or stop, or is it unwanted?
-  enum {
+  enum Spantype {
     NOSPAN, START, STOP
-  } spantype ;
+  } spantype;
   bool do_equal_b (Request*) const;
   REQUESTMETHODS(Span_req,span);
 
@@ -165,18 +175,27 @@ 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);
 
   Beam_req();
 };
 
+/** 
+ Start / stop an abbreviation beam at this note. 
+ */
+class Abbreviation_beam_req : public Span_req  {
+public:
+  REQUESTMETHODS (Abbreviation_beam_req, abbrev_beam);
+
+  Abbreviation_beam_req ();
+
+  int type_i_;
+};
+
 /**
   Start a tie at this voice element, end it at the next
  */
@@ -192,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);
@@ -200,17 +229,24 @@ public:
 
 class Dynamic_req  : public virtual Musical_req  {
 public:
-  /// for absolute dynamics
+  /**
+    for absolute dynamics
+
+    This sux. We'd want increasing numbers for FFF till PPP, but not 
+    for FP, SF, SFZ (FP is *not* louder than FFF)
+   */
   enum Loudness {
-    FFF, FF, F, MF, MP, P, PP, PPP
+    FFF, FF, F, MF, MP, P, PP, PPP, FP, SF, SFZ
   };
-  static String loudness_str (Loudness);
+  static String loudness_static_str (Loudness);
   REQUESTMETHODS(Dynamic_req, dynamic);
 };
 
 class Absolute_dynamic_req  : public Dynamic_req  {
 public:
   Loudness loudness_;
+  virtual bool do_equal_b (Request*) const;
+  String loudness_str () const;
   Absolute_dynamic_req();
   REQUESTMETHODS(Absolute_dynamic_req, absdynamic);
 };