]> git.donarmstrong.com Git - lilypond.git/commitdiff
patch::: 1.3.65.jcn2
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 27 Jun 2000 20:29:05 +0000 (22:29 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Tue, 27 Jun 2000 20:29:05 +0000 (22:29 +0200)
1.3.65.jcn2
===========

* Added some comments to new slur code.

* Removed some ugly interstaff slur code, interstaff slurs at line-break
  are still broken.

CHANGES
VERSION
lily/cross-staff.cc
lily/include/slur.hh
lily/slur.cc
scm/slur.scm

diff --git a/CHANGES b/CHANGES
index 79fcef79fa3142eae01e6121c9344d811b04b141..c73ad0916992ba540c934f9d246d1e44c078fc72 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,6 +1,16 @@
+1.3.65.jcn2
+===========
+
+* Added some comments to new slur code.
+
+* Removed some ugly interstaff slur code, interstaff slurs at line-break
+  are still broken.
+
 1.3.65.jcn1
 ===========
 
+* Bugfix: 16th beams are also beams.
+
 * Patches from hw
 
 1.3.64.uu1
diff --git a/VERSION b/VERSION
index 4d97db3d86ee8c5f7c0fe8983b67beea9ef0862e..b7e9595ca45fe06e9f4c90f281026c1946467888 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond
 MAJOR_VERSION=1
 MINOR_VERSION=3
 PATCH_LEVEL=65
-MY_PATCH_LEVEL=jcn1
+MY_PATCH_LEVEL=jcn2
 
 # use the above to send patches: MY_PATCH_LEVEL is always empty for a
 # released version.
index e1874661219789c6690a770b18c1a0e0c199302c..8e5e8e6f4a84f393994c10bfd23a36c2d3ab8ed8 100644 (file)
@@ -4,6 +4,9 @@
 #include "spanner.hh"
 #include "warn.hh"
 
+/*
+  JUNKME
+ */
 Real
 calc_interstaff_dist (Item const *item, Spanner const *span)
 {
index 80b18fbfc7569a1100ad96951262969011140aec..3176d4b6bbc848d429b536bc37be57881e3e8b9f 100644 (file)
@@ -37,7 +37,6 @@ private:
   void de_uglyfy (Slur_bezier_bow* bb, Real default_height);
   void set_extremities ();
   void set_control_points ();
-  int cross_staff_count () const;
   Offset encompass_offset (Note_column const* )const;
 };
 
index 5f075607aa2354c97c2627e4818d37b6c56d083c..260e2cecc922dfb101a49a1871a5a8a8e671f021 100644 (file)
@@ -9,6 +9,7 @@
 
 /*
   [TODO]
+    * fix broken interstaff slurs
     * begin and end should be treated as a/acknowledge Scripts.
     * broken slur should have uniform trend
     * smart changing of endings
@@ -28,7 +29,6 @@
 #include "debug.hh"
 #include "slur-bezier-bow.hh"
 #include "main.hh"
-#include "cross-staff.hh"
 #include "group-interface.hh"
 #include "staff-symbol-referencer.hh"
 
@@ -130,8 +130,8 @@ Slur::encompass_offset (Note_column const* col) const
   if (!stem_l)
     {
       warning (_ ("Slur over rest?"));
-     o[X_AXIS] = col->relative_coordinate (0, X_AXIS);
-      o[Y_AXIS] = col->extent (Y_AXIS)[dir];
+      o[X_AXIS] = col->relative_coordinate (0, X_AXIS);
+      o[Y_AXIS] = col->relative_coordinate (0, Y_AXIS);
       return o;  
     }
   Direction stem_dir = Directional_element_interface (stem_l).get ();
@@ -146,18 +146,17 @@ Slur::encompass_offset (Note_column const* col) const
   if ((stem_dir == dir)
       && !stem_l->extent (Y_AXIS).empty_b ())
     {
-      o[Y_AXIS] = stem_l->extent (Y_AXIS)[dir];
+      o[Y_AXIS] = stem_l->relative_coordinate (0, Y_AXIS);
     }
   else
     {
-      o[Y_AXIS] = col->extent (Y_AXIS)[dir];
+      o[Y_AXIS] = col->relative_coordinate (0, Y_AXIS);
     }
 
   /*
    leave a gap: slur mustn't touch head/stem
    */
   o[Y_AXIS] += dir * paper_l ()->get_var ("slur_y_free");
-  o[Y_AXIS] -= calc_interstaff_dist (stem_l, this);
   return o;
 }
 
@@ -302,39 +301,13 @@ Slur::get_attachment (Direction dir) const
        }
     }
 
-
-  /*
-    URG
-   */
-
-  if (str != "loose-end")
-    {
-      Link_array<Note_column> encompass_arr =
-       Pointer_group_interface__extract_elements (this, (Note_column*)0,
-                                                  "note-columns");
-      o -= Offset (0, calc_interstaff_dist (dir == LEFT ? encompass_arr[0]
-                                           : encompass_arr.top (), this));
-    }
+    if (str != "loose-end")
+      o += Offset (0, get_bound (dir)->relative_coordinate (0, Y_AXIS)
+                - relative_coordinate (0, Y_AXIS));
+    
   return o;
 }
 
-int
-Slur::cross_staff_count ()const
-{
-  Link_array<Note_column> encompass_arr =
-    Pointer_group_interface__extract_elements (this, (Note_column*)0, "note-columns");
-
-  int k=0;
-
-  for (int i = 0; i < encompass_arr.size (); i++)
-    {
-      if (calc_interstaff_dist (encompass_arr[i], this))
-       k++;
-    }
-  return k;
-}
-
-
 Array<Offset>
 Slur::get_encompass_offset_arr () const
 {
@@ -343,7 +316,8 @@ Slur::get_encompass_offset_arr () const
   
   Array<Offset> offset_arr;
 
-  Offset origin (relative_coordinate (0, X_AXIS), 0);
+  Offset origin (relative_coordinate (0, X_AXIS),
+                relative_coordinate (0, Y_AXIS));
 
   int first = 1;
   int last = encompass_arr.size () - 2;
@@ -353,18 +327,12 @@ Slur::get_encompass_offset_arr () const
   /*
     left is broken edge
   */
-  int cross_count  = cross_staff_count ();
 
-  /*
-    URG
-  */
-  bool cross_b = cross_count && cross_count < encompass_arr.size ();
   if (encompass_arr[0] != get_bound (LEFT))
     {
       first--;
-      Real is = calc_interstaff_dist (encompass_arr[0], this);
-      if (cross_b)
-       offset_arr[0][Y_AXIS] += is;
+      offset_arr[0][Y_AXIS] -= encompass_arr[0]->relative_coordinate (0, Y_AXIS)
+       - relative_coordinate (0, Y_AXIS);
     }
 
   /*
@@ -383,6 +351,12 @@ Slur::get_encompass_offset_arr () const
 
   offset_arr.push (Offset (spanner_length (), 0) + get_attachment (RIGHT));
 
+  if (encompass_arr[0] != get_bound (LEFT))
+    {
+      offset_arr.top ()[Y_AXIS] -= encompass_arr.top ()->relative_coordinate (0, Y_AXIS)
+       - relative_coordinate (0, Y_AXIS);
+    }
+
   return offset_arr;
 }
 
index 3df0bc3ebe811c74d78bf7b8790b93464291bca0..58a1b2b99f316141b4cddac78c9ecc67dba72dde 100644 (file)
@@ -9,7 +9,20 @@
      (get-pointer stem 'heads))))
 
 
-;; FIXME: document this.
+;; Slur-extremity-rules is a list of rules.  Each rule is a pair 
+;; (fuction . attachment), where function takes two arguments,
+;; the slur and the direction of the attachment.
+;;
+;; The rules are tried starting from the car of this list.  If the
+;; function part (car) evaluates to #t, the corresponding
+;; attachment (cdr) is used for the slur's dir.  Otherwise, the next
+;; rule is tried.
+;;
+;; Currently, we have attachments:
+;;
+;;    'head 'along-side-stem 'stem 'loose-end
+;;
+
 (define slur-extremity-rules
   (list
     (cons (lambda (slur dir)
     ))
 
 
+;; This list defines the offsets for each type of attachment.
+;; The format of each element is
+;; (attachment stem-dir * attachment-dir slur-dir)
+;; Different attachments have different default points:
+;;
+;; head: Default position is centered in X, on outer side of head Y
+;; along-side-stem: Default position is on stem X, on outer side of head Y
+;; stem: Default position is on stem X, at stem end Y
 (define slur-extremity-offset-alist
   '(
     ((head 1 1) . (-0.25 . 0.2))