From: Han-Wen Nienhuys Date: Wed, 3 Nov 1999 15:06:40 +0000 (+0100) Subject: release: 1.3.3 X-Git-Tag: release/1.3.3 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=6fd2c101db89f70b080ec95fc0b458a760bd336a;p=lilypond.git release: 1.3.3 --- diff --git a/CHANGES b/CHANGES index 068c46dcaf..a236328eae 100644 --- a/CHANGES +++ b/CHANGES @@ -1,14 +1,8 @@ -pl 2.jcn3 - - chords: - * Chord is item - * junked TeX hacking - * configurable with styled strings from scm - * fixes: dim, /no X, tonic != C +pl 2.hwn1 + - bf: dynamic style. + - prepare to move dir_ into SCM. pl 2.jcn2 - - chords from scm - -pl 2.jcn1 - chord fixes: * inversion request: no inversion guessing for chord entry * bass request: c/+b to add bass note not part of chord @@ -17,10 +11,11 @@ pl 2.jcn1 * C:m5- displays as "Cdim" * C:m5-7- displays as "Co" -pl 3.jcn1 +pl 2.jcn1 - moved bracket vars to params - reverted broken lilypond-devel +************* pl 1.uu1 - David's patches: * mfplain.mp detection diff --git a/Documentation/topdocs/INSTALL.texi b/Documentation/topdocs/INSTALL.texi index 1e40606d89..f4cd0c6efd 100644 --- a/Documentation/topdocs/INSTALL.texi +++ b/Documentation/topdocs/INSTALL.texi @@ -80,9 +80,13 @@ Available at @uref{ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry,ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry} or at mirror site @uref{ftp://ftp.dante.de,ftp://ftp.dante.de} -@item MetaPost, if you want to use direct PostScript output. Please -note that tetex-0.4pl8 (included with Redhat 5.x) does not include -@file{mfplain.mp}, which is needed for producing the scaleable font files. +@item MetaPost, needed for generating PostScript fonts. Please +note that tetex-0.4pl8 (included with Redhat 5.x) does not include +@file{mfplain.mp}, which is needed for producing the scalable font +files. + +If you do not want to use PostScript output, edit @file{mf/GNUmakefile}. + @end itemize diff --git a/INSTALL.txt b/INSTALL.txt index 5021801990..b4ed349865 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -76,11 +76,13 @@ Prerequisites (ftp://ftp.ctan.org/tex-archive/macros/latex/contrib/supported/geometry) or at mirror site ftp://ftp.dante.de (ftp://ftp.dante.de) - * MetaPost, if you want to use direct PostScript output. Please note - that tetex-0.4pl8 (included with Redhat 5.x) does not include - `mfplain.mp', which is needed for producing the scaleable font + * MetaPost, needed for generating PostScript fonts. Please note that + tetex-0.4pl8 (included with Redhat 5.x) does not include + `mfplain.mp', which is needed for producing the scalable font files. + If you do not want to use PostScript output, edit `mf/GNUmakefile'. + Running ======= diff --git a/TODO b/TODO index 95366c40c2..07f05fc75b 100644 --- a/TODO +++ b/TODO @@ -18,10 +18,6 @@ Grep -i for TODO, FIXME and ugh/ugr/urg. ctor_dict["Score_element"]->create_func (); . * acc at tied note after linebreak. -. * fix font-naming and selecting -. * fix naming: \interline Context.staffLineLeading, staff_line_leading (), -staff_position staff_space -. * chord tonic: placement of accidental C#, Cb (from scm and C++) . * note head on stem err msg in dutch. . * why need to run -C mf twice? . * setting indent to 0 with \shape fails diff --git a/VERSION b/VERSION index 0d7c252ced..5b55b3beb1 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=2 -MY_PATCH_LEVEL=jcn3 +PATCH_LEVEL=3 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/aclocal.m4 b/aclocal.m4 index 3bd68ad62f..c3aad4ba21 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -565,7 +565,7 @@ AC_DEFUN(AC_STEPMAKE_TEXMF, [ # # For now let people define these in their environments # - : ${MFPLAIN_MP=`kpsewhich mfplain.mp`} + : ${MFPLAIN_MP=`kpsewhich mp mfplain.mp`} : ${INIMETAPOST_FLAGS='-interaction=nonstopmode'} rm -f mfput.* diff --git a/configure b/configure index c59995198b..394dda912c 100755 --- a/configure +++ b/configure @@ -2553,7 +2553,7 @@ echo "configure:2545: checking for working metafont mode" >&5 # # For now let people define these in their environments # - : ${MFPLAIN_MP=`kpsewhich mfplain.mp`} + : ${MFPLAIN_MP=`kpsewhich mp mfplain.mp`} : ${INIMETAPOST_FLAGS='-interaction=nonstopmode'} rm -f mfput.* diff --git a/flower/include/array.hh b/flower/include/array.hh index f8f6e352fd..d6349588aa 100644 --- a/flower/include/array.hh +++ b/flower/include/array.hh @@ -13,7 +13,7 @@ #endif /// copy a bare (C-)array from #src# to #dest# sized #count# -template void arrcpy (T*dest, T const*src, int count); +template void arrcpy (T*dest, T*src, int count); /** Scaleable array/stack template, for a type T with default constructor. @@ -241,7 +241,7 @@ public: set_size (size_ + src.size_); arrcpy (array_p_+s,src.array_p_, src.size_); } - Array slice (int lower, int upper) const; + Array slice (int lower, int upper) ; void reverse(); }; diff --git a/flower/include/array.icc b/flower/include/array.icc index 71de84a8ac..8b876ce85d 100644 --- a/flower/include/array.icc +++ b/flower/include/array.icc @@ -19,7 +19,7 @@ */ template INLINE void -arrcpy (T*dest, T const* src, int count) +arrcpy (T*dest, T*src, int count) { for (int i_shadows_local=0; i_shadows_local < count ; i_shadows_local++) #ifdef __powerpc__ @@ -98,7 +98,7 @@ Array::remove_array_p () template INLINE Array -Array::slice (int lower, int upper) const +Array::slice (int lower, int upper) { assert (lower >= 0 && lower <=upper&& upper <= size_); Array r; diff --git a/input/test/banter-chords.ly b/input/test/banter-chords.ly deleted file mode 100644 index 307b8656fa..0000000000 --- a/input/test/banter-chords.ly +++ /dev/null @@ -1,66 +0,0 @@ -\version "1.3.2"; - -\header{ -enteredby = "jcn"; -copyright = "public domain"; -TestedFeatures = "Banter named chords"; -} - -% test German (Banter) naming -% for more conventional naming, comment scm stuff out - -% { -#(set! pitch-names-alist - (append - '( - ; use these for German naming - ((6 . 0) . ("H" "")) - ((6 . -1) . ("B" ("feta-1" . ""))) - ) - pitch-names-alist)) - -#(set! chord-names-alist - (append - '( - (((0 . 0) (2 . -1) (4 . -1)) . ("m" . ("script" . "5-"))) - ; Co iso Cm5-7- - ; urg, niet te pruimen - ; (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ("" . ("feta-1" . "."))) - (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ("" . ("script" . "o"))) - ))) -% } - -chord = \notes\transpose c''\chords{ - % dim modifier means: lower all implicit additions - c:dim9 - c:dim - c:dim7 - % explicit additions are taken as entered: - c:m5-.7- - % note that 7 is a special case: it's always lowered by 1... - c:dim7-.9 - c:dim9-.11 - - % test German names - b:dim7 - bes:m5- - - \break - - c:sus2 %? - c:sus4 - c^3 - c^3.5 - c:2.6^5 - c:dim^5- - c:dim7^5- - cis:m5- -} - -\score{ - < - \context ChordNames \chord - \context Staff \chord - > -} - diff --git a/input/test/chords.ly b/input/test/chords.ly index cf6251d30d..c74d502430 100644 --- a/input/test/chords.ly +++ b/input/test/chords.ly @@ -1,4 +1,4 @@ -\version "1.3.2"; +\version "1.2.0"; %{ Would this be acceptable/good enough/convenient for entry? @@ -9,7 +9,7 @@ Would this be acceptable/good enough/convenient for entry? Cb ces Cm; Cmin c:3-; c:m; c:min Caug c:5+; c:aug; - Cdim c:3-.5-; c:dim + Cdim c:3-:5-; c:dim Cmaj7 c:7+; c:maj C7 c:7 Csus; Csus4 c:4; c:sus diff --git a/input/test/tie-accidental.ly b/input/test/tie-accidental.ly index 572fb97d7e..15722ba403 100644 --- a/input/test/tie-accidental.ly +++ b/input/test/tie-accidental.ly @@ -9,4 +9,4 @@ g2 gis ~ | gis g4 gis | g2 gis( | )g gis4 gis | -} +}} diff --git a/lily/bar-script-engraver.cc b/lily/bar-script-engraver.cc index 412f0390bb..21de711e9a 100644 --- a/lily/bar-script-engraver.cc +++ b/lily/bar-script-engraver.cc @@ -144,11 +144,11 @@ Bar_script_engraver::create_items (Request *rq) SCM prop = get_property (type_ + "Direction", 0); if (isdir_b (prop)) { - staff_side_p_->dir_ = to_dir (prop); + staff_side_p_->set_direction ( to_dir (prop)); } else { - staff_side_p_->dir_ = UP; + staff_side_p_->set_direction ( UP); } staff_side_p_->set_victim(text_p_); diff --git a/lily/beam.cc b/lily/beam.cc index d75f7906f2..0d7b93157f 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -158,7 +158,7 @@ Beam::auto_knee (SCM gap, bool interstaff_b) { int y = (int)(stems_[i]->chord_start_f () / internote_f) + (int)sinfo_[i].interstaff_f_; - stems_[i]->dir_ = y < knee_y ? UP : DOWN; + stems_[i]->set_direction ( y < knee_y ? UP : DOWN); stems_[i]->set_elt_property ("dir-forced", SCM_BOOL_T); } } @@ -182,10 +182,10 @@ Beam::do_pre_processing () urg: it seems that info on whether beam (voice) dir was forced is being junked here? */ - if (!dir_) - dir_ = get_default_dir (); + if (!get_direction ()) + set_direction ( get_default_dir ()); - set_direction (dir_); + set_direction (get_direction ()); } void @@ -213,8 +213,8 @@ Beam::do_post_processing () if auto-knee did its work, most probably stem directions have changed, so we must recalculate all. */ - dir_ = get_default_dir (); - set_direction (dir_); + set_direction ( get_default_dir ()); + set_direction (get_direction ()); /* auto-knees used to only work for slope = 0 anyway, should be able to set slope per beam @@ -255,8 +255,8 @@ Beam::get_default_dir () const for (int i=0; i dir_ - ? (1 + d * s->dir_)/2 + int current = s->get_direction () + ? (1 + d * s->get_direction ())/2 : s->get_center_distance ((Direction)-d); if (current) @@ -312,7 +312,7 @@ Beam::get_default_dir () const void Beam::set_direction (Direction d) { - dir_ = d; + set_direction ( d); for (int i=0; i remove_elt_property ("dir-forced"); if (force == SCM_UNDEFINED) - s->dir_ = d; + s->set_direction ( d); } } @@ -359,21 +359,21 @@ Beam::check_stemlengths_f (bool set_b) Real y = sinfo_[i].x_ * slope_f_ + left_y_; // correct for knee - if (dir_ != sinfo_[i].dir_) + if (get_direction () != sinfo_[i].get_direction ()) { Real internote_f = sinfo_[i].stem_l_->staff_line_leading_f ()/2; - y -= dir_ * (beam_f / 2 + y -= get_direction () * (beam_f / 2 + (sinfo_[i].mult_i_ - 1) * interbeam_f) / internote_f; if (!i && sinfo_[i].stem_l_->staff_symbol_l () != sinfo_.top ().stem_l_->staff_symbol_l ()) - y += dir_ * (multiple_i_ - (sinfo_[i].stem_l_->flag_i_ - 2) >? 0) + y += get_direction () * (multiple_i_ - (sinfo_[i].stem_l_->flag_i_ - 2) >? 0) * interbeam_f / internote_f; } if (set_b) sinfo_[i].stem_l_->set_stemend (y - sinfo_[i].interstaff_f_); - y *= dir_; + y *= get_direction (); if (y > sinfo_[i].maxy_f_) dy_f = dy_f set_default_extents (); if (s->invisible_b ()) continue; - if (((int)s->chord_start_f ()) && (s->dir_ != s->get_default_dir ())) + if (((int)s->chord_start_f ()) && (s->get_direction () != s->get_default_dir ())) forced_count_i++; total_count_i++; } @@ -433,7 +433,7 @@ Beam::set_steminfo () if (leftx == 0) leftx = info.x_; info.x_ -= leftx; - if (info.dir_ == dir_) + if (info.get_direction () == get_direction ()) { if (forced_count_i == total_count_i) info.idealy_f_ -= shorten_f; @@ -453,7 +453,7 @@ Beam::calculate_slope () { slope_f_ = 0; left_y_ = sinfo_[0].idealy_f_; - left_y_ *= dir_; + left_y_ *= get_direction (); } else { @@ -496,8 +496,8 @@ Beam::calculate_slope () Real damped_slope_dy_f = (solved_slope_f - slope_f_) * dx_f / 2; left_y_ += damped_slope_dy_f; - left_y_ *= dir_; - slope_f_ *= dir_; + left_y_ *= get_direction (); + slope_f_ *= get_direction (); } } @@ -597,7 +597,7 @@ Beam::quantise_left_y (bool extend_b) // isn't this asymmetric ? --hwn // dim(left_y_) = internote - Real dy_f = dir_ * left_y_ * internote_f; + Real dy_f = get_direction () * left_y_ * internote_f; Real beamdx_f = stems_.top ()->hpos_f () - stems_[0]->hpos_f (); Real beamdy_f = beamdx_f * slope_f_ * internote_f; @@ -630,7 +630,7 @@ Beam::quantise_left_y (bool extend_b) quanty_f = iv[BIGGER]; // dim(left_y_) = internote - left_y_ = dir_ * quanty_f / internote_f; + left_y_ = get_direction () * quanty_f / internote_f; } void @@ -645,7 +645,7 @@ Beam::set_stemlens () Real dy_f = check_stemlengths_f (false); for (int i = 0; i < 2; i++) // 2 ? { - left_y_ += dy_f * dir_; + left_y_ += dy_f * get_direction (); quantise_left_y (dy_f); dy_f = check_stemlengths_f (true); if (abs (dy_f) <= epsilon_f) @@ -745,7 +745,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const for (int j = 0; j < lhalfs; j++) { Molecule b (a); - b.translate_axis (-dir_ * dy * (lwholebeams+j), Y_AXIS); + b.translate_axis (-get_direction () * dy * (lwholebeams+j), Y_AXIS); leftbeams.add_molecule (b); } } @@ -770,7 +770,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const for (; j < nogap; j++) { Molecule b (a); - b.translate_axis (-dir_ * dy * j, Y_AXIS); + b.translate_axis (-get_direction () * dy * j, Y_AXIS); rightbeams.add_molecule (b); } // TODO: notehead widths differ for different types @@ -783,9 +783,9 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const { Molecule b (a); if (!here->invisible_b ()) - b.translate (Offset (gap_f, -dir_ * dy * j)); + b.translate (Offset (gap_f, -get_direction () * dy * j)); else - b.translate (Offset (0, -dir_ * dy * j)); + b.translate (Offset (0, -get_direction () * dy * j)); rightbeams.add_molecule (b); } @@ -796,7 +796,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const for (; j < rwholebeams + rhalfs; j++) { Molecule b (a); - b.translate_axis (-dir_ * dy * j, Y_AXIS); + b.translate_axis (-get_direction () * dy * j, Y_AXIS); rightbeams.add_molecule (b); } diff --git a/lily/bezier.cc b/lily/bezier.cc index 3bc35d2da4..024db5f7b8 100644 --- a/lily/bezier.cc +++ b/lily/bezier.cc @@ -338,8 +338,8 @@ Bezier_bow::calc_clipping () Real end_dy = 0 >? end_h - clip_h; Real pi = M_PI; - Real begin_alpha = (control_[1] - control_[0]).arg () + dir_ * alpha_; - Real end_alpha = pi - (control_[2] - control_[3]).arg () - dir_ * alpha_; + Real begin_alpha = (control_[1] - control_[0]).arg () + get_direction () * alpha_; + Real end_alpha = pi - (control_[2] - control_[3]).arg () - get_direction () * alpha_; Real max_alpha = clip_angle / 90 * pi / 2; if ((begin_dy < 0) && (end_dy < 0) @@ -354,8 +354,8 @@ Bezier_bow::calc_clipping () { Real dy = (begin_dy + end_dy) / 4; dy *= cos (alpha_); - encompass_[0][Y_AXIS] += dir_ * dy; - encompass_[encompass_.size () - 1][Y_AXIS] += dir_ * dy; + encompass_[0][Y_AXIS] += get_direction () * dy; + encompass_[encompass_.size () - 1][Y_AXIS] += get_direction () * dy; } else { @@ -366,8 +366,8 @@ Bezier_bow::calc_clipping () if (end_alpha >= max_alpha) end_dy = 0 >? c * end_alpha / max_alpha * end_h; - encompass_[0][Y_AXIS] += dir_ * begin_dy; - encompass_[encompass_.size () - 1][Y_AXIS] += dir_ * end_dy; + encompass_[0][Y_AXIS] += get_direction () * begin_dy; + encompass_[encompass_.size () - 1][Y_AXIS] += get_direction () * end_dy; Offset delta = encompass_[encompass_.size () - 1] - encompass_[0]; alpha_ = delta.arg (); @@ -466,8 +466,6 @@ Bezier_bow::calc_tangent_controls () end_p = ijk_p; end_rc = default_rc; } - BEZIER_BOW_DEBUG_OUT << "begin " << begin_p[X_AXIS] << ", " << begin_p[Y_AXIS] << endl; - BEZIER_BOW_DEBUG_OUT << "end " << end_p[X_AXIS] << ", " << end_p[Y_AXIS] << endl; Real height =control_[1][Y_AXIS]; for (int i = 0; i < encompass_.size (); i++ ) @@ -507,17 +505,10 @@ Bezier_bow::calc_tangent_controls () Real c3 = begin_p[Y_AXIS] > end_p[Y_AXIS] ? begin_p[Y_AXIS] - rc3 * begin_p[X_AXIS] : end_p[Y_AXIS] - rc3 * end_p[X_AXIS]; - BEZIER_BOW_DEBUG_OUT << "y1 = " << rc1 << " x + 0" << endl; - BEZIER_BOW_DEBUG_OUT << "y2 = " << rc2 << " x + " << c2 << endl; - BEZIER_BOW_DEBUG_OUT << "y3 = " << rc3 << " x + " << c3 << endl; control_[1][X_AXIS] = c3 / (rc1 - rc3); control_[1][Y_AXIS] = rc1 * control_[1][X_AXIS]; control_[2][X_AXIS] = (c3 - c2) / (rc2 - rc3); - BEZIER_BOW_DEBUG_OUT << "c2[X_AXIS] = " << control_[2][X_AXIS] << endl; - BEZIER_BOW_DEBUG_OUT << "(c3 - c2) = " << (c3 - c2) << endl; - BEZIER_BOW_DEBUG_OUT << "(rc2 - rc3) = " << (rc2 - rc3) << endl; control_[2][Y_AXIS] = rc2 * control_[2][X_AXIS] + c2; - BEZIER_BOW_DEBUG_OUT << "c2[Y_AXIS]" << control_[2][Y_AXIS] << endl; calc_return (begin_alpha, end_alpha); } @@ -561,9 +552,9 @@ Bezier_bow::print () const } void -Bezier_bow::set (Array points, int dir) +Bezier_bow::set (Array points, Direction dir) { - dir_ = dir; + set_direction (dir); encompass_ = points; } @@ -578,14 +569,14 @@ Bezier_bow::transform () encompass_.rotate (-alpha_); - if (dir_ == DOWN) + if (get_direction () == DOWN) encompass_.flipy (); } void Bezier_bow::transform_back () { - if (dir_ == DOWN) + if (get_direction () == DOWN) { control_.flipy (); return_.flipy (); diff --git a/lily/bow.cc b/lily/bow.cc index a3214f281e..6033cfe926 100644 --- a/lily/bow.cc +++ b/lily/bow.cc @@ -67,7 +67,7 @@ Drul_array Bow::curve_extent_drul () const { Bezier_bow b (paper_l ()); - b.set (get_encompass_offset_arr (), dir_); + b.set (get_encompass_offset_arr (), get_direction ()); b.calc (); return b.curve_extent_drul_; } @@ -76,7 +76,7 @@ Array Bow::get_controls () const { Bezier_bow b (paper_l ()); - b.set (get_encompass_offset_arr (), dir_); + b.set (get_encompass_offset_arr (), get_direction ()); b.calc (); Array controls; controls.set_size (8); diff --git a/lily/breathing-sign.cc b/lily/breathing-sign.cc index 7c8e44b4e5..2e6ebde757 100644 --- a/lily/breathing-sign.cc +++ b/lily/breathing-sign.cc @@ -21,7 +21,7 @@ TODO: --> see breathing-sign-engraver.cc Breathing_sign::Breathing_sign () { - dir_ = UP; + set_direction (UP); set_elt_property ("breakable", SCM_BOOL_T); set_elt_property ("visibility-lambda", ly_ch_C_eval_scm ("non_postbreak_visibility")); @@ -33,7 +33,7 @@ Breathing_sign::set_vertical_position (Direction updown) assert(updown >= -1 && updown <= +1); if(updown != 0) - dir_ = updown; + set_direction (updown); } Molecule* @@ -53,6 +53,6 @@ Breathing_sign::do_post_processing() { Real dl = staff_line_leading_f(); - translate_axis(2.0 * dl * dir_, Y_AXIS); + translate_axis(2.0 * dl * get_direction (), Y_AXIS); } diff --git a/lily/chord-name-engraver.cc b/lily/chord-name-engraver.cc index 21f0a99f1a..ef0744d627 100644 --- a/lily/chord-name-engraver.cc +++ b/lily/chord-name-engraver.cc @@ -20,7 +20,6 @@ ADD_THIS_TRANSLATOR (Chord_name_engraver); Chord_name_engraver::Chord_name_engraver () { - chord_p_ = 0; tonic_req_ = 0; inversion_req_ = 0; bass_req_ = 0; @@ -62,7 +61,7 @@ Chord_name_engraver::do_try_music (Music* m) void Chord_name_engraver::do_process_requests () { - if (chord_p_) + if (text_p_arr_.size ()) return; if (!pitch_arr_.size ()) return; @@ -72,20 +71,36 @@ Chord_name_engraver::do_process_requests () if (gh_boolean_p (chord_inversion)) find_inversion_b = gh_scm2bool (chord_inversion); - chord_p_ = new Chord (to_chord (pitch_arr_, tonic_req_, inversion_req_, bass_req_, find_inversion_b)); + Chord chord = to_chord (pitch_arr_, tonic_req_, inversion_req_, bass_req_, + find_inversion_b); - announce_element (Score_element_info (chord_p_, 0)); + Text_item* item_p = new Text_item; + + /* + TODO: + - switch on property, add american (?) chordNameStyle: + Chord::american_str (...) + + SCM chordNameStyle = get_property ("chordNameStyle", 0); + if (chordNameStyle == "Banter") + item_p->text_str_ = chord.banter_str (inversion); + */ + + item_p->text_str_ = chord.banter_str (); + + text_p_arr_.push (item_p); + announce_element (Score_element_info (item_p, 0)); } void Chord_name_engraver::do_pre_move_processing () { - if (chord_p_) + for (int i=0; i < text_p_arr_.size (); i++) { - typeset_element (chord_p_); + typeset_element (text_p_arr_[i]); } + text_p_arr_.clear (); pitch_arr_.clear (); - chord_p_ = 0; tonic_req_ = 0; inversion_req_ = 0; bass_req_ = 0; diff --git a/lily/chord.cc b/lily/chord.cc index 8dbc57a6c7..adef8d4991 100644 --- a/lily/chord.cc +++ b/lily/chord.cc @@ -9,16 +9,7 @@ #include "chord.hh" #include "musical-request.hh" #include "warn.hh" -#include "debug.hh" -#include "molecule.hh" -#include "paper-def.hh" -#include "lookup.hh" -SCM -pitch2scm (Musical_pitch p) -{ - return gh_cons (gh_int2scm (p.notename_i_), gh_int2scm (p.accidental_i_)); -} /* construct from parser output @@ -26,7 +17,7 @@ pitch2scm (Musical_pitch p) Chord to_chord (Musical_pitch tonic, Array* add_arr_p, Array* sub_arr_p, Musical_pitch* inversion_p, Musical_pitch* bass_p) { - // urg: catch dim modifier: 3rd, 5th, 7th, .. should be lowered + // urg: catch dim modifier: 5th and 7th should be lowered bool dim_b = false; for (int i=0; i < add_arr_p->size (); i++) { @@ -37,10 +28,12 @@ to_chord (Musical_pitch tonic, Array* add_arr_p, Array* add_arr_p, Array pitch_arr, Musical_pitch* inversion_p, Musica } Chord::Chord (Chord const& chord) - : Item (chord) { pitch_arr_ = chord.pitch_arr_; inversion_p_ = chord.inversion_p_ ? new Musical_pitch (*chord.inversion_p_) : 0; @@ -220,33 +210,19 @@ Chord::~Chord () { delete inversion_p_; delete bass_p_; - // AAARGH, why doesn't Score_elt do this? - unsmobify_self (); -} - -Array -Chord::base_arr (Musical_pitch p) -{ - Array base; - base.push (p); - p.transpose (Musical_pitch (2)); - base.push (p); - p.transpose (Musical_pitch (2, -1)); - base.push (p); - return base; } void -Chord::rebuild_transpose (Array* pitch_arr_p, Musical_pitch tonic, bool fix7_b) +Chord::rebuild_transpose (Array* pitch_arr_p, Musical_pitch tonic) { for (int i = 0; i < pitch_arr_p->size (); i++) { Musical_pitch p = tonic; Musical_pitch q = (*pitch_arr_p)[i]; - p.transpose (q); // duh, c7 should mean - if (fix7_b && (step_i (tonic, p) == 7)) - p.accidental_i_--; + if (q.notename_i_ == 6) + q.accidental_i_--; + p.transpose (q); (*pitch_arr_p)[i] = p; } pitch_arr_p->sort (Musical_pitch::compare); @@ -371,28 +347,24 @@ Chord::to_pitch_arr () const } void -Chord::find_additions_and_subtractions (Array pitch_arr, Array* add_arr_p, Array* sub_arr_p) const +Chord::find_additions_and_subtractions (Array* add_arr_p, Array* sub_arr_p) const { - Musical_pitch tonic = pitch_arr[0]; + Musical_pitch tonic = pitch_arr_[0]; /* construct an array of thirds for a normal chord */ Array all_arr; all_arr.push (tonic); - if (step_i (tonic, pitch_arr.top ()) >= 5) - all_arr.push (pitch_arr.top ()); - else - all_arr.push (base_arr (tonic).top ()); + all_arr.push (pitch_arr_.top ()); all_arr.concat (missing_thirds_pitch_arr (&all_arr)); all_arr.sort (Musical_pitch::compare); int i = 0; int j = 0; - Musical_pitch last_extra = tonic; - while ((i < all_arr.size ()) || (j < pitch_arr.size ())) + while ((i < all_arr.size ()) || (j < pitch_arr_.size ())) { Musical_pitch a = all_arr [i pitch_arr, Array pitch_arr, Arraypush (p); - last_extra = p; - (j < pitch_arr.size ()) ? j++ : i++; + (j < pitch_arr_.size ()) ? j++ : i++; } /* a third is missing: chord subtraction */ else { - if (last_extra.notename_i_ != a.notename_i_) - sub_arr_p->push (a); + sub_arr_p->push (a); (i < all_arr.size ()) ? i++ : j++; - last_extra = tonic; } } - /* add missing basic steps */ - if (step_i (tonic, pitch_arr.top ()) < 3) - sub_arr_p->push (base_arr (tonic)[1]); - if (step_i (tonic, pitch_arr.top ()) < 5) - sub_arr_p->push (base_arr (tonic).top ()); - /* - add highest addition, because it names chord, if greater than 5 - or non-standard - (1, 3 and) 5 not additions: part of normal chord + add highest addition, because it names chord + (1, 3 and) 5 not an addition: part of normal chord */ - if ((step_i (tonic, pitch_arr.top ()) > 5) - || pitch_arr.top ().accidental_i_) - add_arr_p->push (pitch_arr.top ()); + if (step_i (tonic, pitch_arr_.top () > 5)) + add_arr_p->push (pitch_arr_.top ()); } - /* - word is roman text or styled text: - "text" - ("style" . "text") + TODO: + reduce guess work: dim chord + other naming conventions `American'? + don't use TeX constructs + user defined chords-names for specific chords: + tonic, additions, subtractions, inversion, bass -> "my-chord-name" */ -Molecule -Chord::ly_word2molecule (SCM scm) const -{ - String style; - if (gh_pair_p (scm)) - { - style = ly_scm2string (gh_car (scm)); - scm = gh_cdr (scm); - } - String text = ly_scm2string (scm); - return lookup_l ()->text (style, text, paper_l ()); -} - -/* - scm is word or list of words: - word - (word word) - */ -Molecule -Chord::ly_text2molecule (SCM scm) const -{ - Molecule mol; - if (gh_list_p (scm)) - { - while (gh_cdr (scm) != SCM_EOL) - { - mol.add_at_edge (X_AXIS, RIGHT, - ly_word2molecule (gh_car (scm)), 0); - scm = gh_cdr (scm); - } - scm = gh_car (scm); - } - mol.add_at_edge (X_AXIS, RIGHT, - ly_word2molecule (scm), 0); - return mol; -} - -Molecule -Chord::pitch2molecule (Musical_pitch p) const -{ - SCM name = scm_eval (gh_list (gh_symbol2scm ("user-pitch-name"), ly_quote_scm (pitch2scm (p)), SCM_UNDEFINED)); - - if (name != SCM_UNSPECIFIED) - { - return ly_text2molecule (name); - } - - Molecule mol = lookup_l ()->text ("", p.str ().left_str (1).upper_str (), paper_l ()); - if (p.accidental_i_) - // urg, how to select the feta-1 font? - mol.add_at_edge (X_AXIS, RIGHT, - lookup_l ()->accidental (p.accidental_i_, 0), 0); - return mol; -} - -Musical_pitch -diff_pitch (Musical_pitch tonic, Musical_pitch p) +String +Chord::banter_str () const { - Musical_pitch diff (p.notename_i_ - tonic.notename_i_, - p.accidental_i_ - tonic.accidental_i_, - p.octave_i_ - tonic.octave_i_); - - while (diff.notename_i_ >= 7) - { - diff.notename_i_ -= 7; - diff.octave_i_ ++; - } - while (diff.notename_i_ < 0) - { - diff.notename_i_ += 7; - diff.octave_i_ --; - } - - diff.accidental_i_ -= (tonic.semitone_pitch () + diff.semitone_pitch ()) - - p.semitone_pitch (); - - return diff; -} - -bool -Chord::user_chord_name (Array pitch_arr, Chord_name* name_p) const -{ - SCM chord = SCM_EOL; - Array chord_type = pitch_arr; - rebuild_transpose (&chord_type, diff_pitch (pitch_arr[0], Musical_pitch (0)), false); - - for (int i= chord_type.size (); i--; ) - chord = gh_cons (pitch2scm (chord_type[i]), chord); + Musical_pitch tonic = pitch_arr_[0]; - SCM name = scm_eval (gh_list (gh_symbol2scm ("user-chord-name"), ly_quote_scm (chord), SCM_UNDEFINED)); - if (name != SCM_UNSPECIFIED) - { - name_p->modifier_mol = ly_text2molecule (gh_car (name)); - name_p->addition_mol = ly_text2molecule (gh_cdr (name)); - return true; - } - return false; -} + //urg, should do translation in scheme. + char const *acc[] = {"\\textflat\\textflat ", "\\textflat ", "", "\\textsharp " , "\\textsharp\\textsharp "}; + String tonic_str = tonic.str (); + tonic_str = tonic_str.left_str (1).upper_str () + + acc[tonic.accidental_i_ + 2]; -void -Chord::banter (Array pitch_arr, Chord_name* name_p) const -{ Array add_arr; Array sub_arr; - find_additions_and_subtractions (pitch_arr, &add_arr, &sub_arr); + find_additions_and_subtractions (&add_arr, &sub_arr); + Array scale; for (int i=0; i < 7; i++) scale.push (Musical_pitch (i)); - Musical_pitch tonic = pitch_arr[0]; - rebuild_transpose (&scale, tonic, true); - - /* - Does chord include this step? -1 if flat - */ - int has[16]; - for (int i=0; i<16; i++) - has[i] = 0; + // 7 always means 7-... + // scale.push (Musical_pitch (6, -1)); // b - String mod_str; - String add_str; + rebuild_transpose (&scale, tonic); + + bool has3m_b = false; + bool has4_b = false; + bool has5m_b = false; + String str; + String minor_str; String sep_str; for (int i = 0; i < add_arr.size (); i++) { Musical_pitch p = add_arr[i]; int step = step_i (tonic, p); + if (step == 4) + has4_b = true; int accidental = p.accidental_i_ - scale[(step - 1) % 7].accidental_i_; - if ((step < 16) && (has[step] != -1)) - has[step] = accidental == -1 ? -1 : 1; if ((step == 3) && (accidental == -1)) { - mod_str = "m"; + minor_str = "m"; + has3m_b = true; } /* - urg. - This routine gets a lot simpler, if we don't try to be catch - the 'dim' chords. However, we'll have to list every exceptional - 'dim' chord in scm: otherwise we'll get stuff like Cdim7-, iso - Cdim7, etc + have Cdim rather than Cm5-, even if it's a prefix */ -#ifdef SMART_DIM - else if ((step == 5) && (accidental == -1) && (has[3] == -1)) + else if ((step == 5) && (accidental == -1) && has3m_b) { - mod_str = "dim"; + minor_str = "dim"; + has5m_b = true; } -#endif else if (accidental - || (!(step % 2) - || ((i == add_arr.size () - 1) && (step > 5)))) + || (!(step % 2) || ((i + 1 == add_arr.size ()) && (step > 5)))) { - add_str += sep_str; + str += sep_str; sep_str = "/"; if ((step == 7) && (accidental == 1)) { - add_str += "maj7"; + str += "maj7"; } else -#ifdef SMART_DIM - { - if ((step % 2) && (accidental == -1) - && (has[3] == -1) && (has[5] == -1)) - { - if (i != add_arr.size () - 1) - sep_str = ""; + { + /* + if has3m_b and has5m_b, assume dim + don't mention dim-addition, except for chord-namer + */ + if (((step/2) && (accidental == -1)) + && has3m_b && has5m_b) + { + if (i == add_arr.size () - 1) + str += to_str (step); else - add_str += to_str (step); + sep_str = ""; } else -#endif { - add_str += to_str (step); - if (accidental) - add_str += accidental < 0 ? "-" : "+"; + str += to_str (step); + if (accidental) + str += accidental < 0 ? "-" : "+"; } -#ifdef SMART_DIM - } -#endif + } } } @@ -631,27 +496,48 @@ Chord::banter (Array pitch_arr, Chord_name* name_p) const Musical_pitch p = sub_arr[i]; int step = step_i (tonic, p); /* - if additions include 2 or 4, assume sus2/4 and don't display 'no3' + if chord has 3-, assume minor and don't display 'no3' + if additions include 4, assume sus4 and don't display 'no3' + if has3m_b and has5m_b, assume 'dim' chord */ - if (!((step == 3) && (has[2] || has[4]))) + if (!((step == 3) && (has3m_b || has4_b)) + && !((step/2) && (step !=3) && (step !=7 ) && (p.accidental_i_ == 0) && has3m_b && has5m_b) + && !((step == 7) && (p.accidental_i_ == -1) && has3m_b && has5m_b)) { - add_str += sep_str + "no" + to_str (step); + str += sep_str + "no" + to_str (step); sep_str = "/"; } } - if (mod_str.length_i ()) - name_p->modifier_mol.add_at_edge (X_AXIS, RIGHT, - lookup_l ()->text ("roman", mod_str, paper_l ()), 0); - if (add_str.length_i ()) + /* + have Co rather than Cdim7 + */ + if (minor_str + str == "dim7") { - if (!name_p->addition_mol.empty_b ()) - add_str = "/" + add_str; - name_p->addition_mol.add_at_edge (X_AXIS, RIGHT, - lookup_l ()->text ("script", add_str, paper_l ()), 0); + minor_str = ""; + str = "o"; } -} + + String inversion_str; + if (inversion_p_) + { + inversion_str = inversion_p_->str (); + inversion_str = "/" + inversion_str.left_str (1).upper_str () + + acc[inversion_p_->accidental_i_ + 2]; + } + + String bass_str; + if (bass_p_) + { + bass_str = bass_p_->str (); + bass_str = "/" + bass_str.left_str (1).upper_str () + + acc[bass_p_->accidental_i_ + 2]; + + } + + return tonic_str + minor_str + "$^{" + str + "}$" + inversion_str + bass_str; +} int Chord::find_tonic_i (Array const* pitch_arr_p) @@ -762,83 +648,3 @@ Chord::rebuild_with_bass (Array* pitch_arr_p, int bass_i) bass.octave_i_--; pitch_arr_p->insert (bass, 0); } - -Molecule* -Chord::do_brew_molecule_p () const -{ - Musical_pitch tonic = pitch_arr_[0]; - - Chord_name name; - name.tonic_mol = pitch2molecule (tonic); - - /* - if user has explicitely listed chord name, use that - - TODO - urg - maybe we should check all sub-lists of pitches, not - just full list and base triad? - */ - if (!user_chord_name (pitch_arr_, &name)) - { - /* - else, check if user has listed base triad - use user base name and add banter for remaining part - */ - if ((pitch_arr_.size () > 2) - && user_chord_name (pitch_arr_.slice (0, 3), &name)) - { - Array base = base_arr (tonic); - base.concat (pitch_arr_.slice (3, pitch_arr_.size ())); - banter (base, &name); - } - /* - else, use pure banter - */ - else - { - banter (pitch_arr_, &name); - } - } - - if (inversion_p_) - { - name.inversion_mol = lookup_l ()->text ("", "/", paper_l ()); - // zucht const& - Molecule mol = pitch2molecule (*inversion_p_); - name.inversion_mol.add_at_edge (X_AXIS, RIGHT, mol, 0); - } - - if (bass_p_) - { - name.bass_mol = lookup_l ()->text ("", "/", paper_l ()); - Molecule mol = pitch2molecule (*bass_p_); - name.bass_mol.add_at_edge (X_AXIS, RIGHT, mol, 0); - } - - // urg, howto get a good superscript_y? - Real super_y = lookup_l ()->text ("", "x", paper_l ()).dim_.y ().length ()/2; - if (!name.addition_mol.empty_b ()) - name.addition_mol.translate (Offset (0, super_y)); - - Molecule* mol_p = new Molecule; - mol_p->add_at_edge (X_AXIS, RIGHT, name.tonic_mol, 0); - // huh? - if (!name.modifier_mol.empty_b ()) - mol_p->add_at_edge (X_AXIS, RIGHT, name.modifier_mol, 0); - if (!name.addition_mol.empty_b ()) - mol_p->add_at_edge (X_AXIS, RIGHT, name.addition_mol, 0); - if (!name.inversion_mol.empty_b ()) - mol_p->add_at_edge (X_AXIS, RIGHT, name.inversion_mol, 0); - if (!name.bass_mol.empty_b ()) - mol_p->add_at_edge (X_AXIS, RIGHT, name.bass_mol, 0); - return mol_p; -} - -void -Chord::do_print () const -{ -#ifndef NPRINT - //DEBUG_OUT << "chord = " ... -#endif -} diff --git a/lily/directional-spanner.cc b/lily/directional-spanner.cc index e6e4f55947..be9676c4d1 100644 --- a/lily/directional-spanner.cc +++ b/lily/directional-spanner.cc @@ -9,13 +9,13 @@ Directional_spanner::get_default_dir() const void Directional_spanner::do_pre_processing() { - if (!dir_) - dir_ = get_default_dir(); + if (!get_direction ()) + set_direction (get_default_dir()); } Directional_spanner::Directional_spanner() { - dir_ = CENTER; + set_direction (CENTER); } Offset diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index ce2c068c64..8202c7157b 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -114,6 +114,7 @@ Dynamic_engraver::do_process_requests() text_p_ = new Text_item; text_p_->text_str_ = loud; // ugh + text_p_->set_elt_property ("style", gh_str02scm ("dynamic")); staff_side_p_ = new Staff_side_item; staff_side_p_->set_elt_property ("script-priority", @@ -121,23 +122,23 @@ Dynamic_engraver::do_process_requests() staff_side_p_->set_victim (text_p_); staff_side_p_->axis_ = Y_AXIS; - staff_side_p_->dir_ = DOWN; + staff_side_p_->set_direction (DOWN); SCM prop = get_property ("verticalDirection", 0); if (isdir_b (prop)) { - staff_side_p_->dir_ = to_dir (prop); + staff_side_p_->set_direction (to_dir (prop)); } prop = get_property ("dynamicDirection", 0); if (gh_number_p(prop)) { - staff_side_p_->dir_ = to_dir (prop); + staff_side_p_->set_direction (to_dir (prop)); } - if (absd->dir_) + if (absd->get_direction ()) { - staff_side_p_->dir_ = absd->dir_; + staff_side_p_->set_direction (absd->get_direction ()); } prop = get_property ("dynamicPadding", 0); @@ -172,12 +173,12 @@ Dynamic_engraver::do_process_requests() SCM prop = get_property ("verticalDirection", 0); if (isdir_b (prop)) { - to_end_ss_span_p_->dir_ = to_dir (prop); + to_end_ss_span_p_->set_direction (to_dir (prop)); } prop = get_property ("dynamicDirection", 0); if (isdir_b (prop)) { - to_end_ss_span_p_->dir_ = to_dir (prop); + to_end_ss_span_p_->set_direction (to_dir (prop)); } prop = get_property ("dynamicPadding", 0); if (gh_number_p(prop)) diff --git a/lily/include/bezier.hh b/lily/include/bezier.hh index 1122e2c8cc..73b6079104 100644 --- a/lily/include/bezier.hh +++ b/lily/include/bezier.hh @@ -64,13 +64,16 @@ public: bool check_fit_bo (); Real check_fit_f (); void print () const; - void set (Array points, int dir); + void set (Array points, Direction dir); void transform (); void transform_back (); Paper_def* paper_l_; Curve encompass_; - int dir_; + Direction dir_; + void set_direction (Direction d ) { dir_ = d; } + Direction get_direction () const { return dir_; } + Real alpha_; Offset origin_; Curve return_; diff --git a/lily/include/breathing-sign.hh b/lily/include/breathing-sign.hh index 41de60c64d..6e861a905c 100644 --- a/lily/include/breathing-sign.hh +++ b/lily/include/breathing-sign.hh @@ -20,6 +20,9 @@ public: Breathing_sign (); void set_vertical_position (Direction); + void set_direction (Direction d ) { dir_ = d; } + Direction get_direction () const { return dir_; } + protected: virtual void do_post_processing (); diff --git a/lily/include/chord-name-engraver.hh b/lily/include/chord-name-engraver.hh index f5e52ee782..4843fae8e9 100644 --- a/lily/include/chord-name-engraver.hh +++ b/lily/include/chord-name-engraver.hh @@ -28,7 +28,8 @@ protected: private: Array pitch_arr_; - Chord* chord_p_; + Link_array text_p_arr_; + Array rebuild_pitch_arr (int tonic_i) const; Tonic_req* tonic_req_; Inversion_req* inversion_req_; Bass_req* bass_req_; diff --git a/lily/include/chord.hh b/lily/include/chord.hh index e568f70985..871189fafc 100644 --- a/lily/include/chord.hh +++ b/lily/include/chord.hh @@ -12,56 +12,33 @@ #include "array.hh" #include "musical-pitch.hh" #include "lily-proto.hh" -#include "item.hh" -#include "molecule.hh" -class Chord_name +class Chord { public: - Molecule tonic_mol; - Molecule modifier_mol; - Molecule addition_mol; - Molecule inversion_mol; - Molecule bass_mol; -}; - -class Chord : public Item -{ -public: - VIRTUAL_COPY_CONS (Score_element); - static Array base_arr (Musical_pitch 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); static Array missing_thirds_pitch_arr (Array const* pitch_arr_p); static void rebuild_from_base (Array*, int base_i); static void rebuild_insert_inversion (Array*, int tonic_i); - static void rebuild_transpose (Array*, Musical_pitch tonic, bool fix7_b); + static void rebuild_transpose (Array*, Musical_pitch tonic); static void rebuild_with_bass (Array*, int bass_i); static int step_i (Musical_pitch tonic, Musical_pitch p); Chord (Array pitch_arr, Musical_pitch* inversion_p, Musical_pitch* bass_p); - Chord (Chord const&); - virtual ~Chord (); + Chord (Chord const& chord); + ~Chord (); Array to_pitch_arr () const; - void find_additions_and_subtractions(Array pitch_arr, Array* add_arr_p, Array* sub_arr_p) const; - - Molecule ly_word2molecule (SCM scm) const; - Molecule ly_text2molecule (SCM scm) const; - Molecule pitch2molecule (Musical_pitch p) const; - bool user_chord_name (Array pitch_arr, Chord_name* name_p) const; - void banter (Array pitch_arr, Chord_name* name_p) const; + String banter_str () const; + void find_additions_and_subtractions(Array* add_arr_p, Array* sub_arr_p) const; Array pitch_arr_; Musical_pitch* inversion_p_; Musical_pitch* bass_p_; - -protected: - virtual Molecule* do_brew_molecule_p () const; - virtual void do_print () const; }; Chord to_chord (Musical_pitch tonic, Array* add_arr_p, Array* sub_arr_p, Musical_pitch* inversion_p, Musical_pitch* bass_p); diff --git a/lily/include/directional-spanner.hh b/lily/include/directional-spanner.hh index 199669e99a..cdc56a4ed1 100644 --- a/lily/include/directional-spanner.hh +++ b/lily/include/directional-spanner.hh @@ -14,12 +14,15 @@ JUNKME? */ class Directional_spanner : public Spanner{ -public: - /// -1 below heads, +1 above heads. Direction dir_; + +public: Directional_spanner(); - + + void set_direction (Direction d ) { dir_ = d; } + Direction get_direction () const { return dir_; } + /// offset of "center" relative to left-column/0-pos of staff virtual Offset center() const; virtual Direction get_default_dir() const; diff --git a/lily/include/request.hh b/lily/include/request.hh index d525daa83b..496e4209b0 100644 --- a/lily/include/request.hh +++ b/lily/include/request.hh @@ -40,6 +40,9 @@ class Script_req : public virtual Request { public: Direction dir_; + void set_direction (Direction d ) { dir_ = d; } + Direction get_direction () const { return dir_; } + VIRTUAL_COPY_CONS(Music); Script_req (); }; diff --git a/lily/include/staff-side.hh b/lily/include/staff-side.hh index 76e764b13b..36441beefa 100644 --- a/lily/include/staff-side.hh +++ b/lily/include/staff-side.hh @@ -28,10 +28,14 @@ class Staff_side_element : public Staff_symbol_referencer { void position_self (); - + Direction dir_; public: Score_element * to_position_l_; - Direction dir_; + + void set_direction (Direction d ) { dir_ = d; } + Direction get_direction () const { return dir_; } + + Link_array support_l_arr_; Axis axis_; //junkme. diff --git a/lily/include/stem-info.hh b/lily/include/stem-info.hh index e631280c58..248f71b82d 100644 --- a/lily/include/stem-info.hh +++ b/lily/include/stem-info.hh @@ -14,7 +14,10 @@ struct Stem_info { Real x_; - int dir_; + Direction dir_; + void set_direction (Direction d ) { dir_ = d; } + Direction get_direction () const { return dir_; } + int beam_dir_; Real idealy_f_; Real miny_f_; diff --git a/lily/include/stem.hh b/lily/include/stem.hh index 14fe13c22a..2d91e441e9 100644 --- a/lily/include/stem.hh +++ b/lily/include/stem.hh @@ -48,7 +48,13 @@ class Stem : public Item, public Staff_symbol_referencer { */ Drul_array yextent_drul_; + /// direction stem (that's me) + Direction dir_; + public: + void set_direction (Direction d); + Direction get_direction () const { return dir_; } + Link_array head_l_arr_; Link_array rest_l_arr_; @@ -62,12 +68,6 @@ public: Beam* beam_l_; Drul_array beams_i_drul_; - - void set_direction (Direction d); - /// direction stem (that's me) - Direction dir_; - - Stem (); /// ensure that this Stem also encompasses the Notehead #n# @@ -81,7 +81,6 @@ public: void do_print() const; void set_stemend (Real); Direction get_default_dir() const; - Direction get_dir () const; int get_center_distance(Direction) const; diff --git a/lily/musical-request.cc b/lily/musical-request.cc index de2c34029d..16bb0d5513 100644 --- a/lily/musical-request.cc +++ b/lily/musical-request.cc @@ -203,5 +203,5 @@ Articulation_req::do_equal_b (Request const* r) const Script_req::Script_req () { - dir_ = CENTER; + set_direction (CENTER); } diff --git a/lily/note-column.cc b/lily/note-column.cc index c592d92ce5..0f8bd3bc38 100644 --- a/lily/note-column.cc +++ b/lily/note-column.cc @@ -61,7 +61,7 @@ Direction Note_column::dir () const { if (stem_l_) - return stem_l_->dir_; + return stem_l_->get_direction (); else if (head_l_arr_.size ()) return (Direction)sign (head_positions_interval().center ()); @@ -162,7 +162,7 @@ Note_column::do_post_processing () return; /* ugh. Should be done by beam. */ - Direction d = stem_l_->get_dir (); + Direction d = stem_l_->get_direction (); Real beamy = (stem_l_->hpos_f () - b->stems_[0]->hpos_f ()) * b->slope_f_ + b->left_y_; Real staff_space = rest_l_arr_[0]->staff_line_leading_f (); diff --git a/lily/script-column.cc b/lily/script-column.cc index c5a0ec1144..6fabed4d90 100644 --- a/lily/script-column.cc +++ b/lily/script-column.cc @@ -50,7 +50,7 @@ Script_column::do_pre_processing () for (int i=0; i < staff_sided_item_l_arr_.size (); i++) { Staff_side_item * ip = get_Staff_side (staff_sided_item_l_arr_[i]); - arrs[ip->dir_].push (staff_sided_item_l_arr_[i]); + arrs[ip->get_direction ()].push (staff_sided_item_l_arr_[i]); } Direction d = DOWN; diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc index 58bff60dde..5ca373ff10 100644 --- a/lily/script-engraver.cc +++ b/lily/script-engraver.cc @@ -68,14 +68,14 @@ Script_engraver::do_process_requests() if (relative_stem_dir) ss->relative_dir_ = (Direction)relative_stem_dir; else - ss->dir_ = (Direction)force_dir; + ss->set_direction ((Direction)force_dir); SCM dir_prop (get_property ("articulationScriptVerticalDirection", 0)); if (gh_number_p(dir_prop)) - ss->dir_ = to_dir (dir_prop); + ss->set_direction (to_dir (dir_prop)); - if (l->dir_) - ss->dir_ = l->dir_; + if (l->get_direction ()) + ss->set_direction (l->get_direction ()); SCM paddingprop = get_property ("articulationScriptPadding", 0); if (gh_number_p(paddingprop)) diff --git a/lily/script.cc b/lily/script.cc index 4e10621df9..ebceea43ab 100644 --- a/lily/script.cc +++ b/lily/script.cc @@ -69,7 +69,7 @@ Script::do_pre_processing () void Script::do_post_processing () { - Direction d = staff_side_l_->dir_; + Direction d = staff_side_l_->get_direction (); Molecule m (get_molecule(d)); /* @@ -90,7 +90,7 @@ Script::set_staff_side (Staff_side_item*g) Molecule* Script::do_brew_molecule_p () const { - return new Molecule (get_molecule (staff_side_l_->dir_)); + return new Molecule (get_molecule (staff_side_l_->get_direction ())); } void diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index 045373378d..6795c9d01f 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -115,7 +115,7 @@ Slur_engraver::do_pre_move_processing() for (int i = 0; i < end_slur_l_arr_.size(); i++) { - end_slur_l_arr_[i]->dir_ = slurdir; + end_slur_l_arr_[i]->set_direction (slurdir); typeset_element (end_slur_l_arr_[i]); } end_slur_l_arr_.clear(); diff --git a/lily/slur.cc b/lily/slur.cc index 349dbd34d1..ae96ed9771 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -101,7 +101,7 @@ Slur::encompass_offset (Note_column const* col) const { warning (_ ("Slur over rest?")); o[X_AXIS] = col->hpos_f (); - o[Y_AXIS] = col->extent (Y_AXIS)[dir_]; + o[Y_AXIS] = col->extent (Y_AXIS)[get_direction ()]; return o; } @@ -111,22 +111,22 @@ Slur::encompass_offset (Note_column const* col) const Simply set x to middle of notehead */ - o[X_AXIS] -= 0.5 * stem_l->dir_ * col->extent (X_AXIS).length (); + o[X_AXIS] -= 0.5 * stem_l->get_direction () * col->extent (X_AXIS).length (); - if ((stem_l->dir_ == dir_) + if ((stem_l->get_direction () == get_direction ()) && !stem_l->extent (Y_AXIS).empty_b ()) { - o[Y_AXIS] = stem_l->extent (Y_AXIS)[dir_]; + o[Y_AXIS] = stem_l->extent (Y_AXIS)[get_direction ()]; } else { - o[Y_AXIS] = col->extent (Y_AXIS)[dir_]; + o[Y_AXIS] = col->extent (Y_AXIS)[get_direction ()]; } /* leave a gap: slur mustn't touch head/stem */ - o[Y_AXIS] += dir_ * paper_l ()->get_var ("slur_y_free"); + o[Y_AXIS] += get_direction () * paper_l ()->get_var ("slur_y_free"); o[Y_AXIS] += calc_interstaff_dist (stem_l, this); return o; } @@ -140,8 +140,8 @@ void Slur::do_post_processing () { encompass_arr_.sort (Note_column_compare); - if (!dir_) - dir_ = get_default_dir (); + if (!get_direction ()) + set_direction (get_default_dir ()); /* Slur and tie placement [OSU] @@ -179,23 +179,23 @@ Slur::do_post_processing () no beam getting in the way */ if ((stem_l->extent (Y_AXIS).empty_b () - || !((stem_l->dir_ == dir_) && (dir_ != d))) - && !((dir_ == stem_l->dir_) + || !((stem_l->get_direction () == get_direction ()) && (get_direction () != d))) + && !((get_direction () == stem_l->get_direction ()) && stem_l->beam_l_ && (stem_l->beams_i_drul_[-d] >= 1))) { dx_f_drul_[d] = spanned_drul_[d]->extent (X_AXIS).length () / 2; dx_f_drul_[d] -= d * x_gap_f; - if (stem_l->dir_ != dir_) + if (stem_l->get_direction () != get_direction ()) { - dy_f_drul_[d] = note_column_drul[d]->extent (Y_AXIS)[dir_]; + dy_f_drul_[d] = note_column_drul[d]->extent (Y_AXIS)[get_direction ()]; } else { dy_f_drul_[d] = stem_l->chord_start_f () - + dir_ * internote_f; + + get_direction () * internote_f; } - dy_f_drul_[d] += dir_ * y_gap_f; + dy_f_drul_[d] += get_direction () * y_gap_f; } /* side attached to (visible) stem @@ -209,8 +209,8 @@ Slur::do_post_processing () */ if (stem_l->beam_l_ && (stem_l->beams_i_drul_[-d] >= 1)) { - dy_f_drul_[d] = stem_l->extent (Y_AXIS)[dir_]; - dy_f_drul_[d] += dir_ * 2 * y_gap_f; + dy_f_drul_[d] = stem_l->extent (Y_AXIS)[get_direction ()]; + dy_f_drul_[d] += get_direction () * 2 * y_gap_f; } /* side attached to notehead, with stem getting in the way @@ -220,8 +220,8 @@ Slur::do_post_processing () dx_f_drul_[d] -= d * x_gap_f; dy_f_drul_[d] = stem_l->chord_start_f () - + dir_ * internote_f; - dy_f_drul_[d] += dir_ * y_gap_f; + + get_direction () * internote_f; + dy_f_drul_[d] += get_direction () * y_gap_f; } } } @@ -300,7 +300,7 @@ Slur::do_post_processing () Real slope_ratio_f = abs (dy_f / dx_f); if (slope_ratio_f > slope_damp_f) { - Direction d = (Direction)(- dir_ * (sign (dy_f))); + Direction d = (Direction)(- get_direction () * (sign (dy_f))); if (!d) d = LEFT; Real damp_f = (slope_ratio_f - slope_damp_f) * dx_f; @@ -308,7 +308,7 @@ Slur::do_post_processing () must never change sign of dy */ damp_f = damp_f height_damp_f) { - Direction d = (Direction)(- dir_ * (sign (dy_f))); + Direction d = (Direction)(- get_direction () * (sign (dy_f))); if (!d) d = LEFT; /* take third step */ @@ -341,8 +341,8 @@ Slur::do_post_processing () */ if (abs (dy_f / dx_f ) < slope_damp_f) { - dy_f_drul_[-d] += dir_ * damp_f; - dy_f_drul_[d] += dir_ * damp_f; + dy_f_drul_[-d] += get_direction () * damp_f; + dy_f_drul_[d] += get_direction () * damp_f; } /* don't change slope too much, would have been catched by slope damping @@ -350,7 +350,7 @@ Slur::do_post_processing () else { damp_f = damp_f stem_l_ - && nc->stem_l_->dir_ == dir_ - && abs (nc->stem_l_->extent (Y_AXIS)[dir_] + && nc->stem_l_->get_direction () == get_direction () + && abs (nc->stem_l_->extent (Y_AXIS)[get_direction ()] - dy_f_drul_[d] + (d == LEFT ? 0 : interstaff_f)) <= snap_f) { @@ -380,9 +380,9 @@ Slur::do_post_processing () snapx_f_drul[d] = nc->stem_l_->hpos_f () - spanned_drul_[d]->relative_coordinate (0, X_AXIS); - snapy_f_drul[d] = nc->stem_l_->extent (Y_AXIS)[dir_] + snapy_f_drul[d] = nc->stem_l_->extent (Y_AXIS)[get_direction ()] + interstaff_interval[d] - + dir_ * 2 * y_gap_f; + + get_direction () * 2 * y_gap_f; snapped_b_drul[d] = true; } diff --git a/lily/staff-margin-engraver.cc b/lily/staff-margin-engraver.cc index 7fdba6a601..a382bf84b1 100644 --- a/lily/staff-margin-engraver.cc +++ b/lily/staff-margin-engraver.cc @@ -51,7 +51,7 @@ Staff_margin_engraver::acknowledge_element (Score_element_info inf) { create_items (0); text_p_->text_str_ = ly_scm2string (long_name); - staff_side_p_->dir_ = LEFT; + staff_side_p_->set_direction (LEFT); Bar_script_engraver::attach_script_to_item (i); /* diff --git a/lily/staff-side.cc b/lily/staff-side.cc index d2b9ab974d..5f923b89d8 100644 --- a/lily/staff-side.cc +++ b/lily/staff-side.cc @@ -16,7 +16,7 @@ Staff_side_element::Staff_side_element () { - dir_ = CENTER; + set_direction (CENTER); to_position_l_ = 0; set_elt_property ("transparent", SCM_BOOL_T); axis_ = Y_AXIS; @@ -25,8 +25,8 @@ Staff_side_element::Staff_side_element () void Staff_side_element::do_pre_processing () { - if (!dir_) - dir_ = get_default_direction (); + if (!get_direction ()) + set_direction (get_default_direction ()); if (axis_ == X_AXIS) position_self (); @@ -117,15 +117,15 @@ Staff_side_element::position_self () SCM pad = remove_elt_property ("padding"); if (pad != SCM_UNDEFINED) { - off += gh_scm2double (pad) * dir_; + off += gh_scm2double (pad) * get_direction (); } - Real total_off = dim[dir_] + off; + Real total_off = dim[get_direction ()] + off; /* "no-staff-support" is ugh bugfix to get staccato dots right. */ if (to_position_l_ && to_position_l_->get_elt_property ("no-staff-support") == SCM_UNDEFINED) - total_off += - sym_dim[-dir_]; + total_off += - sym_dim[-get_direction ()]; dim_cache_[axis_]->set_offset (total_off); if (fabs (total_off) > 100 CM) @@ -167,7 +167,7 @@ Staff_side_element::do_print () const DEBUG_OUT << "positioning " << to_position_l_->name(); DEBUG_OUT << "axis == " << axis_name_str (axis_) - << ", dir == " << to_str ((int)dir_ ); + << ", dir == " << to_str ((int)get_direction () ); #endif } diff --git a/lily/stem-engraver.cc b/lily/stem-engraver.cc index a3779c61e7..c43916f4f1 100644 --- a/lily/stem-engraver.cc +++ b/lily/stem-engraver.cc @@ -99,7 +99,7 @@ Stem_engraver::do_pre_move_processing() SCM prop = get_property ("verticalDirection", 0); if (gh_number_p(prop)) { - stem_p_->dir_ = to_dir (prop); + stem_p_->set_direction (to_dir (prop)); stem_p_->set_elt_property ("dir-forced", SCM_BOOL_T); } diff --git a/lily/stem-info.cc b/lily/stem-info.cc index 270ce80072..4cab4ff111 100644 --- a/lily/stem-info.cc +++ b/lily/stem-info.cc @@ -31,7 +31,7 @@ Stem_info::Stem_info (Stem*s, int mult) mult_i_ =mult; stem_l_ = s; x_ = stem_l_->hpos_f (); - dir_ = stem_l_->dir_; + set_direction (stem_l_->get_direction ()); SCM bd = stem_l_->remove_elt_property ("beam-dir"); beam_dir_ = gh_scm2int (bd); @@ -62,7 +62,7 @@ Stem_info::Stem_info (Stem*s, int mult) Real stem_f = paper_l->get_var (type_str + "stem_length" + to_str (mult_i_ dir_); + return (Direction)(relative_dir_ * stem_l_->get_direction ()); } void @@ -86,13 +86,13 @@ Stem_staff_side_item::do_post_processing () Real self_coord = relative_coordinate (c, Y_AXIS); Real now_coord = self_coord - staff_coord; - Real desired_coord = ceil (dir_ * 2.0 * now_coord / staff_line_leading_f ()); + Real desired_coord = ceil (get_direction () * 2.0 * now_coord / staff_line_leading_f ()); if (! (int (desired_coord) % 2)) { desired_coord ++; } - translate_axis (desired_coord * dir_ * staff_line_leading_f () / 2.0 - now_coord, Y_AXIS); + translate_axis (desired_coord * get_direction () * staff_line_leading_f () / 2.0 - now_coord, Y_AXIS); } } diff --git a/lily/stem-tremolo.cc b/lily/stem-tremolo.cc index ee93f94fa8..5ada498afd 100644 --- a/lily/stem-tremolo.cc +++ b/lily/stem-tremolo.cc @@ -84,20 +84,20 @@ Stem_tremolo::do_brew_molecule_p () const { beams->translate (Offset(stem_l_->hpos_f () - hpos_f (), stem_l_->stem_end_f () * internote_f - - stem_l_->beam_l_->dir_ * beams_i * interbeam_f)); + stem_l_->beam_l_->get_direction () * beams_i * interbeam_f)); } else { /* Beams should intersect one beamthickness below staff end */ - Real dy = - beams->extent ()[Y_AXIS].length () / 2 * stem_l_->dir_; + Real dy = - beams->extent ()[Y_AXIS].length () / 2 * stem_l_->get_direction (); /* uhg. Should use relative coords and placement */ Real whole_note_correction = (stem_l_ && stem_l_->invisible_b( )) - ? -stem_l_->get_dir () * stem_l_->note_delta_f ()/2 + ? -stem_l_->get_direction () * stem_l_->note_delta_f ()/2 : 0.0; /* diff --git a/lily/stem.cc b/lily/stem.cc index 018011adbc..178166d73b 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -22,7 +22,7 @@ void Stem::set_direction (Direction d) { - if (!dir_) + if (!get_direction ()) warning (_ ("stem direction set already!")); dir_ = d; @@ -37,7 +37,7 @@ Stem::Stem () beams_i_drul_[LEFT] = beams_i_drul_[RIGHT] = -1; yextent_drul_[DOWN] = yextent_drul_[UP] = 0; flag_i_ = 2; - dir_ = CENTER; + set_direction (CENTER); beam_l_ = 0; } @@ -83,31 +83,31 @@ Stem::stem_length_f () const Real Stem::stem_begin_f () const { - return yextent_drul_[Direction(-dir_)]; + return yextent_drul_[Direction(-get_direction ())]; } Real Stem::chord_start_f () const { - return head_positions()[dir_] * staff_line_leading_f ()/2.0; + return head_positions()[get_direction ()] * staff_line_leading_f ()/2.0; } Real Stem::stem_end_f () const { - return yextent_drul_[dir_]; + return yextent_drul_[get_direction ()]; } void Stem::set_stemend (Real se) { // todo: margins - if (dir_ && dir_ * head_positions()[dir_] >= se*dir_) + if (get_direction () && get_direction () * head_positions()[get_direction ()] >= se*get_direction ()) warning (_ ("Weird stem size; check for narrow beams")); - yextent_drul_[dir_] = se; - yextent_drul_[Direction(-dir_)] = head_positions()[-dir_]; + yextent_drul_[get_direction ()] = se; + yextent_drul_[Direction(-get_direction ())] = head_positions()[-get_direction ()]; } int @@ -158,11 +158,6 @@ Stem::get_default_dir () const return Direction (int(paper_l ()->get_var ("stem_default_neutral_direction"))); } -Direction -Stem::get_dir () const -{ - return dir_; -} void @@ -182,15 +177,15 @@ Stem::set_default_stemlen () Real shorten_f = paper_l ()->get_var (type_str + "forced_stem_shorten0"); - if (!dir_) - dir_ = get_default_dir (); + if (!get_direction ()) + set_direction (get_default_dir ()); /* stems in unnatural (forced) direction should be shortened, according to [Roush & Gourlay] */ if (((int)chord_start_f ()) - && (dir_ != get_default_dir ())) + && (get_direction () != get_default_dir ())) length_f -= shorten_f; if (flag_i_ >= 5) @@ -198,11 +193,11 @@ Stem::set_default_stemlen () if (flag_i_ >= 6) length_f += 1.0; - set_stemend ((dir_ > 0) ? head_positions()[BIGGER] + length_f: + set_stemend ((get_direction () > 0) ? head_positions()[BIGGER] + length_f: head_positions()[SMALLER] - length_f); bool no_extend_b = get_elt_property ("no-stem-extend") != SCM_UNDEFINED; - if (!grace_b && !no_extend_b && (dir_ * stem_end_f () < 0)) + if (!grace_b && !no_extend_b && (get_direction () * stem_end_f () < 0)) set_stemend (0); } @@ -221,7 +216,7 @@ Stem::set_noteheads () if (!head_l_arr_.size ()) return; head_l_arr_.sort (Note_head::compare); - if (dir_ < 0) + if (get_direction () < 0) head_l_arr_.reverse (); Note_head * beginhead = head_l_arr_[0]; @@ -238,7 +233,7 @@ Stem::set_noteheads () if (dy <= 1) { if (parity) - head_l_arr_[i]->flip_around_stem (dir_); + head_l_arr_[i]->flip_around_stem (get_direction ()); parity = !parity; } else @@ -277,7 +272,7 @@ Stem::set_spacing_hints () { if (!invisible_b ()) { - SCM scmdir = gh_int2scm (dir_); + SCM scmdir = gh_int2scm (get_direction ()); SCM dirlist = column_l ()->get_elt_property ("dir-list"); if (dirlist == SCM_UNDEFINED) dirlist = SCM_EOL; @@ -300,7 +295,7 @@ Stem::flag () const style = ly_scm2string (st); } - char c = (dir_ == UP) ? 'u' : 'd'; + char c = (get_direction () == UP) ? 'u' : 'd'; Molecule m = lookup_l ()->afm_find (String ("flags-") + to_str (c) + to_str (flag_i_)); if (!style.empty_b ()) @@ -337,7 +332,7 @@ Stem::do_brew_molecule_p () const Real head_wid = 0; if (head_l_arr_.size ()) head_wid = head_l_arr_[0]->extent (X_AXIS).length (); - stem_y[Direction(-dir_)] += dir_ * head_wid * tan(ANGLE)/(2*dy); + stem_y[Direction(-get_direction ())] += get_direction () * head_wid * tan(ANGLE)/(2*dy); if (!invisible_b ()) { @@ -350,7 +345,7 @@ Stem::do_brew_molecule_p () const if (!beam_l_ && abs (flag_i_) > 2) { Molecule fl = flag (); - fl.translate_axis(stem_y[dir_]*dy, Y_AXIS); + fl.translate_axis(stem_y[get_direction ()]*dy, Y_AXIS); mol_p->add_molecule (fl); } @@ -371,10 +366,10 @@ Stem::note_delta_f () const Real rule_thick = paper_l ()->get_var ("stemthickness"); Interval stem_wid(-rule_thick/2, rule_thick/2); - if (dir_ == CENTER) + if (get_direction () == CENTER) r = head_wid.center (); else - r = head_wid[dir_] - stem_wid[dir_]; + r = head_wid[get_direction ()] - stem_wid[get_direction ()]; } return r; } diff --git a/lily/text-engraver.cc b/lily/text-engraver.cc index cf8c0ea0f6..5cac32fd3d 100644 --- a/lily/text-engraver.cc +++ b/lily/text-engraver.cc @@ -94,7 +94,7 @@ Text_engraver::do_process_requests () ss->set_elt_property ("script-priority", gh_int2scm (200)); - ss->dir_ = r->dir_; + ss->set_direction (r->get_direction ()); text->text_str_ = r->text_str_; diff --git a/lily/tie-engraver.cc b/lily/tie-engraver.cc index a3ba0358ca..49212b2d09 100644 --- a/lily/tie-engraver.cc +++ b/lily/tie-engraver.cc @@ -147,7 +147,7 @@ Tie_engraver::do_pre_move_processing () for (int i=0; i< tie_p_arr_.size (); i++) { - tie_p_arr_[i]->dir_ = tie_dir; + tie_p_arr_[i]->set_direction (tie_dir); typeset_element (tie_p_arr_[i]); } tie_p_arr_.clear (); diff --git a/lily/tie.cc b/lily/tie.cc index 8773cf2c78..af2c6fb1a5 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -159,15 +159,15 @@ Tie::do_post_processing() if (dx_f < paper_l ()->get_var ("tie_staffspace_length")) { if (abs (ypos_i) % 2) - y_f += dir_ * internote_f; - y_f += dir_ * y_gap_f; + y_f += get_direction () * internote_f; + y_f += get_direction () * y_gap_f; } else { if (! (abs (ypos_i) % 2)) - y_f += dir_ * internote_f; - y_f += dir_ * internote_f; - y_f -= dir_ * y_gap_f; + y_f += get_direction () * internote_f; + y_f += get_direction () * internote_f; + y_f -= get_direction () * y_gap_f; } dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = y_f; diff --git a/lily/tuplet-spanner.cc b/lily/tuplet-spanner.cc index 165255db26..0c3646f6ff 100644 --- a/lily/tuplet-spanner.cc +++ b/lily/tuplet-spanner.cc @@ -63,10 +63,10 @@ Tuplet_spanner::do_brew_molecule_p () const num.align_to (X_AXIS, CENTER); num.translate_axis (w/2, X_AXIS); Real interline = paper_l ()->get_var ("interline"); - Real dy = column_arr_.top ()->extent (Y_AXIS) [dir_] - - column_arr_[0]->extent (Y_AXIS) [dir_]; + Real dy = column_arr_.top ()->extent (Y_AXIS) [get_direction ()] + - column_arr_[0]->extent (Y_AXIS) [get_direction ()]; num.align_to (Y_AXIS, CENTER); - num.translate_axis (dir_ * interline, Y_AXIS); + num.translate_axis (get_direction () * interline, Y_AXIS); num.translate_axis (dy/2, Y_AXIS); @@ -75,14 +75,14 @@ Tuplet_spanner::do_brew_molecule_p () const { Real gap = paper_l () -> get_var ("tuplet_spanner_gap"); - mol_p->add_molecule (lookup_l ()->tuplet_bracket (dy, w, thick, gap, interline, dir_)); + mol_p->add_molecule (lookup_l ()->tuplet_bracket (dy, w, thick, gap, interline, get_direction ())); } if (number_visibility) { mol_p->add_molecule (num); } - mol_p->translate_axis (dir_ * interline, Y_AXIS); + mol_p->translate_axis (get_direction () * interline, Y_AXIS); } return mol_p; } @@ -101,7 +101,7 @@ void Tuplet_spanner::do_post_processing () { if (column_arr_.size()) - translate_axis (column_arr_[0]->extent (Y_AXIS)[dir_], Y_AXIS); + translate_axis (column_arr_[0]->extent (Y_AXIS)[get_direction ()], Y_AXIS); if (beam_l_arr_.size () == 1) { diff --git a/ly/chord-modifiers.ly b/ly/chord-modifiers.ly index 6f16728730..ef3942dd66 100644 --- a/ly/chord-modifiers.ly +++ b/ly/chord-modifiers.ly @@ -2,8 +2,6 @@ chord modifiers %} -#(eval-string (ly-gulp-file "chord-names.scm")) - \chordmodifiers { m = \musicalpitch { 0 2 -1 } min = \musicalpitch { 0 2 -1 } diff --git a/ly/paper11.ly b/ly/paper11.ly index 25222f488d..2026d92ba5 100644 --- a/ly/paper11.ly +++ b/ly/paper11.ly @@ -11,7 +11,6 @@ paper_eleven = \paper { font_large = 8.; font_Large = 6.; font_normal = 5.; - font_script = 4.; font_finger = 4.; font_volta = 4.; @@ -19,15 +18,10 @@ paper_eleven = \paper { font_dynamic = 10.; font_mark = 6.; magnification_dynamic = -4.0; - -1=\font "feta11" -2=\font "feta11" 0=\font "feta11" - "font_feta-2" = 11.; - "font_feta-1" = 11.; - "font_feta" = 11.; - \include "params.ly"; } diff --git a/ly/paper13.ly b/ly/paper13.ly index 65d412981e..afe0cd5651 100644 --- a/ly/paper13.ly +++ b/ly/paper13.ly @@ -11,7 +11,6 @@ paper_thirteen = \paper { font_large = 8.; font_Large = 6.; font_normal = 5.; - font_script = 4.; font_finger = 4.; font_volta = 4.; @@ -21,10 +20,6 @@ paper_thirteen = \paper { 0=\font "feta13" -1=\font "feta11" - - "font_feta-2" = 11.; - "font_feta-1" = 11.; - "font_feta" = 13.; \include "params.ly"; } diff --git a/ly/paper16.ly b/ly/paper16.ly index 14fab61a39..f9a2a248e3 100644 --- a/ly/paper16.ly +++ b/ly/paper16.ly @@ -14,8 +14,6 @@ paper_sixteen = \paper { font_large = 12.; font_Large = 10.; font_normal = 8.; - font_script = 7.; - magnification_dynamic = 1.0; font_finger = 4.; font_volta = 5.; @@ -27,10 +25,6 @@ paper_sixteen = \paper { -1 = \font "feta13" -2 = \font "feta11" - "font_feta-2" = 11.; - "font_feta-1" = 13.; - "font_feta" = 16.; - \include "params.ly"; } diff --git a/ly/paper20.ly b/ly/paper20.ly index 65f9100c73..24983c1710 100644 --- a/ly/paper20.ly +++ b/ly/paper20.ly @@ -9,7 +9,6 @@ paper_twenty = \paper { font_large = 12.; font_Large = 12.; font_normal = 10.; - font_script = 8.; font_finger = 5.; font_volta = 8.; @@ -32,10 +31,6 @@ paper_twenty = \paper { -1 = \font "feta16" 0 = \font "feta20" - "font_feta-2" = 13.; - "font_feta-1" = 16.; - "font_feta" = 20.; - \include "params.ly"; } diff --git a/ly/paper23.ly b/ly/paper23.ly index 7a129b3356..46a9f25b8f 100644 --- a/ly/paper23.ly +++ b/ly/paper23.ly @@ -9,7 +9,6 @@ paper_twentythree = \paper { font_large = 12.; font_Large = 12.; font_normal = 10.; - font_script = 8.; font_finger = 5.; font_volta = 8.; @@ -27,10 +26,6 @@ paper_twentythree = \paper { -1 = \font "feta20" 0 = \font "feta23" - "font_feta-2" = 16.; - "font_feta-1" = 20.; - "font_feta" = 23.; - \include "params.ly"; } diff --git a/ly/paper26.ly b/ly/paper26.ly index 4842149001..84d29e891b 100644 --- a/ly/paper26.ly +++ b/ly/paper26.ly @@ -9,8 +9,6 @@ paper_twentysix = \paper { font_large = 14.; font_Large = 17.; font_normal = 12.; - font_script = 10.; - font_dynamic = 10.; % Ugh magnification_dynamic = 4.; @@ -24,11 +22,6 @@ paper_twentysix = \paper { 0=\font "feta26" -1 = \font "feta23" -2 = \font "feta20" - - "font_feta-2" = 20.; - "font_feta-1" = 23.; - "font_feta" = 26.; - \include "params.ly"; } diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 94cc79fc2a..84bdabb4d0 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.3.2 -Entered-date: 01NOV99 +Version: 1.3.3 +Entered-date: 03NOV99 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.2.tar.gz + 1000k lilypond-1.3.3.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.3.2.tar.gz + 1000k lilypond-1.3.3.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index 0b4546e32b..622db7d870 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 1.3.2 +Version: 1.3.3 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.2.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.3.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys diff --git a/mf/GNUmakefile b/mf/GNUmakefile index 7816b08880..81fd8abf3b 100644 --- a/mf/GNUmakefile +++ b/mf/GNUmakefile @@ -33,6 +33,8 @@ INSTALLATION_OUT_FILES2=$(AFM_FILES) INSTALLATION_OUT_DIR3=$(datadir)/tfm INSTALLATION_OUT_FILES3=$(TFM_FILES) +# comment these out if you don't want pfa's to be generated +# or you don't have metapost. INSTALLATION_OUT_DIR4=$(datadir)/pfa INSTALLATION_OUT_FILES4=$(PFA_FILES) diff --git a/scm/chord-names.scm b/scm/chord-names.scm deleted file mode 100644 index 597679a2cf..0000000000 --- a/scm/chord-names.scm +++ /dev/null @@ -1,67 +0,0 @@ -;; pitch: (notename . accidental) -;; list: (list-of-pitches . (modifier-string . addition-subtraction-string)) - -;; if a complete chord is found, use name -;; if a chord's base triad is found (c e g), use name - -(define pitch-names-alist '()) -(set! pitch-names-alist - (append - '( - ; use these for German naming - ;((6 . 0) . ("H" "")) - ;((6 . -1) . ("B" ("feta-1" . ""))) - - ; urg, temp hack for accidental size: can't set from Chord:: - ((0 . 1) . ("C" ("feta-1" . ""))) - ((1 . 1) . ("D" ("feta-1" . ""))) - ((2 . 1) . ("E" ("feta-1" . ""))) - ((3 . 1) . ("F" ("feta-1" . ""))) - ((4 . 1) . ("G" ("feta-1" . ""))) - ((5 . 1) . ("A" ("feta-1" . ""))) - ((6 . 1) . ("B" ("feta-1" . ""))) - - ((0 . -1) . ("C" ("feta-1" . ""))) - ((1 . -1) . ("D" ("feta-1" . ""))) - ((2 . -1) . ("E" ("feta-1" . ""))) - ((3 . -1) . ("F" ("feta-1" . ""))) - ((4 . -1) . ("G" ("feta-1" . ""))) - ((5 . -1) . ("A" ("feta-1" . ""))) - ((6 . -1) . ("B" ("feta-1" . ""))) - ) - pitch-names-alist)) - -(define (user-pitch-name pitch) - (let ((entry (assoc pitch pitch-names-alist))) - (if entry - (cdr entry)))) - -(define chord-names-alist '()) -(set! chord-names-alist - (append - '( - ; C iso C.no3.no5 - (((0 . 0)) . ("" . "")) - ; C iso C.no5 - (((0 . 0) (2 . 0)) . ("" . "")) - ; Cm iso Cm.no5 - (((0 . 0) (2 . -1)) . ("m" . "")) - ; Cdim iso Cm5- - (((0 . 0) (2 . -1) (4 . -1)) . ("dim" . "")) - ; Co iso Cm5-7- - ; urg - ; (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ("" . ("feta-1" . "."))) - (((0 . 0) (2 . -1) (4 . -1) (6 . -2)) . ("" . ("script" . "o"))) - ; Cdim9 - (((0 . 0) (2 . -1) (4 . -1) (6 . -2) (1 . -1)) . ("dim" . ("script" . "9"))) - (((0 . 0) (2 . -1) (4 . -1) (6 . -2) (1 . -1) (3 . -1)) . ("dim" . ("script" . "11"))) - ) - chord-names-alist)) - -(define (user-chord-name chord) - ;(display chord) - ;(newline) - (let ((entry (assoc chord chord-names-alist))) - (if entry - (cdr entry)))) - diff --git a/scm/lily.scm b/scm/lily.scm index a453194146..980344441c 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -132,19 +132,13 @@ ;;;;;;;; TeX -;; this is silly, can't we use something like -;; roman-0, roman-1 roman+1 ? (define cmr-alist '(("bold" . "cmbx") ("dynamic" . "feta-din") - ("feta" . "feta") - ("feta-1" . "feta") - ("feta-2" . "feta") ("finger" . "feta-nummer") ("typewriter" . "cmtt") ("italic" . "cmti") ("roman" . "cmr") - ("script" . "cmr") ("large" . "cmbx") ("Large" . "cmbx") ("mark" . "feta-nummer") diff --git a/stepmake/aclocal.m4 b/stepmake/aclocal.m4 index 8652d3c960..930659f862 100644 --- a/stepmake/aclocal.m4 +++ b/stepmake/aclocal.m4 @@ -563,7 +563,7 @@ AC_DEFUN(AC_STEPMAKE_TEXMF, [ # # For now let people define these in their environments # - : ${MFPLAIN_MP=`kpsewhich mfplain.mp`} + : ${MFPLAIN_MP=`kpsewhich mp mfplain.mp`} : ${INIMETAPOST_FLAGS='-interaction=nonstopmode'} rm -f mfput.*