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