]> git.donarmstrong.com Git - lilypond.git/commitdiff
''
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 13 Apr 2002 09:50:07 +0000 (09:50 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 13 Apr 2002 09:50:07 +0000 (09:50 +0000)
ChangeLog
lily/include/note-spacing.hh
lily/note-spacing.cc

index e63be88eddcad822fa0691de91bb14aa6a39eee0..4a8bc40ec7bb45c7a531566b89f8f107740052b5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
+
+2002-04-13  Han-Wen  <hanwen@cs.uu.nl>
+
+       * lily/note-spacing.cc (stem_dir_correction): set fixed space for
+       knee correction. Fixes tight spacing for knees.
+
 2002-04-12  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
+       * VERSION: 1.5.52 released
+       
        * lily/*.cc: add some undocced properties.
        scm/grob-description.scm: idem.
 
@@ -35,6 +43,7 @@
        * scripts/lilypond-book.py (LatexPaper.set_geo_option): Simplify
        and correct the handling of geometry options.
 
+>>>>>>> 1.75
 2002-04-10  Han-Wen Nienhuys  <hanwen@cs.uu.nl>
 
        * lily/include/grob-interface.hh (ADD_INTERFACE): make
index f0c14d09087fdac922db16cdd576a05f4ecf2d7b..6368f06c95451b9dbdbbb81bf6a9b5719fd8a80c 100644 (file)
@@ -18,7 +18,8 @@ public:
   static bool has_interface (Grob*);
 
   static void get_spacing (Grob *me, Item* , Real, Real, Real*, Real*);
-  static Real stem_dir_correction (Grob *me, Item * next_col, Real incr);  
+  static void stem_dir_correction (Grob *me, Item * next_col, Real incr,
+                                  Real*, Real*);
   static Item * right_column (Grob*);
   static Item * left_column (Grob*);  
 };
index 1a1ae4c964293915a6be3e609c49abc492e069d7..95ba49aa64a7a271f06dd4261dddb62ace9e0cbf 100644 (file)
@@ -113,7 +113,7 @@ Note_spacing::get_spacing (Grob *me, Item* right_col,
       *space += 0.5 * (( -extents[RIGHT][LEFT]) >? 0);
     }
 
-  *space += stem_dir_correction (me, right_col, increment);
+  stem_dir_correction (me, right_col, increment, space, fixed);
 }
 
 Item *
@@ -197,9 +197,10 @@ Note_spacing::right_column (Grob*me)
    TODO: have to check wether the stems are in the same staff.
 
 */
-Real
+void
 Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn,
-                                  Real increment)  
+                                  Real increment,
+                                  Real * space, Real *fixed)  
 {
   Drul_array<Direction> stem_dirs(CENTER,CENTER);
   Drul_array<Interval> stem_posns;
@@ -247,13 +248,12 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn,
                  break;
                }
 
-             goto exit_func; 
+             return ;
            }
          
          if(Stem::invisible_b (stem))
            {
-             correct = false;
-             goto exit_func ;
+             return ;
            }
 
          beams_drul[d] = Stem::beam_l (stem);
@@ -262,8 +262,7 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn,
          Direction sd = Stem::get_direction (stem);
          if (stem_dirs[d] && stem_dirs[d] != sd)
            {
-             correct = false;
-             goto exit_func;
+             return ; 
            }
          stem_dirs[d] = sd;
 
@@ -274,8 +273,8 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn,
          if (d == LEFT
              && Stem::duration_log (stem) > 2  && !Stem::beam_l (stem))
            {
-             correct = false;
-             goto exit_func;
+
+             return;
            }
          
 
@@ -296,7 +295,7 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn,
 
   */
   if (acc_right)
-    return 0.0;
+    return ;
 
   if (!bar_yextent.empty_b())
     {
@@ -313,6 +312,7 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn,
          */
          
          correction = increment* stem_dirs[LEFT];
+         *fixed += increment* stem_dirs[LEFT];
        }
       else
        {
@@ -321,7 +321,7 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn,
          correct = correct && !intersect.empty_b ();
 
          if (!correct)
-           return 0.0;
+           return;
          
          correction = abs (intersect.length ());         
 
@@ -364,7 +364,7 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn,
       Interval hp = head_posns[LEFT];
       hp.intersect  (head_posns[RIGHT]);
       if (!hp.empty_b())
-       return 0.0;
+       return ;
 
       Direction lowest =
        (head_posns[LEFT][DOWN] > head_posns[RIGHT][UP]) ? RIGHT : LEFT;
@@ -378,9 +378,8 @@ Note_spacing::stem_dir_correction (Grob*me, Item * rcolumn,
 
   if (!bar_xextent.empty_b())
     correction += - bar_xextent[LEFT];
-  
- exit_func:
-  return correction;
+
+  *space += correction;
 }