CVSROOT:        /cvsroot/lilypond
Module name:    lilypond
Branch:         
Changes by:     Han-Wen Nienhuys <[EMAIL PROTECTED]>    05/10/07 10:43:36

Modified files:
        .              : ChangeLog 
        lily           : beam.cc beaming-info.cc 
        lily/include   : beam.hh beaming.hh 
        scm            : define-grobs.scm 
Added files:
        lily           : enclosing-bracket.cc 

Log message:
        * lily/beam.cc (set_beaming): don't clip edges.
        (connect_beams): don't clip edges.
        
        * lily/beaming-info.cc (clip_edges): new function.
        
        * lily/enclosing-bracket.cc (struct Enclosing_bracket): new file.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.4160&tr2=1.4161&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/enclosing-bracket.cc?rev=1.1
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/beam.cc.diff?tr1=1.314&tr2=1.315&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/beaming-info.cc.diff?tr1=1.22&tr2=1.23&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/beam.hh.diff?tr1=1.103&tr2=1.104&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/beaming.hh.diff?tr1=1.13&tr2=1.14&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scm/define-grobs.scm.diff?tr1=1.241&tr2=1.242&r1=text&r2=text

Patches:
Index: lilypond/ChangeLog
diff -u lilypond/ChangeLog:1.4160 lilypond/ChangeLog:1.4161
--- lilypond/ChangeLog:1.4160   Fri Oct  7 09:50:21 2005
+++ lilypond/ChangeLog  Fri Oct  7 10:43:35 2005
@@ -1,5 +1,10 @@
 2005-10-07  Han-Wen Nienhuys  <[EMAIL PROTECTED]>
 
+       * lily/beam.cc (set_beaming): don't clip edges.
+       (connect_beams): don't clip edges.
+
+       * lily/beaming-info.cc (clip_edges): new function.
+
        * lily/enclosing-bracket.cc (struct Enclosing_bracket): new file.
 
        * Documentation/user/instrument-notation.itely (Figured bass):
Index: lilypond/lily/beam.cc
diff -u lilypond/lily/beam.cc:1.314 lilypond/lily/beam.cc:1.315
--- lilypond/lily/beam.cc:1.314 Tue Sep 27 11:33:27 2005
+++ lilypond/lily/beam.cc       Fri Oct  7 10:43:36 2005
@@ -217,7 +217,9 @@
 
   Slice last_int;
   last_int.set_empty ();
-  SCM last_beaming = SCM_EOL;
+  
+  //  SCM last_beaming = SCM_EOL;
+  SCM last_beaming = scm_cons (SCM_EOL, scm_list_1 (scm_from_int (0)));
   Direction last_dir = CENTER;
   for (int i = 0; i < stems.size (); i++)
     {
@@ -229,15 +231,13 @@
        {
          int start_point = position_with_maximal_common_beams
            (last_beaming, this_beaming,
-            last_dir, this_dir);
+            last_dir ? last_dir : this_dir,
+            this_dir);
 
          Direction d = LEFT;
          Slice new_slice;
          do
            {
-             if (d == RIGHT && i == stems.size () - 1)
-               continue;
-
              new_slice.set_empty ();
              SCM s = index_get_cell (this_beaming, d);
              for (; scm_is_pair (s); s = scm_cdr (s))
@@ -256,7 +256,6 @@
        }
       else
        {
-         scm_set_car_x (this_beaming, SCM_EOL);
          SCM s = scm_cdr (this_beaming);
          for (; scm_is_pair (s); s = scm_cdr (s))
            {
@@ -265,10 +264,7 @@
              last_int.add_point (np);
            }
        }
-
-      if (i == stems.size () -1)
-       scm_set_cdr_x (this_beaming, SCM_EOL);
-
+      
       if (scm_ilength (scm_cdr (this_beaming)) > 0)
        {
          last_beaming = this_beaming;
@@ -444,16 +440,22 @@
          if (i > 0)
            rw = min (nw_f, ((xposn - last_xposn) / 2));
          else
-           rw = xposn - me->get_bound (LEFT)->extent (xcommon, X_AXIS)[RIGHT]
-             + break_overshoot[LEFT];
-
+           {
+             if (me->get_bound (LEFT)->break_status_dir ())
+               rw = xposn - me->get_bound (LEFT)->extent (xcommon, 
X_AXIS)[RIGHT]
+                 + break_overshoot[LEFT];
+             else
+               rw = 1.0;       // ugh.
+           }
+         
          if (stem)
            lw = min (nw_f, ((xposn - last_xposn) / 2));
          else
-           lw = me->get_bound (RIGHT)->relative_coordinate (xcommon, X_AXIS)
-             - last_xposn
-             + break_overshoot[RIGHT];
-
+           {
+             lw = me->get_bound (RIGHT)->relative_coordinate (xcommon, X_AXIS)
+               - last_xposn
+               + break_overshoot[RIGHT];
+           }
          rw += stem_width / 2;
          lw += last_stem_width / 2;
 
@@ -1160,7 +1162,7 @@
 }
 
 void
-Beam::set_beaming (Grob *me, Beaming_info_list *beaming)
+Beam::set_beaming (Grob *me, Beaming_info_list const *beaming)
 {
   extract_grob_set (me, "stems", stems);
 
@@ -1173,11 +1175,6 @@
 
       do
        {
-         /* Don't set beaming for outside of outer stems */
-         if ((d == LEFT && i == 0)
-             || (d == RIGHT && i == stems.size () -1))
-           continue;
-
          Grob *stem = stems[i];
          SCM beaming_prop = stem->get_property ("beaming");
          if (beaming_prop == SCM_EOL
Index: lilypond/lily/beaming-info.cc
diff -u lilypond/lily/beaming-info.cc:1.22 lilypond/lily/beaming-info.cc:1.23
--- lilypond/lily/beaming-info.cc:1.22  Sat Aug 13 21:35:23 2005
+++ lilypond/lily/beaming-info.cc       Fri Oct  7 10:43:36 2005
@@ -91,10 +91,22 @@
 
   infos_ = splits[LEFT].infos_;
   infos_.concat (splits[RIGHT].infos_);
+
+  clip_edges ();
 }
 
 void
 Beaming_info_list::add_stem (Moment m, int b)
 {
   infos_.push (Beaming_info (m, b));
+}
+
+void
+Beaming_info_list::clip_edges ()
+{
+  if (infos_.size ())
+    {
+      infos_[0].beams_i_drul_[LEFT] = 0;
+      infos_.top().beams_i_drul_[RIGHT] = 0;
+    }
 }
Index: lilypond/lily/include/beam.hh
diff -u lilypond/lily/include/beam.hh:1.103 lilypond/lily/include/beam.hh:1.104
--- lilypond/lily/include/beam.hh:1.103 Fri Aug 12 00:04:45 2005
+++ lilypond/lily/include/beam.hh       Fri Oct  7 10:43:36 2005
@@ -48,7 +48,7 @@
   static bool has_interface (Grob *);
   static void add_stem (Grob *, Grob *);
   static bool is_knee (Grob *);
-  static void set_beaming (Grob *, Beaming_info_list *);
+  static void set_beaming (Grob *, Beaming_info_list const *);
   static void set_stemlens (Grob *);
   static int get_beam_count (Grob *me);
   static void position_beam (Grob *me);
Index: lilypond/lily/include/beaming.hh
diff -u lilypond/lily/include/beaming.hh:1.13 
lilypond/lily/include/beaming.hh:1.14
--- lilypond/lily/include/beaming.hh:1.13       Thu Mar 10 14:36:12 2005
+++ lilypond/lily/include/beaming.hh    Fri Oct  7 10:43:36 2005
@@ -34,6 +34,7 @@
   int best_splitpoint_index (Moment &beat_length, bool subdivide) const;
   void beamify (Moment &beat_length, bool subdivide);
   void add_stem (Moment d, int beams);
+  void clip_edges ();
 };
 
 #endif /* BEAMING_HH */
Index: lilypond/scm/define-grobs.scm
diff -u lilypond/scm/define-grobs.scm:1.241 lilypond/scm/define-grobs.scm:1.242
--- lilypond/scm/define-grobs.scm:1.241 Fri Oct  7 09:50:22 2005
+++ lilypond/scm/define-grobs.scm       Fri Oct  7 10:43:36 2005
@@ -218,7 +218,7 @@
      . ((print-function . ,Enclosing_bracket::print)
        (edge-height . (0.2 . 0.2))
        (meta . ((class . Item)
-                (interfaces . (figured-bass-bracket-interface)) ))
+                (interfaces . (enclosing-bracket-interface)) ))
        ))
     (BassFigureContinuation
      . (


_______________________________________________
Lilypond-cvs mailing list
Lilypond-cvs@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-cvs

Reply via email to