From: Han-Wen Nienhuys Date: Sun, 19 Dec 1999 21:28:12 +0000 (+0100) Subject: release: 1.3.14 X-Git-Tag: release/1.3.14 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=19fbc4154436823f3365e0bc42c4420f2233a860;p=lilypond.git release: 1.3.14 --- diff --git a/CHANGES b/CHANGES index 401525c0b1..f0faef7864 100644 --- a/CHANGES +++ b/CHANGES @@ -1,9 +1,17 @@ -pl 13.jcn1 +pl 13.hwn2 + - paper/score column cleanups. Junk Score_column type + +pl 13.hwn1 + - Bezier_bow/Bezier cleanups + - bf: rest under beam. + +pl 13.jcn2 - untangled Chord_name (item) and Chord (list-of-pitches) pl 13.jcn1 - bezier-bow fix +*********** pl 12.hwn1 - polynomial.hh - bf: generic properties @@ -13,6 +21,7 @@ pl 12.hwn1 - use smobs for font metric tables/hashes. - nl.po bf +************ pl 11.jcn3 - small beam fixes (interstaff knees still broken) diff --git a/VERSION b/VERSION index 440e0a47ea..ac3e15377a 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=13 -MY_PATCH_LEVEL=jcn2 +PATCH_LEVEL=14 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/flower/polynomial.cc b/flower/polynomial.cc index 2fe75879f0..d3c3538915 100644 --- a/flower/polynomial.cc +++ b/flower/polynomial.cc @@ -51,6 +51,7 @@ Polynomial::differentiate() { coefs_[i-1] = coefs_[i] * i; } + coefs_.pop (); } Polynomial diff --git a/input/bugs/1845390254.ly b/input/bugs/1845390254.ly deleted file mode 100644 index 87b066e187..0000000000 --- a/input/bugs/1845390254.ly +++ /dev/null @@ -1,38 +0,0 @@ - -% Generated by mudela-book.py; options are center -\include "paper16.ly" -\paper { linewidth = 390.000000 \pt; } - -\header { - title = "The river is flowing"; - composer = "Traditional (?)"; -} -\include "paper16.ly" - -melody = \notes \relative c' { - \partial 8; - g8 | - -} - -text = \lyrics { - The -} - -accompaniment =\chords { - r8 - c2:3- f:3-.7 d:min es4 c8:min r8 - c2:min f:min7 g:7^3.5 c:min } - -\score { - \simultaneous { - - \addlyrics - \context Staff = mel { - \melody - } - \context Lyrics \text - } -% \midi { } - \paper { linewidth = 10.0\cm; } -} diff --git a/input/test/dotted-slur.ly b/input/test/dotted-slur.ly deleted file mode 100644 index d6e63b23d0..0000000000 --- a/input/test/dotted-slur.ly +++ /dev/null @@ -1,23 +0,0 @@ -\version "1.3.5"; - -\score{ - \notes{ - c( d e )c | - \slurdotted - c( d e )c | - \slurnormal - c( d e )c | - \property Voice.slurDash = 3 - c( d e )c | - \slurnormal - c( d e )c | - } - \paper{ - indent = 0.0\pt; - %for broken! - % linewidth= 30.\mm; - castingalgorithm = \Wordwrap; - } -} - - diff --git a/input/test/slur-dash.ly b/input/test/slur-dash.ly new file mode 100644 index 0000000000..d6e63b23d0 --- /dev/null +++ b/input/test/slur-dash.ly @@ -0,0 +1,23 @@ +\version "1.3.5"; + +\score{ + \notes{ + c( d e )c | + \slurdotted + c( d e )c | + \slurnormal + c( d e )c | + \property Voice.slurDash = 3 + c( d e )c | + \slurnormal + c( d e )c | + } + \paper{ + indent = 0.0\pt; + %for broken! + % linewidth= 30.\mm; + castingalgorithm = \Wordwrap; + } +} + + diff --git a/lily/bezier-bow.cc b/lily/bezier-bow.cc index a029f36e66..afdd951b8e 100644 --- a/lily/bezier-bow.cc +++ b/lily/bezier-bow.cc @@ -39,186 +39,51 @@ translate (Array &c, Offset o) } -Bezier_bow::Bezier_bow (Paper_def* paper_l) +Bezier_bow::Bezier_bow (Paper_def* paper_l, + Array points, Direction dir) { paper_l_ = paper_l; + dir_ = dir; + encompass_ = points; + to_canonic_form (); + + calc_default (0.0); + if (fit_factor () > 1.0) + { + calc_tangent_controls (); + blow_fit (); + } } void Bezier_bow::blow_fit () { - Real x1 = encompass_[0][X_AXIS]; - Real x2 = encompass_.top ()[X_AXIS]; - - Real factor = 1.0; - for (int i=1; i < encompass_.size ()-1; i++) - { - if (encompass_[i][X_AXIS] > x1 && encompass_[i][X_AXIS] < x2) - { - Real y = curve_.get_other_coordinate (X_AXIS, encompass_[i][X_AXIS]); - if (y>0) - { - Real f = encompass_[i][Y_AXIS] / y; - factor = factor >? f; - } - } - } - - curve_.control_[1][Y_AXIS] *= factor; - curve_.control_[2][Y_AXIS] *= factor; - return_.control_[1][Y_AXIS] *= factor; - return_.control_[2][Y_AXIS] *= factor; + Real f = fit_factor (); + + curve_.control_[1][Y_AXIS] *= f; + curve_.control_[2][Y_AXIS] *= f; curve_.check_sanity (); } -Real -Bezier_bow::calc_f (Real height) -{ - transform (); - calc_default (height); - Real dy = check_fit_f (); - calc_return (0, 0); - transform_back (); - return dy; -} - -void -Bezier_bow::calc () -{ - transform (); - calc_controls (); - transform_back (); -} - - - -/* - [TODO] - * see if it works - * document in Documentation/fonts.tex - */ - -/* - Clipping - This function tries to address two issues: - * the tangents of the slur should always point inwards - in the actual slur, i.e. *after rotating back*. - * slurs shouldn't be too high - let's try : h <= 1.2 b && h <= 3 staffheight? - We could calculate the tangent of the bezier curve from - both ends going inward, and clip the slur at the point - where the tangent (after rotation) points up (or inward - with a certain maximum angle). - - However, we assume that real clipping is not the best - answer. We expect that moving the outer control point up - if the slur becomes too high will result in a nicer slur - after recalculation. - - Knowing that the tangent is the line through the first - two control points, we'll clip (move the outer control - point upwards) too if the tangent points outwards. - */ - -bool -Bezier_bow::calc_clipping () +Bezier +Bezier_bow::get_curve ()const { - Real clip_height = paper_l_->get_var ("slur_clip_height"); - Real clip_ratio = paper_l_->get_var ("slur_clip_ratio"); - Real clip_angle = paper_l_->get_var ("slur_clip_angle"); - - Real b = curve_.control_[3][X_AXIS] - curve_.control_[0][X_AXIS]; - Real clip_h = clip_ratio * b ? begin_h - clip_h; - Real end_dy = 0 >? end_h - clip_h; - - Real pi = M_PI; - Real begin_alpha = (curve_.control_[1] - curve_.control_[0]).arg () + dir_ * alpha_; - Real end_alpha = pi - (curve_.control_[2] - curve_.control_[3]).arg () - dir_ * alpha_; - - Real max_alpha = clip_angle / 90 * pi / 2; - if ((begin_dy < 0) && (end_dy < 0) - && (begin_alpha < max_alpha) && (end_alpha < max_alpha)) - return false; - - transform_back (); - - bool again = true; - - if ((begin_dy > 0) || (end_dy > 0)) - { - Real dy = (begin_dy + end_dy) / 4; - dy *= cos (alpha_); - encompass_[0][Y_AXIS] += dir_ * dy; - encompass_.top ()[Y_AXIS] += dir_ * dy; - } - else - { - //ugh - Real c = 0.4; - if (begin_alpha >= max_alpha) - begin_dy = 0 >? c * begin_alpha / max_alpha * begin_h; - if (end_alpha >= max_alpha) - end_dy = 0 >? c * end_alpha / max_alpha * end_h; - - encompass_[0][Y_AXIS] += dir_ * begin_dy; - encompass_.top ()[Y_AXIS] += dir_ * end_dy; - - Offset delta = encompass_.top () - encompass_[0]; - alpha_ = delta.arg (); - } - transform (); - - return again; -} - -void -Bezier_bow::calc_controls () -{ - for (int i = 0; i < 3; i++) + Bezier rv = curve_; + if (dir_ == DOWN) { - - if (i && !calc_clipping ()) - return; - - /* - why do we always recalc from 0? - shouldn't calc_f () be used (too), rather than blow_fit () (only)? - */ - calc_default (0); - curve_.check_sanity (); - if (check_fit_f () > 0) - { - calc_tangent_controls (); - blow_fit (); - } - else - { - calc_return (0, 0); - return; - } + rv.flip (Y_AXIS); } -} -void -Bezier_bow::calc_return (Real begin_alpha, Real end_alpha) -{ - Real thick = paper_l_->get_var ("slur_thickness"); - - return_.control_[0] = curve_.control_[3]; - return_.control_[3] = curve_.control_[0]; - - return_.control_[1] = curve_.control_[2] - thick * complex_exp (Offset (0, 90 + end_alpha)); - return_.control_[2] = curve_.control_[1] - thick * complex_exp (Offset (0, 90 - begin_alpha)); + rv.rotate (alpha_); + rv.translate (origin_); + return rv; } static Real const FUDGE = 1e-8; @@ -318,38 +183,40 @@ Bezier_bow::calc_tangent_controls () curve_.check_sanity(); - - calc_return (angles[LEFT], angles[RIGHT]); } /* The maximum amount that the encompass points stick out above the bezier curve. */ Real -Bezier_bow::check_fit_f () const +Bezier_bow::fit_factor () const { - Real dy = 0; Real x1 = encompass_[0][X_AXIS]; Real x2 = encompass_.top ()[X_AXIS]; - for (int i = 1; i < encompass_.size () - 1; i++) + + Real factor = 1.0; + for (int i=1; i < encompass_.size ()-1; i++) { - Real x = encompass_[i][X_AXIS]; - if (x1< x&& x < x2) - dy = dy >? (encompass_[i][Y_AXIS] - curve_.get_other_coordinate (X_AXIS, x)); + if (encompass_[i][X_AXIS] > x1 && encompass_[i][X_AXIS] < x2) + { + Real y = curve_.get_other_coordinate (X_AXIS, encompass_[i][X_AXIS]); + if (y>0) + { + Real f = encompass_[i][Y_AXIS] / y; + factor = factor >? f; + } + } } - return dy; -} -void -Bezier_bow::set (Array points, Direction dir) -{ - dir_ = dir; - encompass_ = points; + return factor; } + + + void -Bezier_bow::transform () +Bezier_bow::to_canonic_form () { origin_ = encompass_[0]; translate (encompass_,-origin_); @@ -358,31 +225,14 @@ Bezier_bow::transform () alpha_ = delta.arg (); rotate (encompass_, -alpha_); - - if (dir_ == DOWN) - flipy (encompass_); -} - -void -Bezier_bow::transform_back () -{ if (dir_ == DOWN) { - curve_.flip (Y_AXIS); - return_.flip (Y_AXIS); flipy (encompass_); } - - curve_.rotate (alpha_); - curve_.translate (origin_); - - return_.rotate (alpha_); - return_.translate (origin_); - - rotate (encompass_,alpha_); - translate (encompass_,origin_); } + + /* See Documentation/fonts.tex */ diff --git a/lily/bezier.cc b/lily/bezier.cc index 781220d72c..66a7a55245 100644 --- a/lily/bezier.cc +++ b/lily/bezier.cc @@ -106,11 +106,13 @@ filter_solutions (Array sol) Array Bezier::solve_derivative (Offset deriv)const { - Polynomial xp[2]; + Polynomial xp=polynomial (X_AXIS); + Polynomial yp=polynomial (Y_AXIS); + xp.differentiate (); + yp.differentiate (); + + Polynomial combine = xp * deriv[Y_AXIS] - yp * deriv [X_AXIS]; - xp[X_AXIS] = polynomial (X_AXIS); - xp[Y_AXIS] = polynomial (Y_AXIS); - Polynomial combine = xp[X_AXIS] * deriv[Y_AXIS] - xp[Y_AXIS] * deriv [X_AXIS]; return filter_solutions (combine.solve ()); } @@ -175,3 +177,12 @@ Bezier::check_sanity () const assert (!isnan (control_[i].length ()) && !isinf (control_[i].length ())); } + +void +Bezier::reverse () +{ + Bezier b2; + for (int i =0; i < CONTROL_COUNT; i++) + b2.control_[CONTROL_COUNT-i-1] = control_[i]; + *this = b2; +} diff --git a/lily/bow.cc b/lily/bow.cc index 70ea171995..04271c8e6c 100644 --- a/lily/bow.cc +++ b/lily/bow.cc @@ -26,16 +26,15 @@ Molecule* Bow::do_brew_molecule_p () const { Real thick = paper_l ()->get_var ("slur_thickness"); - Array c = get_controls (); + Bezier one = get_curve (); Molecule a; - SCM d = get_elt_property ("dashed"); if (d == SCM_UNDEFINED) - a = lookup_l ()->slur (c, thick); + a = lookup_l ()->slur (one, get_direction () * thick, thick); else - a = lookup_l ()->dashed_slur (c, thick, gh_scm2int (d)); - + a = lookup_l ()->dashed_slur (one, thick, gh_scm2int (d)); + return new Molecule (a); } @@ -48,45 +47,111 @@ Bow::center () const return Offset (dx / 2, dy); } -/* - Ugh. Control points are too crude measures. - */ + Interval -Bow::dim_callback (Dimension_cache const* c) +Bow::curve_extent (Axis a) const { - Interval iv; - Bow * b = dynamic_cast (c->element_l ()); - Array p (b->get_controls()); - for (int i=0; i < p.size (); i++) - { - Real y = p[i][Y_AXIS]; - iv.unite (Interval (y,y)); - } - return iv; + return get_curve ().extent (a); } -Interval -Bow::curve_extent (Axis a) const +Bezier +Bow::get_curve () const { - Bezier_bow b (paper_l ()); - b.set (get_encompass_offset_arr (), get_direction ()); - b.calc (); - return b.curve_.extent (a); + + + + Bezier_bow b (paper_l (), + get_encompass_offset_arr (), get_direction ()); + + return b.get_curve (); } -Array -Bow::get_controls () const +#if 0 + +/* + TODO: FIXME. + */ + +/* + Clipping + + This function tries to address two issues: + * the tangents of the slur should always point inwards + in the actual slur, i.e. *after rotating back*. + + * slurs shouldn't be too high + let's try : h <= 1.2 b && h <= 3 staffheight? + + We could calculate the tangent of the bezier curve from + both ends going inward, and clip the slur at the point + where the tangent (after rotation) points up (or inward + with a certain maximum angle). + + However, we assume that real clipping is not the best + answer. We expect that moving the outer control point up + if the slur becomes too high will result in a nicer slur + after recalculation. + + Knowing that the tangent is the line through the first + two control points, we'll clip (move the outer control + point upwards) too if the tangent points outwards. + */ + +bool +Bezier_bow::calc_clipping () { - Bezier_bow b (paper_l ()); - b.set (get_encompass_offset_arr (), get_direction ()); - b.calc (); - Array controls; - for (int i = 0; i < 4; i++) - controls.push (b.curve_.control_[i]); - for (int i = 0; i < 4; i++) - controls.push (b.return_.control_[i]); - return controls; + Real clip_height = paper_l_->get_var ("slur_clip_height"); + Real clip_ratio = paper_l_->get_var ("slur_clip_ratio"); + Real clip_angle = paper_l_->get_var ("slur_clip_angle"); + + Real b = curve_.control_[3][X_AXIS] - curve_.control_[0][X_AXIS]; + Real clip_h = clip_ratio * b ? begin_h - clip_h; + Real end_dy = 0 >? end_h - clip_h; + + Real pi = M_PI; + Real begin_alpha = (curve_.control_[1] - curve_.control_[0]).arg () + dir_ * alpha_; + Real end_alpha = pi - (curve_.control_[2] - curve_.control_[3]).arg () - dir_ * alpha_; + + Real max_alpha = clip_angle / 90 * pi / 2; + if ((begin_dy < 0) && (end_dy < 0) + && (begin_alpha < max_alpha) && (end_alpha < max_alpha)) + return false; + + transform_back (); + + if ((begin_dy > 0) || (end_dy > 0)) + { + Real dy = (begin_dy + end_dy) / 4; + dy *= cos (alpha_); + encompass_[0][Y_AXIS] += dir_ * dy; + encompass_.top ()[Y_AXIS] += dir_ * dy; + } + else + { + //ugh + Real c = 0.4; + if (begin_alpha >= max_alpha) + begin_dy = 0 >? c * begin_alpha / max_alpha * begin_h; + if (end_alpha >= max_alpha) + end_dy = 0 >? c * end_alpha / max_alpha * end_h; + + encompass_[0][Y_AXIS] += dir_ * begin_dy; + encompass_.top ()[Y_AXIS] += dir_ * end_dy; + + Offset delta = encompass_.top () - encompass_[0]; + alpha_ = delta.arg (); + } + + to_canonic_form (); + + return true; } +#endif + + Array Bow::get_encompass_offset_arr () const @@ -94,7 +159,7 @@ Bow::get_encompass_offset_arr () const Array offset_arr; offset_arr.push (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT])); offset_arr.push (Offset (spanner_length () + dx_f_drul_[RIGHT], - dy_f_drul_[RIGHT])); + dy_f_drul_[RIGHT])); return offset_arr; } diff --git a/lily/break-algorithm.cc b/lily/break-algorithm.cc index 9e242d22f0..003a9cd321 100644 --- a/lily/break-algorithm.cc +++ b/lily/break-algorithm.cc @@ -6,7 +6,7 @@ (c) 1996, 1997--1999 Han-Wen Nienhuys */ -#include "score-column.hh" +#include "paper-column.hh" #include "break-algorithm.hh" #include "paper-def.hh" #include "debug.hh" diff --git a/lily/chord.cc b/lily/chord.cc index 5a534b264c..89d4c4590e 100644 --- a/lily/chord.cc +++ b/lily/chord.cc @@ -220,7 +220,7 @@ Chord::Chord (Array pitch_arr, Musical_pitch* inversion_p, Musica delete bass_p; } } - + Chord::Chord (Chord const& chord) { pitch_arr_ = chord.pitch_arr_; @@ -229,6 +229,7 @@ Chord::Chord (Chord const& chord) bass_b_ = chord.bass_b_; bass_pitch_ = chord.bass_pitch_; } + Array Chord::base_arr (Musical_pitch p) diff --git a/lily/crescendo.cc b/lily/crescendo.cc index ebaf874cf0..972846498a 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -12,7 +12,7 @@ #include "dimensions.hh" #include "paper-def.hh" #include "debug.hh" -#include "score-column.hh" +#include "paper-column.hh" #include "atom.hh" Crescendo::Crescendo () @@ -54,7 +54,7 @@ Crescendo::do_brew_molecule_p () const Drul_array broken; Direction d = LEFT; do { - Score_column* s = dynamic_cast(spanned_drul_[d]); // UGH + Paper_column* s = dynamic_cast(spanned_drul_[d]); // UGH broken[d] = (!s->musical_b ()); } while (flip (&d) != LEFT); diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index f117c9c49d..4560bc6c73 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -10,7 +10,7 @@ #include "musical-request.hh" #include "lookup.hh" #include "paper-def.hh" -#include "score-column.hh" +#include "paper-column.hh" #include "staff-symbol.hh" #include "note-column.hh" #include "text-item.hh" diff --git a/lily/extender-engraver.cc b/lily/extender-engraver.cc index 604172c292..32e6f01f38 100644 --- a/lily/extender-engraver.cc +++ b/lily/extender-engraver.cc @@ -10,7 +10,7 @@ #include "musical-request.hh" #include "extender-engraver.hh" #include "extender-spanner.hh" -#include "score-column.hh" +#include "paper-column.hh" #include "text-item.hh" #include "extender-engraver.hh" diff --git a/lily/hyphen-engraver.cc b/lily/hyphen-engraver.cc index 452e4e0c3c..1b73e01499 100644 --- a/lily/hyphen-engraver.cc +++ b/lily/hyphen-engraver.cc @@ -8,7 +8,7 @@ #include "musical-request.hh" #include "hyphen-engraver.hh" #include "hyphen-spanner.hh" -#include "score-column.hh" +#include "paper-column.hh" #include "text-item.hh" #include "extender-engraver.hh" diff --git a/lily/include/bezier-bow.hh b/lily/include/bezier-bow.hh index 75acd8e471..3f30b0dd63 100644 --- a/lily/include/bezier-bow.hh +++ b/lily/include/bezier-bow.hh @@ -15,42 +15,27 @@ /** - Implement bow specific bezier curve - */ + Implement bow specific bezier curve. Calculate bezier curve for bow + from bow paratime_signatures. */ class Bezier_bow { -public: - Bezier_bow (Paper_def* paper_l); + Bezier curve_; + Array encompass_; - /** - Calculate bezier curve for bow from bow paratime_signatures. - */ void blow_fit (); - void calc (); - Real calc_f (Real height); - void calc_bezier (); - bool calc_clipping (); - void calc_controls (); - void check_sanity () const; void calc_default (Real h); - void calc_return (Real begin_alpha, Real end_alpha); + void to_canonic_form (); void calc_tangent_controls (); - bool check_fit_b () const; - Real check_fit_f () const; - void set (Array points, Direction dir); - void transform (); - void transform_back (); + Real fit_factor () const; - Array encompass_; Paper_def* paper_l_; Direction dir_; Real alpha_; Offset origin_; - - - Bezier curve_; - Bezier return_; +public: + Bezier_bow (Paper_def* paper_l, Array points, Direction dir); + Bezier get_curve () const; }; diff --git a/lily/include/bezier.hh b/lily/include/bezier.hh index a2c5df48c8..e9771bfd05 100644 --- a/lily/include/bezier.hh +++ b/lily/include/bezier.hh @@ -35,6 +35,8 @@ public: Polynomial polynomial (Axis)const; Offset curve_point (Real t) const; + void reverse (); + static const int CONTROL_COUNT = 4; Offset control_[CONTROL_COUNT]; }; diff --git a/lily/include/bow.hh b/lily/include/bow.hh index 99de88b237..6b788f154c 100644 --- a/lily/include/bow.hh +++ b/lily/include/bow.hh @@ -29,11 +29,12 @@ public: protected: virtual Molecule* do_brew_molecule_p () const; - Array get_controls () const; + virtual Array get_encompass_offset_arr () const; - static Interval dim_callback (Dimension_cache const*); - Interval curve_extent (Axis) const; + Interval curve_extent (Axis) const; + Bezier get_curve () const; + Drul_array dy_f_drul_; Drul_array dx_f_drul_; }; diff --git a/lily/include/chord.hh b/lily/include/chord.hh index 15c4c970fc..935758ae63 100644 --- a/lily/include/chord.hh +++ b/lily/include/chord.hh @@ -12,12 +12,11 @@ #include "array.hh" #include "musical-pitch.hh" #include "lily-proto.hh" - class Chord { public: static Array base_arr (Musical_pitch p); - static void find_additions_and_subtractions(Array pitch_arr, Array* add_arr_p, Array* sub_arr_p); + static void find_additions_and_subtractions(Array pitch_arr, Array* add_arr_p, Array* sub_arr_p); static int find_tonic_i (Array const*); static int find_pitch_i (Array const*, Musical_pitch p); static int find_notename_i (Array const*, Musical_pitch p); diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 653239b84d..0c5b18ef7f 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -49,6 +49,8 @@ struct Beam; struct Beam_engraver; struct Beaming_info; struct Beaming_info_list; +struct Bezier; +struct Bezier_bow; struct Blank_req; struct Bow; struct Box; diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index 2e9399958e..a566f34b7c 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -30,13 +30,13 @@ public: Molecule afm_find (String, bool warn=true) const; Molecule bar (String, Real height, Paper_def*) const; Molecule beam (Real, Real, Real) const; - Molecule dashed_slur (Array controls, Real thick, Real dash) const; + Molecule dashed_slur (Bezier, Real thick, Real dash) const; Molecule ledger_line (Interval) const; Molecule fill (Box b) const; Molecule filledbox (Box b) const; Molecule tuplet_bracket (Real dy, Real dx, Real gap, Real thick,Real height, Direction dir) const; Molecule accordion (SCM arg, Real interline_f) const; - Molecule slur (Array controls, Real thick) const; + Molecule slur (Bezier controls, Real cthick, Real thick) const; Molecule text (String style, String text, Paper_def*) const; Molecule staff_brace (Real dy, int) const; Molecule staff_bracket (Real height, Paper_def* paper_l) const; diff --git a/lily/include/moment.hh b/lily/include/moment.hh index 53942657fc..3f69637f05 100644 --- a/lily/include/moment.hh +++ b/lily/include/moment.hh @@ -27,6 +27,7 @@ struct Moment : public Rational DECLARE_SMOBS; }; + IMPLEMENT_ARITHMETIC_OPERATOR (Moment, / ); IMPLEMENT_ARITHMETIC_OPERATOR (Moment, + ); IMPLEMENT_ARITHMETIC_OPERATOR (Moment, * ); diff --git a/lily/include/paper-column.hh b/lily/include/paper-column.hh index 9505542f6f..c898b9faac 100644 --- a/lily/include/paper-column.hh +++ b/lily/include/paper-column.hh @@ -32,28 +32,28 @@ public: VIRTUAL_COPY_CONS(Score_element); Drul_array > minimal_dists_arr_drul_; Drul_array > spring_arr_drul_; - void preprocess (); + /// set a minimum distance void add_rod (Paper_column * to, Real distance); void add_spring (Paper_column * to, Real dist, Real strength); virtual Paper_column * column_l () const; + virtual Line_of_score *line_l () const; + + /// if lines are broken then this column is in #line# Line_of_score *line_l_; - virtual Line_of_score *line_l () const; /// which one (left =0) int rank_i() const; - bool breakpoint_b() const; - void add_item (Item *i); + Paper_column (Moment when); + Moment when_mom ()const; - Paper_column(); + bool musical_b () const; void set_rank (int); - - void OK() const; virtual void do_print() const; private: diff --git a/lily/include/score-column.hh b/lily/include/score-column.hh deleted file mode 100644 index eff9441bf3..0000000000 --- a/lily/include/score-column.hh +++ /dev/null @@ -1,50 +0,0 @@ -/* - score-column.hh -- declare Score_column - - source file of the GNU LilyPond music typesetter - - (c) 1997--1999 Han-Wen Nienhuys -*/ - - -#ifndef SCORE_COLUMN_HH -#define SCORE_COLUMN_HH - -#include "lily-proto.hh" -#include "array.hh" -#include "moment.hh" -#include "paper-column.hh" - -/** - Column with durational info. - - The columns which contain data have a rhythmical - position. Score_column is the type with a rhythmical time attached - to it. The calculation of idealspacing is done with data in these - columns. - - */ - -class Score_column : public Paper_column { - Moment when_; -public: - Moment shortest_playing_mom_; - Moment shortest_starter_mom_; - - - VIRTUAL_COPY_CONS(Score_element); - - Moment when_mom() { return when_; } - Score_column (Moment when); - - bool musical_b() const; - void do_print() const; -}; - -#endif // SCORE_COLUMN_HH - - - - - - diff --git a/lily/include/score-engraver.hh b/lily/include/score-engraver.hh index 2851980e05..0f32d95c29 100644 --- a/lily/include/score-engraver.hh +++ b/lily/include/score-engraver.hh @@ -24,10 +24,10 @@ class Score_engraver : Link_array elem_p_arr_; - Score_column* command_column_l_; - Score_column* musical_column_l_; + Paper_column* command_column_l_; + Paper_column* musical_column_l_; - void set_columns (Score_column*,Score_column*); + void set_columns (Paper_column*,Paper_column*); void typeset_all(); public: diff --git a/lily/include/spacing-spanner.hh b/lily/include/spacing-spanner.hh index fb249675c3..a5c5420bd5 100644 --- a/lily/include/spacing-spanner.hh +++ b/lily/include/spacing-spanner.hh @@ -18,14 +18,14 @@ public: Spacing_spanner (); VIRTUAL_COPY_CONS(Score_element); - Array do_measure (Link_array) const; + Array do_measure (Link_array) const; protected: virtual Array get_springs () const; - Real stem_dir_correction (Score_column*,Score_column*) const; - Real default_bar_spacing (Score_column*,Score_column*,Moment) const; - Real note_spacing (Score_column*,Score_column*,Moment) const; + Real stem_dir_correction (Paper_column*,Paper_column*) const; + Real default_bar_spacing (Paper_column*,Paper_column*,Moment) const; + Real note_spacing (Paper_column*,Paper_column*,Moment) const; }; #endif /* SPACING_SPANNER_HH */ diff --git a/lily/include/staff-info.hh b/lily/include/staff-info.hh index 5484f4fb97..bc544d0d03 100644 --- a/lily/include/staff-info.hh +++ b/lily/include/staff-info.hh @@ -17,8 +17,8 @@ JUNKME. */ struct Staff_info { - Score_column *musical_l_; - Score_column *command_l_; + Paper_column *musical_l_; + Paper_column *command_l_; Paper_column * command_pcol_l(); Paper_column * musical_pcol_l(); diff --git a/lily/item.cc b/lily/item.cc index 5417dae3d4..247a26e484 100644 --- a/lily/item.cc +++ b/lily/item.cc @@ -163,6 +163,7 @@ Item::broken_original_b () const return broken_to_drul_[LEFT] || broken_to_drul_[RIGHT]; } +#if 0 int Item::left_right_compare(Item const *l, Item const *r) { @@ -170,6 +171,7 @@ Item::left_right_compare(Item const *l, Item const *r) Paper_column* p2 = r->column_l (); return p1->rank_i () - p2->rank_i (); } +#endif Paper_column * Item::column_l () const diff --git a/lily/lookup.cc b/lily/lookup.cc index c3d2213592..be3cabead6 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -16,6 +16,7 @@ #include "debug.hh" #include "dimensions.hh" +#include "bezier.hh" #include "paper-def.hh" #include "string-convert.hh" #include "file-path.hh" @@ -28,6 +29,12 @@ #include "atom.hh" #include "lily-guile.hh" +SCM +ly_offset2scm (Offset o) +{ + return gh_list (gh_double2scm (o[X_AXIS]), gh_double2scm(o[Y_AXIS]), + SCM_UNDEFINED); +} Lookup::Lookup () { @@ -227,42 +234,26 @@ Lookup::beam (Real slope, Real width, Real thick) const return m; } -SCM -offset2scm (Offset o) -{ - return gh_list (gh_double2scm (o[X_AXIS]), gh_double2scm(o[Y_AXIS]), - SCM_UNDEFINED); -} + +/* + FIXME. + */ Molecule -Lookup::dashed_slur (Array controls, Real thick, Real dash) const +Lookup::dashed_slur (Bezier b, Real thick, Real dash) const { - assert (controls.size () == 8); - Offset d = controls[3] - controls[0]; - - Real dx = d[X_AXIS]; - Real dy = d[Y_AXIS]; - - Molecule m; - - - m.dim_[X_AXIS] = Interval (0, dx); - m.dim_[Y_AXIS] = Interval (0 ? dy); - - SCM sc[4]; - for (int i=0; i< 4; i++) + SCM l = SCM_EOL; + for (int i= 4; i -- ;) { - sc[i] = offset2scm (controls[i]); + l = gh_cons (ly_offset2scm (b.control_[i]), l); } - Atom at - (gh_list (ly_symbol2scm ("dashed-slur"), - gh_double2scm (thick), - gh_double2scm (dash), - ly_quote_scm (array_to_list (sc, 4)), - SCM_UNDEFINED)); - - + Atom at (gh_list (ly_symbol2scm ("dashed-slur"), + gh_double2scm (thick), + gh_double2scm (dash), + ly_quote_scm (l), + SCM_UNDEFINED)); + Molecule m; m.add_atom (&at); return m; } @@ -493,25 +484,40 @@ Lookup::tuplet_bracket (Real dy , Real dx, Real thick, Real gap, Make a smooth curve along the points */ Molecule -Lookup::slur (Array controls, Real linethick) const +Lookup::slur (Bezier curve, Real curvethick, Real linethick) const { - Offset delta_off = controls[3]- controls[0]; - Molecule m; - - SCM scontrols [8]; - int indices[] = {5,6,7,4,1,2,3,0}; + Real alpha = (curve.control_[3] - curve.control_[0]).arg (); + Bezier back = curve; - for (int i= 0; i < 8; i++) - scontrols[i] = offset2scm (controls[indices[i]]); + back.reverse (); + back.control_[1] += curvethick * complex_exp (Offset (0, alpha + M_PI/2)); + back.control_[2] += curvethick * complex_exp (Offset (0, alpha + M_PI/2)); + SCM scontrols[8]; + for (int i=4; i--;) + scontrols[ i ] = ly_offset2scm (back.control_[i]); + for (int i=4 ; i--;) + scontrols[i+4] = ly_offset2scm (curve.control_[i]); + /* + Need the weird order b.o. the way PS want its arguments + */ + int indices[]= {5, 6, 7, 4, 1, 2, 3, 0}; + SCM list = SCM_EOL; + for (int i= 8; i--; ) + { + list = gh_cons (scontrols[indices[i]], list); + } + + Atom at (gh_list (ly_symbol2scm ("bezier-sandwich"), - ly_quote_scm (array_to_list (scontrols, 8)), + ly_quote_scm (list), gh_double2scm (linethick), SCM_UNDEFINED)); - m.dim_[X_AXIS] = Interval (0, delta_off[X_AXIS]); - m.dim_[Y_AXIS] = Interval (0 ? delta_off[Y_AXIS]); + Molecule m; + m.dim_[X_AXIS] = curve.extent (X_AXIS); + m.dim_[Y_AXIS] = curve.extent (Y_AXIS); m.add_atom (&at); return m; } diff --git a/lily/multi-measure-rest-engraver.cc b/lily/multi-measure-rest-engraver.cc index d6c065ccf2..9f8f34fd2a 100644 --- a/lily/multi-measure-rest-engraver.cc +++ b/lily/multi-measure-rest-engraver.cc @@ -9,7 +9,7 @@ #include "musical-request.hh" #include "multi-measure-rest.hh" #include "multi-measure-rest-engraver.hh" -#include "score-column.hh" +#include "paper-column.hh" #include "engraver-group-engraver.hh" #include "timing-translator.hh" #include "bar.hh" diff --git a/lily/my-lily-parser.cc b/lily/my-lily-parser.cc index 3444be3383..ded1ae87a0 100644 --- a/lily/my-lily-parser.cc +++ b/lily/my-lily-parser.cc @@ -168,6 +168,11 @@ My_lily_parser::get_chord (Musical_pitch tonic, Array* add_arr_p, Simultaneous_music*v = new Request_chord; v->set_spot (here_input ()); + /* + UARGAUGRAGRUAUGRUINAGRAUGIRNA + + ugh + */ Chord chord = to_chord (tonic, add_arr_p, sub_arr_p, inversion_p, bass_p); Tonic_req* t = new Tonic_req; diff --git a/lily/note-column.cc b/lily/note-column.cc index 7b69a7c65e..c1e1e6f1cc 100644 --- a/lily/note-column.cc +++ b/lily/note-column.cc @@ -158,20 +158,22 @@ Note_column::do_post_processing () (what? should be done --jcn) scary too?: height is calculated during post_processing */ - Real dy = 0; - Real y = 0; + Real beam_dy = 0; + Real beam_y = 0; + SCM s = b->get_elt_property ("height"); if (s != SCM_UNDEFINED) - dy = gh_scm2double (s); - s = b->get_elt_property ("y-position"); + beam_dy = gh_scm2double (s); + + s = b->get_elt_property ("y-position"); if (s != SCM_UNDEFINED) - y = gh_scm2double (s); + beam_y = gh_scm2double (s); Real x0 = b->first_visible_stem ()->hpos_f (); - Real dydx = b->last_visible_stem ()->hpos_f () - x0; + Real dydx = beam_dy/(b->last_visible_stem ()->hpos_f () - x0); Direction d = stem_l ()->get_direction (); - Real beamy = (stem_l ()->hpos_f () - x0) * dydx + y; + Real beamy = (stem_l ()->hpos_f () - x0) * dydx + beam_y; s = get_elt_property ("rests"); Score_element * se = unsmob_element (gh_car (s)); diff --git a/lily/paper-column.cc b/lily/paper-column.cc index 1b2f4caa8f..67d5577bd2 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -5,7 +5,7 @@ (c) 1997--1999 Han-Wen Nienhuys */ - +#include "moment.hh" #include "paper-column.hh" #include "paper-score.hh" #include "debug.hh" @@ -102,20 +102,6 @@ Paper_column::do_print() const #endif } -bool -Paper_column::breakpoint_b() const -{ - return !line_l_; -} - -Paper_column::Paper_column() -{ - set_axes (X_AXIS, X_AXIS); - - line_l_=0; - rank_i_ = -1; -} - Line_of_score* Paper_column::line_l() const { @@ -131,17 +117,38 @@ Paper_column::column_l () const return (Paper_column*)(this); } -/* - ugh. JUNKME - */ -void -Paper_column::preprocess () + + + +Paper_column::Paper_column (Moment w) +{ + set_elt_property ("when", (new Moment (w))->smobify_self ()); + set_axes (X_AXIS, X_AXIS); + + line_l_=0; + rank_i_ = -1; +} + +Moment +Paper_column::when_mom () const { - /* - JUNKME - */ - minimal_dists_arr_drul_[LEFT].sort (Column_rod::compare); - minimal_dists_arr_drul_[RIGHT].sort (Column_rod::compare); - spring_arr_drul_[LEFT].sort (Column_spring::compare); - spring_arr_drul_[RIGHT].sort (Column_spring::compare); + SCM m = get_elt_property ("when"); + Moment s (0); + if (SMOB_IS_TYPE_B(Moment, m)) + { + s = *SMOB_TO_TYPE (Moment,m); + } + return s; +} + +bool +Paper_column::musical_b () const +{ + SCM m = get_elt_property ("shortest-starter"); + Moment s (0); + if (SMOB_IS_TYPE_B(Moment, m)) + { + s = *SMOB_TO_TYPE (Moment,m); + } + return s != Moment(0); } diff --git a/lily/score-column.cc b/lily/score-column.cc index 334a35d4ba..40363f393e 100644 --- a/lily/score-column.cc +++ b/lily/score-column.cc @@ -1,34 +1,7 @@ /* - score-column.cc -- implement Score_column + score-column.cc -- implement Paper_column source file of the GNU LilyPond music typesetter (c) 1997--1999 Han-Wen Nienhuys */ - -#include "debug.hh" -#include "paper-column.hh" -#include "score-column.hh" -#include "command-request.hh" - -Score_column::Score_column (Moment w) -{ - when_ = w; -} - -void -Score_column::do_print() const -{ -#ifndef NPRINT - DEBUG_OUT << " at " << when_ << '\n'; - DEBUG_OUT << "Shortest playing: " << shortest_playing_mom_ << " shortest starter: " << shortest_starter_mom_; - Paper_column::do_print(); -#endif -} - - -bool -Score_column::musical_b () const -{ - return shortest_starter_mom_ != Moment(0); -} diff --git a/lily/score-element.cc b/lily/score-element.cc index 7e0c8e60b1..b7d6ce8a79 100644 --- a/lily/score-element.cc +++ b/lily/score-element.cc @@ -476,7 +476,11 @@ Score_element::mark_smob (SCM ses) void * mp = (void*) gh_cdr(ses); Score_element * s = (Score_element*) mp; - assert (s->self_scm_ == ses); + if (s->self_scm_ != ses) + { + programming_error ("SMOB marking gone awry"); + return SCM_EOL; + } return s->element_property_alist_; } diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index 696acfa404..5f7c1a0f5a 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -12,7 +12,7 @@ #include "score-engraver.hh" #include "paper-score.hh" #include "musical-request.hh" -#include "score-column.hh" +#include "paper-column.hh" #include "command-request.hh" #include "paper-def.hh" @@ -29,7 +29,7 @@ void Score_engraver::prepare (Moment w) { Global_translator::prepare (w); - set_columns (new Score_column (w), new Score_column (w)); + set_columns (new Paper_column (w), new Paper_column (w)); command_column_l_->set_elt_property ("breakable", SCM_BOOL_T); post_move_processing(); @@ -171,8 +171,8 @@ Score_engraver::do_pre_move_processing() } void -Score_engraver::set_columns (Score_column *new_command_l, - Score_column *new_musical_l) +Score_engraver::set_columns (Paper_column *new_command_l, + Paper_column *new_musical_l) { if (command_column_l_ && command_column_l_->linked_b()) { diff --git a/lily/slur.cc b/lily/slur.cc index ce3429f892..f13ba1dd53 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -81,13 +81,6 @@ Slur::do_pre_processing () } -static int -Note_column_compare (Note_column *const&n1 , Note_column* const&n2) -{ - return Item::left_right_compare (n1, n2); -} - - Offset Slur::encompass_offset (Note_column const* col) const { @@ -135,10 +128,10 @@ Slur::encompass_offset (Note_column const* col) const void Slur::do_post_processing () { - Link_array encompass_arr = + Link_array encompass_arr = Group_interface__extract_elements (this, (Note_column*)0, "note-columns"); - encompass_arr.sort (Note_column_compare); + if (!get_direction ()) set_direction (get_default_dir ()); diff --git a/lily/spacing-engraver.cc b/lily/spacing-engraver.cc index e8a5e38292..7916353747 100644 --- a/lily/spacing-engraver.cc +++ b/lily/spacing-engraver.cc @@ -8,7 +8,7 @@ */ #include "musical-request.hh" -#include "score-column.hh" +#include "paper-column.hh" #include "spacing-engraver.hh" #include "spacing-spanner.hh" @@ -92,11 +92,12 @@ Spacing_engraver::do_pre_move_processing () shortest_playing = shortest_playing (get_staff_info ().musical_pcol_l ()); + Paper_column * sc + = dynamic_cast (get_staff_info ().musical_pcol_l ()); - sc->shortest_playing_mom_ = shortest_playing; - sc->shortest_starter_mom_ = starter; + sc->set_elt_property ("shortest-playing", (new Moment (shortest_playing))->smobify_self ()); + + sc->set_elt_property ("shortest-starter", (new Moment (starter))->smobify_self ()); } void diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index b7a44615b7..d906f84f56 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -8,7 +8,7 @@ */ #include "spacing-spanner.hh" -#include "score-column.hh" +#include "paper-column.hh" #include "dimensions.hh" #include "paper-def.hh" #include "warn.hh" @@ -38,21 +38,17 @@ Spacing_spanner::Spacing_spanner () */ Array -Spacing_spanner::do_measure (Link_array cols) const +Spacing_spanner::do_measure (Link_array cols) const { - for (int i =0 ; i < cols.size (); i++) - { - cols[i]->preprocess (); - cols[i]->print (); - } - Moment shortest; shortest.set_infinite (1); for (int i =0 ; i < cols.size (); i++) { if (cols[i]->musical_b ()) { - shortest = shortest shortest_starter_mom_; + SCM st = cols[i]->get_elt_property ("shortest-starter"); + + shortest = shortest cols) const for (int j=0; j < 4; j++) { - Score_column * lc = dynamic_cast (combinations[j][0]); - Score_column *rc = dynamic_cast (combinations[j][1]); + Paper_column * lc = dynamic_cast (combinations[j][0]); + Paper_column *rc = dynamic_cast (combinations[j][1]); if (!lc || !rc) continue; @@ -176,7 +172,7 @@ Spacing_spanner::do_measure (Link_array cols) const Do something if breakable column has no spacing hints set. */ Real -Spacing_spanner::default_bar_spacing (Score_column *lc, Score_column *rc, +Spacing_spanner::default_bar_spacing (Paper_column *lc, Paper_column *rc, Moment shortest) const { Real symbol_distance = lc->extent (X_AXIS)[RIGHT] ; @@ -197,9 +193,14 @@ Spacing_spanner::default_bar_spacing (Score_column *lc, Score_column *rc, Real -Spacing_spanner::note_spacing (Score_column *lc, Score_column *rc, Moment shortest) const +Spacing_spanner::note_spacing (Paper_column *lc, Paper_column *rc, Moment shortest) const { - Moment shortest_playing_len = lc->shortest_playing_mom_; + Moment shortest_playing_len = 0; + SCM s = lc->get_elt_property ("shortest-playing"); + if (SMOB_IS_TYPE_B(Moment, s)) + shortest_playing_len = *SMOB_TO_TYPE (Moment, s); + + if (! shortest_playing_len) { programming_error ("Can't find a ruling note at " + lc->when_mom ().str ()); @@ -237,7 +238,7 @@ Spacing_spanner::note_spacing (Score_column *lc, Score_column *rc, Moment shorte This routine reads the DIR_LIST property of both its L and R arguments. */ Real -Spacing_spanner::stem_dir_correction (Score_column*l, Score_column*r) const +Spacing_spanner::stem_dir_correction (Paper_column*l, Paper_column*r) const { SCM dl = l->get_elt_property ("dir-list"); SCM dr = r->get_elt_property ("dir-list"); @@ -288,11 +289,11 @@ Spacing_spanner::get_springs () const Array springs; SCM last_col = pscore_l_->line_l_->get_elt_property ("columns"); - Link_array measure; + Link_array measure; for (SCM s = last_col; gh_pair_p (s); s = gh_cdr (s)) { Score_element * elt = unsmob_element (gh_car (s)); - Score_column* sc = dynamic_cast (elt); + Paper_column* sc = dynamic_cast (elt); measure.push (sc); if (sc->breakable_b ()) { diff --git a/lily/spanner.cc b/lily/spanner.cc index b60fe1cf37..1af6d21283 100644 --- a/lily/spanner.cc +++ b/lily/spanner.cc @@ -13,7 +13,7 @@ #include "paper-score.hh" #include "molecule.hh" #include "paper-outputter.hh" -#include "score-column.hh" +#include "paper-column.hh" #include "line-of-score.hh" #include "break-align-item.hh" @@ -200,7 +200,7 @@ Spanner::do_space_processing () Real Spanner::get_broken_left_end_align () const { - Score_column *sc = dynamic_cast (spanned_drul_[LEFT]->column_l()); + Paper_column *sc = dynamic_cast (spanned_drul_[LEFT]->column_l()); // Relevant only if left span point is first column in line if(sc != NULL && @@ -209,7 +209,7 @@ Spanner::get_broken_left_end_align () const /* We used to do a full search for the Break_align_item. - But that doesn't make a difference, since the Score_column + But that doesn't make a difference, since the Paper_column is likely to contain only a Break_align_item. */ return sc->extent (X_AXIS)[RIGHT]; diff --git a/lily/staff-info.cc b/lily/staff-info.cc index da993f9d95..38d1f6fa8d 100644 --- a/lily/staff-info.cc +++ b/lily/staff-info.cc @@ -9,7 +9,7 @@ #include "proto.hh" #include "staff-info.hh" -#include "score-column.hh" +#include "paper-column.hh" Staff_info::Staff_info() { diff --git a/lily/stem.cc b/lily/stem.cc index 232caf5aed..b0ef277ba9 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -329,7 +329,7 @@ Stem::do_pre_processing () /** set stem directions for hinting the optical spacing correction. - Modifies DIR_LIST property of the Stem's Score_column + Modifies DIR_LIST property of the Stem's Paper_column TODO: more advanced: supply height of noteheads as well, for more advanced spacing possibilities */ diff --git a/lily/template5.cc b/lily/template5.cc index f325d0bdc2..22928dedc2 100644 --- a/lily/template5.cc +++ b/lily/template5.cc @@ -11,9 +11,7 @@ #include "string.hh" #include "moment.hh" #include "real.hh" - #include "interval.tcc" - #include "compare.hh" Rational diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index a590a6ba78..028c343a16 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.3.13 -Entered-date: 18DEC99 +Version: 1.3.14 +Entered-date: 19DEC99 Description: Keywords: music notation typesetting midi fonts engraving Author: hanwen@cs.uu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 1000k lilypond-1.3.13.tar.gz + 1000k lilypond-1.3.14.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.3.13.tar.gz + 1000k lilypond-1.3.14.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index e297d6b37a..d616aaa06d 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 1.3.13 +Version: 1.3.14 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.13.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.14.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond # get Packager from (undocumented?) ~/.rpmmacros!