CVSROOT:        /cvsroot/lilypond
Module name:    lilypond
Branch:         
Changes by:     Han-Wen Nienhuys <[EMAIL PROTECTED]>    05/06/01 15:04:57

Modified files:
        .              : ChangeLog 
        lily           : slur-configuration.cc slur-scoring.cc slur.cc 
        lily/include   : slur-configuration.hh slur-scoring.hh 
        scripts        : lilypond-book.py 

Log message:
        * lily/slur-scoring.cc (generate_avoid_offsets): new
        function. Generate avoid offsets once per slur.
        
        * lily/slur.cc (add_extra_encompass): add dependency to
        extra-encompass object. This fixes bugs/c-phrasing-slur.ly
        
        * scripts/lilypond-book.py (do_options): --psfonts doesn't take
        argument anymore.
        
        * scripts/lilypond-book.py (set_default_options): new
        function. Call this before dissecting snippets, so linewidth
        settings reach the snippets.

CVSWeb URLs:
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/ChangeLog.diff?tr1=1.3704&tr2=1.3705&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/slur-configuration.cc.diff?tr1=1.17&tr2=1.18&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/slur-scoring.cc.diff?tr1=1.52&tr2=1.53&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/slur.cc.diff?tr1=1.216&tr2=1.217&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/slur-configuration.hh.diff?tr1=1.5&tr2=1.6&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/lily/include/slur-scoring.hh.diff?tr1=1.6&tr2=1.7&r1=text&r2=text
http://savannah.gnu.org/cgi-bin/viewcvs/lilypond/lilypond/scripts/lilypond-book.py.diff?tr1=1.260&tr2=1.261&r1=text&r2=text

Patches:
Index: lilypond/ChangeLog
diff -u lilypond/ChangeLog:1.3704 lilypond/ChangeLog:1.3705
--- lilypond/ChangeLog:1.3704   Wed Jun  1 14:26:13 2005
+++ lilypond/ChangeLog  Wed Jun  1 15:04:56 2005
@@ -1,5 +1,11 @@
 2005-06-01  Han-Wen Nienhuys  <[EMAIL PROTECTED]>
 
+       * lily/slur-scoring.cc (generate_avoid_offsets): new
+       function. Generate avoid offsets once per slur.
+
+       * lily/slur.cc (add_extra_encompass): add dependency to
+       extra-encompass object. This fixes bugs/c-phrasing-slur.ly
+
        * lily/stencil.cc (is_empty): check dim_ field for is_empty()
        too. Fixes inf error with added bass notes.
 
Index: lilypond/lily/include/slur-configuration.hh
diff -u lilypond/lily/include/slur-configuration.hh:1.5 
lilypond/lily/include/slur-configuration.hh:1.6
--- lilypond/lily/include/slur-configuration.hh:1.5     Thu Mar 10 14:36:12 2005
+++ lilypond/lily/include/slur-configuration.hh Wed Jun  1 15:04:56 2005
@@ -29,7 +29,8 @@
 
   Slur_configuration ();
 
-  void generate_curve (Slur_score_state const &state, Real r0, Real h_inf);
+  void generate_curve (Slur_score_state const &state, Real r0, Real h_inf,
+                      Array<Offset> const&);
   void score (Slur_score_state const &);
 protected:
   void score_extra_encompass (Slur_score_state const &);
Index: lilypond/lily/include/slur-scoring.hh
diff -u lilypond/lily/include/slur-scoring.hh:1.6 
lilypond/lily/include/slur-scoring.hh:1.7
--- lilypond/lily/include/slur-scoring.hh:1.6   Thu Mar 10 14:36:12 2005
+++ lilypond/lily/include/slur-scoring.hh       Wed Jun  1 15:04:57 2005
@@ -133,6 +133,7 @@
   void fill (Grob *);
   void set_next_direction ();
 
+  Array<Offset> Slur_score_state::generate_avoid_offsets () const;
   Drul_array<Bound_info> get_bound_info () const;
   void generate_curves () const;
   Link_array<Slur_configuration> enumerate_attachments (Drul_array<Real> 
end_ys) const;
Index: lilypond/lily/slur-configuration.cc
diff -u lilypond/lily/slur-configuration.cc:1.17 
lilypond/lily/slur-configuration.cc:1.18
--- lilypond/lily/slur-configuration.cc:1.17    Thu May 19 22:18:40 2005
+++ lilypond/lily/slur-configuration.cc Wed Jun  1 15:04:56 2005
@@ -96,39 +96,10 @@
 
 void
 Slur_configuration::generate_curve (Slur_score_state const &state,
-                                   Real r_0, Real h_inf)
+                                   Real r_0, Real h_inf,
+                                   Array<Offset> const &avoid
+                                   )
 {
-  Link_array<Grob> encompasses = state.columns_;
-
-  Array<Offset> avoid;
-  for (int i = 0; i < encompasses.size (); i++)
-    {
-      if (state.extremes_[LEFT].note_column_ == encompasses[i]
-         || state.extremes_[RIGHT].note_column_ == encompasses[i])
-       continue;
-
-      Encompass_info inf (state.get_encompass_info (encompasses[i]));
-      Real y = state.dir_ * (max (state.dir_ * inf.head_, state.dir_ * 
inf.stem_));
-
-      avoid.push (Offset (inf.x_, y + state.dir_ * 
state.parameters_.free_head_distance_));
-    }
-
-  Link_array<Grob> extra_encompasses
-    = extract_grob_array (state.slur_, ly_symbol2scm ("encompass-objects"));
-  for (int i = 0; i < extra_encompasses.size (); i++)
-    if (Slur::has_interface (extra_encompasses[i]))
-      {
-       Grob *small_slur = extra_encompasses[i];
-       Bezier b = Slur::get_curve (small_slur);
-
-       Offset z = b.curve_point (0.5);
-       z += Offset (small_slur->relative_coordinate (state.common_[X_AXIS], 
X_AXIS),
-                    small_slur->relative_coordinate (state.common_[Y_AXIS], 
Y_AXIS));
-
-       z[Y_AXIS] += state.dir_ * state.parameters_.free_slur_distance_;
-       avoid.push (z);
-      }
-
   Offset dz = attachment_[RIGHT]- attachment_[LEFT];;
   Offset dz_unit = dz;
   dz_unit *= 1 / dz.length ();
Index: lilypond/lily/slur-scoring.cc
diff -u lilypond/lily/slur-scoring.cc:1.52 lilypond/lily/slur-scoring.cc:1.53
--- lilypond/lily/slur-scoring.cc:1.52  Fri May 13 11:55:16 2005
+++ lilypond/lily/slur-scoring.cc       Wed Jun  1 15:04:56 2005
@@ -398,29 +398,37 @@
 Bezier
 Slur_score_state::get_best_curve ()
 {
-  for (int i = 0; i < configurations_.size (); i++)
-    {
-      configurations_[i]->score (*this);
-    }
-
-  Real opt = 1e6;
   int opt_idx = -1;
-  for (int i = 0; i < configurations_.size (); i++)
-    {
-      if (configurations_[i]->score_ < opt)
-       {
-         opt = configurations_[i]->score_;
-         opt_idx = i;
-       }
-    }
+  Real opt = 1e6;
 
 #if DEBUG_SLUR_SCORING
   SCM inspect_quants = slur_->get_property ("inspect-quants");
   if (to_boolean (slur_->get_layout ()
                  ->lookup_variable (ly_symbol2scm ("debug-slur-scoring")))
       && scm_is_pair (inspect_quants))
-    opt_idx = get_closest_index (inspect_quants);
+    {
+      opt_idx = get_closest_index (inspect_quants);
+      configurations_[opt_idx]->score (*this);
+      opt = configurations_[opt_idx]->score_;
+    }
+  else
+#endif
+    {
+      for (int i = 0; i < configurations_.size (); i++)
+       {
+         configurations_[i]->score (*this);
+       }
+      for (int i = 0; i < configurations_.size (); i++)
+       {
+         if (configurations_[i]->score_ < opt)
+           {
+             opt = configurations_[i]->score_;
+             opt_idx = i;
+           }
+       }
+    }
 
+#if DEBUG_SLUR_SCORING
   configurations_[opt_idx]->score_card_ += to_string ("=%.2f", opt);
   configurations_[opt_idx]->score_card_ += to_string ("i%d", opt_idx);
 
@@ -616,13 +624,54 @@
   return y;
 }
 
+
+
+Array<Offset>
+Slur_score_state::generate_avoid_offsets () const
+{
+  Array<Offset> avoid;
+  Link_array<Grob> encompasses = columns_;
+
+  for (int i = 0; i < encompasses.size (); i++)
+    {
+      if (extremes_[LEFT].note_column_ == encompasses[i]
+         || extremes_[RIGHT].note_column_ == encompasses[i])
+       continue;
+
+      Encompass_info inf (get_encompass_info (encompasses[i]));
+      Real y = dir_ * (max (dir_ * inf.head_, dir_ * inf.stem_));
+
+      avoid.push (Offset (inf.x_, y + dir_ * parameters_.free_head_distance_));
+    }
+  
+  Link_array<Grob> extra_encompasses
+    = extract_grob_array (slur_, ly_symbol2scm ("encompass-objects"));
+  for (int i = 0; i < extra_encompasses.size (); i++)
+    if (Slur::has_interface (extra_encompasses[i]))
+      {
+       Grob *small_slur = extra_encompasses[i];
+       Bezier b = Slur::get_curve (small_slur);
+
+       Offset z = b.curve_point (0.5);
+       z += Offset (small_slur->relative_coordinate (common_[X_AXIS], X_AXIS),
+                    small_slur->relative_coordinate (common_[Y_AXIS], Y_AXIS));
+
+       z[Y_AXIS] += dir_ * parameters_.free_slur_distance_;
+       avoid.push (z);
+      }
+
+  return avoid;
+}
+
 void
 Slur_score_state::generate_curves () const
 {
   Real r_0 = robust_scm2double (slur_->get_property ("ratio"), 0.33);
   Real h_inf = staff_space_ * scm_to_double (slur_->get_property 
("height-limit"));
+
+  Array<Offset> avoid = generate_avoid_offsets (); 
   for (int i = 0; i < configurations_.size (); i++)
-    configurations_[i]->generate_curve (*this, r_0, h_inf);
+    configurations_[i]->generate_curve (*this, r_0, h_inf, avoid);
 }
 
 Link_array<Slur_configuration>
Index: lilypond/lily/slur.cc
diff -u lilypond/lily/slur.cc:1.216 lilypond/lily/slur.cc:1.217
--- lilypond/lily/slur.cc:1.216 Fri May 13 15:45:32 2005
+++ lilypond/lily/slur.cc       Wed Jun  1 15:04:56 2005
@@ -119,6 +119,7 @@
 Slur::add_extra_encompass (Grob *me, Grob *n)
 {
   Pointer_group_interface::add_grob (me, ly_symbol2scm ("encompass-objects"), 
n);
+  me->add_dependency (n);
 }
 
 MAKE_SCHEME_CALLBACK (Slur, outside_slur_callback, 2);
Index: lilypond/scripts/lilypond-book.py
diff -u lilypond/scripts/lilypond-book.py:1.260 
lilypond/scripts/lilypond-book.py:1.261
--- lilypond/scripts/lilypond-book.py:1.260     Wed Jun  1 13:16:26 2005
+++ lilypond/scripts/lilypond-book.py   Wed Jun  1 15:04:57 2005
@@ -1554,6 +1554,7 @@
        file = files[0]
 
        basename = os.path.splitext (file)[0]
+       basename = os.path.split (basename)[1]
        
        global process_cmd, format
        if not format:


_______________________________________________
Lilypond-cvs mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/lilypond-cvs

Reply via email to