From e38dbae6adaa8d2b559c29e63b88292dd29f6988 Mon Sep 17 00:00:00 2001 From: fred Date: Tue, 26 Mar 2002 22:46:32 +0000 Subject: [PATCH] lilypond-1.3.30 --- Documentation/user/properties.itely | 6 ---- input/test/mark.ly | 21 ++++-------- lily/align-element.cc | 32 +++++------------ lily/align-note-column-engraver.cc | 8 +++-- lily/auto-beam-engraver.cc | 22 ++++++------ lily/bar-engraver.cc | 6 ++-- lily/bar-number-engraver.cc | 2 +- lily/bar-script-engraver.cc | 6 ++-- lily/base-span-bar-engraver.cc | 2 +- lily/beam-engraver.cc | 2 +- lily/beam.cc | 2 +- lily/break-align-engraver.cc | 2 +- lily/break-align-item.cc | 18 +++++----- lily/chord-name-engraver.cc | 2 +- lily/clef-engraver.cc | 6 ++-- lily/command-request.cc | 7 +--- lily/dynamic-engraver.cc | 6 ++-- lily/grace-align-item.cc | 4 +-- lily/grace-position-engraver.cc | 4 --- lily/grace-position-performer.cc | 2 +- lily/include/align-element.hh | 30 ++++++++-------- lily/include/command-request.hh | 4 +-- lily/include/mark-engraver.hh | 18 ++-------- lily/include/translator-group.hh | 2 +- lily/include/translator.hh | 4 +-- lily/key-engraver.cc | 4 +-- lily/local-key-engraver.cc | 6 ++-- lily/mark-engraver.cc | 53 +++++++++++++++++++++++++++-- lily/melisma-engraver.cc | 6 ++-- lily/multi-measure-rest-engraver.cc | 4 +-- lily/note-heads-engraver.cc | 2 +- lily/note-performer.cc | 2 +- lily/paper-column.cc | 2 +- lily/parser.yy | 11 ++++-- lily/protected-scm.cc | 13 +++---- lily/repeat-engraver.cc | 4 +-- lily/rhythmic-column-engraver.cc | 4 +-- lily/rod.cc | 16 +++++++-- lily/script-engraver.cc | 4 +-- lily/side-position-interface.cc | 2 +- lily/slur-engraver.cc | 9 ++--- lily/staff-margin-engraver.cc | 4 +-- lily/staff-performer.cc | 4 +-- lily/staff-symbol-engraver.cc | 4 +-- lily/stem-engraver.cc | 11 +++--- lily/text-engraver.cc | 4 +-- lily/tie-engraver.cc | 11 ++---- lily/timing-engraver.cc | 6 ++-- lily/timing-translator.cc | 19 +++++------ lily/translator-group.cc | 8 ++--- lily/translator.cc | 9 +++-- lily/tuplet-engraver.cc | 8 ++--- lily/vertical-align-engraver.cc | 11 ++---- ly/engraver.ly | 7 ++-- scm/generic-property.scm | 5 +++ 55 files changed, 234 insertions(+), 237 deletions(-) diff --git a/Documentation/user/properties.itely b/Documentation/user/properties.itely index cfa19c28ff..ebf2c901b4 100644 --- a/Documentation/user/properties.itely +++ b/Documentation/user/properties.itely @@ -556,12 +556,6 @@ no clef is printed upon creation. @cindex properties!GrandStaff @table @samp - @item @code{alignmentReference}@indexcode{alignmentReference} -@propertytype{direction} - Set to @code{\center} for vertical alignment reference point to be - in the center of the vertical group. Set to @code{\up} to put the - reference point at the top of the group. - @item @code{maxVerticalAlign}@indexcode{maxVerticalAlign} @propertytype{number} Set the maximum vertical distance between staffs. diff --git a/input/test/mark.ly b/input/test/mark.ly index 6b82ae50d4..8d65150c37 100644 --- a/input/test/mark.ly +++ b/input/test/mark.ly @@ -2,29 +2,20 @@ global = \notes { s1 | \mark "A"; - s1*2 | \mark "'12"; + s1 | \mark ; + s1 | \mark "12"; + s1 } -one = \notes\relative c{ - c'' c c c - c c c c - c c c c +one = \notes \relative c { + c''1 c c c } -two = \notes\relative c{ - b' b b b - b b b b - b b b b -} \score{ - < \global \one \two > +\context Staff < \global \one > \paper { \translator { \OrchestralPartStaffContext - markScriptPadding = "4.0"; - markHangOn = "Bar"; - markHangDepth = "1"; -% markDirection = \down; } } } diff --git a/lily/align-element.cc b/lily/align-element.cc index db954498bf..2f5c617ac6 100644 --- a/lily/align-element.cc +++ b/lily/align-element.cc @@ -30,6 +30,12 @@ Align_element::do_pre_processing () void Align_element::do_side_processing () { + SCM d = get_elt_property ("stacking-dir"); + Direction stacking_dir = gh_number_p(d) ? to_dir (d) : CENTER; + if (!stacking_dir) + stacking_dir = DOWN; + + Array dims; Link_array elems; @@ -66,15 +72,11 @@ Align_element::do_side_processing () } Real where_f=0; - Real center_f = 0.0; - SCM scenter = get_elt_property ("center-element"); - Score_element *center_elt = unsmob_element (scenter); - for (int i=0 ; i < elems.size(); i++) { - Real dy = - stacking_dir_ * dims[i][-stacking_dir_]; + Real dy = - stacking_dir * dims[i][-stacking_dir]; if (i) - dy += stacking_dir_ * dims[i-1][stacking_dir_]; + dy += stacking_dir * dims[i-1][stacking_dir]; if (i) { @@ -82,31 +84,15 @@ Align_element::do_side_processing () translate_axis (where_f, axis ()); } - - if (dims.size ()) - where_f += dims.top ()[stacking_dir_]; - if (align_dir_ == RIGHT) - center_f = where_f; - else if (align_dir_ == CENTER && !center_elt) - center_f = where_f / 2; - - if (center_f) - translate_axis ( - center_f, axis ()); } Align_element::Align_element() { threshold_interval_ = Interval (0, Interval::infinity ()); - stacking_dir_ = DOWN; - align_dir_ = CENTER; } int diff --git a/lily/align-note-column-engraver.cc b/lily/align-note-column-engraver.cc index f1ce54bfc8..9fb7d41b99 100644 --- a/lily/align-note-column-engraver.cc +++ b/lily/align-note-column-engraver.cc @@ -54,10 +54,12 @@ Align_note_column_engraver::do_creation_processing () void Align_note_column_engraver::do_removal_processing () { - SCM al = get_property ("graceAlignPosition", 0); + SCM al = get_property ("graceAlignPosition"); if (isdir_b (al)) { - directional_element (align_item_p_).set (to_dir (al)); + Direction d = to_dir (al); + directional_element (align_item_p_).set (d); + align_item_p_->set_elt_property ("align-dir", to_dir (-d)); } typeset_element (align_item_p_); @@ -89,7 +91,7 @@ Align_note_column_engraver::process_acknowledged () B. it has no pscore_l_ field. */ - SCM grsp = get_property ("graceAccidentalSpace", 0); + SCM grsp = get_property ("graceAccidentalSpace"); if (gh_number_p(grsp)) { /* diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc index 74761145cd..95052f5e1d 100644 --- a/lily/auto-beam-engraver.cc +++ b/lily/auto-beam-engraver.cc @@ -105,7 +105,7 @@ Auto_beam_engraver::consider_end_and_begin (Moment test_mom) /* first guess: end beam at end of beat */ - SCM one (get_property ("beatLength", 0)); + SCM one (get_property ("beatLength")); Moment end_mom; if (SMOB_IS_TYPE_B(Moment, one)) @@ -114,11 +114,11 @@ Auto_beam_engraver::consider_end_and_begin (Moment test_mom) /* second guess: property generic time exception */ - SCM begin = get_property (time_str + "beamAutoBegin", 0); + SCM begin = get_property (time_str + "beamAutoBegin"); if (SMOB_IS_TYPE_B(Moment, begin)) begin_mom = * SMOB_TO_TYPE(Moment, begin); - SCM end = get_property (time_str + "beamAutoEnd", 0); + SCM end = get_property (time_str + "beamAutoEnd"); if (SMOB_IS_TYPE_B (Moment, end)) end_mom = * SMOB_TO_TYPE(Moment,end); @@ -127,11 +127,11 @@ Auto_beam_engraver::consider_end_and_begin (Moment test_mom) */ if (type_str.length_i ()) { - SCM end_mult = get_property (time_str + "beamAutoEnd" + type_str, 0); + SCM end_mult = get_property ( time_str + "beamAutoEnd" + type_str); if (SMOB_IS_TYPE_B (Moment, end_mult)) end_mom = * SMOB_TO_TYPE (Moment,end_mult); - SCM begin_mult = get_property (time_str + "beamAutoBegin" + type_str, 0); + SCM begin_mult = get_property (time_str + "beamAutoBegin" + type_str); if (SMOB_IS_TYPE_B (Moment, begin_mult)) begin_mom = * SMOB_TO_TYPE (Moment,begin_mult); } @@ -139,13 +139,13 @@ Auto_beam_engraver::consider_end_and_begin (Moment test_mom) /* fourth guess [user override]: property plain generic */ - begin = get_property ("beamAutoBegin", 0); + begin = get_property ("beamAutoBegin"); if (SMOB_IS_TYPE_B(Moment, begin)) begin_mom = * SMOB_TO_TYPE(Moment, begin); - end = get_property ("beamAutoEnd", 0); + end = get_property ("beamAutoEnd"); if (SMOB_IS_TYPE_B (Moment, end)) end_mom = * SMOB_TO_TYPE (Moment,end); @@ -154,11 +154,11 @@ Auto_beam_engraver::consider_end_and_begin (Moment test_mom) */ if (type_str.length_i ()) { - SCM end_mult = get_property (String ("beamAutoEnd") + type_str, 0); + SCM end_mult = get_property (String ("beamAutoEnd") + type_str); if (SMOB_IS_TYPE_B (Moment, end_mult)) end_mom = * SMOB_TO_TYPE (Moment,end_mult); - SCM begin_mult = get_property (String ("beamAutoBegin") + type_str, 0); + SCM begin_mult = get_property (String ("beamAutoBegin") + type_str); if (SMOB_IS_TYPE_B (Moment, begin_mult)) begin_mom = * SMOB_TO_TYPE (Moment,begin_mult); } @@ -175,7 +175,7 @@ Auto_beam_engraver::consider_end_and_begin (Moment test_mom) /* Allow already started autobeam to end */ - SCM on = get_property ("noAutoBeaming", 0); + SCM on = get_property ("noAutoBeaming"); if (to_boolean (on)) return; @@ -289,7 +289,7 @@ bool Auto_beam_engraver::same_grace_state_b (Score_element* e) { bool gr = e->get_elt_property ("grace") == SCM_BOOL_T; - SCM wg =get_property ("weAreGraceContext",0); + SCM wg =get_property ("weAreGraceContext"); return (to_boolean (wg)) == gr; } diff --git a/lily/bar-engraver.cc b/lily/bar-engraver.cc index 45636011c0..a9e1da7957 100644 --- a/lily/bar-engraver.cc +++ b/lily/bar-engraver.cc @@ -35,7 +35,7 @@ Bar_engraver::create_bar () bar_p_->set_elt_property ("break-aligned", SCM_BOOL_T); // urg: "" != empty... - SCM default_type = get_property ("defaultBarType", 0); + SCM default_type = get_property ("defaultBarType"); if (gh_string_p (default_type)) { bar_p_->set_elt_property ("glyph", default_type); // gu.h @@ -45,7 +45,7 @@ Bar_engraver::create_bar () /* urg. Why did I implement this? And did I implement this so clumsily? */ - SCM prop = get_property ("barAtLineStart", 0); + SCM prop = get_property ("barAtLineStart"); if (to_boolean (prop)) { bar_p_->set_elt_property ("at-line-start", SCM_BOOL_T); @@ -65,7 +65,7 @@ Bar_engraver::request_bar (String requested_type) { if (!now_mom ()) { - SCM prop = get_property ("barAtLineStart", 0); + SCM prop = get_property ("barAtLineStart"); if (!to_boolean (prop)) return; } diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc index b5f20c5235..1715fde5de 100644 --- a/lily/bar-number-engraver.cc +++ b/lily/bar-number-engraver.cc @@ -28,7 +28,7 @@ Bar_number_engraver::do_process_requests () Timing_translator *time = dynamic_cast(tr); // todo include (&&!time->cadenza_b_ ) - SCM bn = get_property("currentBarNumber",0); + SCM bn = get_property("currentBarNumber"); if (gh_number_p (bn) && !time->measure_position () && now_mom () > Moment (0)) diff --git a/lily/bar-script-engraver.cc b/lily/bar-script-engraver.cc index 689ecea2bc..c41d9d1205 100644 --- a/lily/bar-script-engraver.cc +++ b/lily/bar-script-engraver.cc @@ -30,7 +30,7 @@ void Bar_script_engraver::do_creation_processing () { String t = type_ + "VisibilityFunction"; - SCM proc = get_property (t, 0); + SCM proc = get_property (t); if (gh_procedure_p (proc)) visibility_lambda_ = proc; @@ -128,14 +128,14 @@ Bar_script_engraver::create_items (Request *rq) Side_position_interface staffside(text_p_); staffside.set_axis (axis_); - SCM prop = get_property (type_ + "Direction", 0); + SCM prop = get_property (type_ + "Direction"); if (!isdir_b (prop)) { prop = gh_int2scm (UP); } text_p_->set_elt_property ("direction", prop); - SCM padding = get_property (type_ + "ScriptPadding", 0); + SCM padding = get_property (type_ + "ScriptPadding"); if (gh_number_p(padding)) { text_p_->set_elt_property ("padding", padding); diff --git a/lily/base-span-bar-engraver.cc b/lily/base-span-bar-engraver.cc index 0c7177017f..d233d514ca 100644 --- a/lily/base-span-bar-engraver.cc +++ b/lily/base-span-bar-engraver.cc @@ -44,7 +44,7 @@ Base_span_bar_engraver::acknowledge_element (Score_element_info i) /* - use a property? get_property ("singleStaffBracket", 0) ? + use a property? get_property ("singleStaffBracket"); ? --hwn */ diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index 63037e1a7f..15606f34b8 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -158,7 +158,7 @@ Beam_engraver::acknowledge_element (Score_element_info info) bool stem_grace = stem_l->get_elt_property ("grace") == SCM_BOOL_T; - SCM wg =get_property ("weAreGraceContext",0); + SCM wg =get_property ("weAreGraceContext"); bool wgb= to_boolean (wg); if (wgb!= stem_grace) diff --git a/lily/beam.cc b/lily/beam.cc index d96e15a637..e104c10ec8 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -599,7 +599,7 @@ Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const Real interbeam_f = paper_l ()->interbeam_f (multiplicity); - Real thick = gh_scm2double (get_elt_property ("beam-thickness"));; + Real thick = gh_scm2double (get_elt_property ("beam-thickness")); Real bdy = interbeam_f; Real stemdx = staffline_f; diff --git a/lily/break-align-engraver.cc b/lily/break-align-engraver.cc index 44d94270a6..508f7d3c38 100644 --- a/lily/break-align-engraver.cc +++ b/lily/break-align-engraver.cc @@ -40,7 +40,7 @@ Break_align_engraver::add_column (SCM smob) void Break_align_engraver::do_pre_move_processing () { - SCM order = get_property ("breakAlignOrder", 0); + SCM order = get_property ("breakAlignOrder"); for (; gh_pair_p (order); order = gh_cdr (order)) { SCM p = scm_assoc ( gh_car (order), column_alist_); diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc index 376a71dd25..84fa63071d 100644 --- a/lily/break-align-item.cc +++ b/lily/break-align-item.cc @@ -7,6 +7,7 @@ */ #include +#include "side-position-interface.hh" #include "warn.hh" #include "dimension-cache.hh" #include "lily-guile.hh" @@ -25,15 +26,12 @@ void Break_align_item::do_pre_processing() { - if (break_status_dir() == LEFT) - align_dir_ = LEFT; - else - align_dir_ = RIGHT; - - flip (&align_dir_); - + Direction ad = (break_status_dir() == LEFT) ? RIGHT : LEFT; Real interline= paper_l ()->get_var ("interline"); - + + set_elt_property ("self-alignment-X", gh_int2scm (ad)); + + Link_array elems; Link_array all_elems (elem_l_arr ()); @@ -154,6 +152,8 @@ Break_align_item::do_pre_processing() Break_align_item::Break_align_item () { - stacking_dir_ = RIGHT; + set_elt_property ("stacking-dir" , gh_int2scm (RIGHT)); set_axis (X_AXIS); + + dim_cache_[X_AXIS]->off_callbacks_.push (Side_position_interface::aligned_on_self); } diff --git a/lily/chord-name-engraver.cc b/lily/chord-name-engraver.cc index 22377b7d63..cf2891b02c 100644 --- a/lily/chord-name-engraver.cc +++ b/lily/chord-name-engraver.cc @@ -69,7 +69,7 @@ Chord_name_engraver::do_process_requests () return; bool find_inversion_b = false; - SCM chord_inversion = get_property ("chordInversion", 0); + SCM chord_inversion = get_property ("chordInversion"); if (gh_boolean_p (chord_inversion)) find_inversion_b = gh_scm2bool (chord_inversion); diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc index e0c167b87f..162cc06978 100644 --- a/lily/clef-engraver.cc +++ b/lily/clef-engraver.cc @@ -73,8 +73,8 @@ Clef_engraver::set_type (String s) else octave_dir_ = CENTER; - SCM c = get_property ("supportedClefTypes",0); - SCM p = get_property ("clefPitches", 0); + SCM c = get_property ("supportedClefTypes"); + SCM p = get_property ("clefPitches"); if (gh_list_p (c)) { @@ -132,7 +132,7 @@ Clef_engraver::acknowledge_element (Score_element_info info) void Clef_engraver::do_creation_processing() { - SCM def = get_property ("defaultClef", 0); + SCM def = get_property ("defaultClef"); if (gh_string_p (def)) { set_type (ly_scm2string (def)); diff --git a/lily/command-request.cc b/lily/command-request.cc index e73c253d89..58f4d434d0 100644 --- a/lily/command-request.cc +++ b/lily/command-request.cc @@ -123,17 +123,12 @@ Break_req::Break_req () } -void -Mark_req::do_print () const -{ - DEBUG_OUT << str_; -} bool Mark_req::do_equal_b (Request const * r) const { Mark_req const * other = dynamic_cast (r); - return other && other->str_ == str_; + return other && scm_equal_p (other->mark_label_, mark_label_); } void diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index 7f519db38b..977053e621 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -139,16 +139,16 @@ Dynamic_engraver::do_process_requests() /* UGH UGH */ - SCM prop = get_property ("dynamicDirection", 0); + SCM prop = get_property ("dynamicDirection"); if (!isdir_b (prop)) { - prop = get_property ("verticalDirection", 0); + prop = get_property ("verticalDirection"); } if (isdir_b (prop) && to_dir (prop)) text_p_->set_elt_property ("direction", prop); - prop = get_property ("dynamicPadding", 0); + prop = get_property ("dynamicPadding"); if (gh_number_p(prop)) { text_p_->set_elt_property ("padding", prop); diff --git a/lily/grace-align-item.cc b/lily/grace-align-item.cc index 0256679458..3d3df3ca0f 100644 --- a/lily/grace-align-item.cc +++ b/lily/grace-align-item.cc @@ -14,7 +14,7 @@ Grace_align_item::Grace_align_item () { - stacking_dir_ = RIGHT; + set_elt_property ("stacking-dir", gh_int2scm (RIGHT)); set_axis (X_AXIS); } @@ -29,7 +29,7 @@ Grace_align_item::do_pre_processing () Axis_align_item::do_pre_processing (); - translate_axis (-0.5* nhw, X_AXIS); // ugh. + // translate_axis (-0.5* nhw, X_AXIS); // ugh. } diff --git a/lily/grace-position-engraver.cc b/lily/grace-position-engraver.cc index e1e49f466a..5024b8c7b8 100644 --- a/lily/grace-position-engraver.cc +++ b/lily/grace-position-engraver.cc @@ -89,10 +89,6 @@ Grace_position_engraver::do_pre_move_processing () return; warning (_("Unattached grace notes. Attaching to last musical column.")); - /* if (ae) - ae->remove_element (align_l_); - else if (elt)*/ - align_l_->set_parent (0, X_AXIS); last_musical_col_l_->add_element (align_l_); diff --git a/lily/grace-position-performer.cc b/lily/grace-position-performer.cc index 58bdd73d6f..d932f3900f 100644 --- a/lily/grace-position-performer.cc +++ b/lily/grace-position-performer.cc @@ -61,7 +61,7 @@ Grace_position_performer::process_acknowledged () shortest_mom = shortest_mom length_mom_; Rational grace_fraction_rat (1, 2); - SCM prop = get_property ("graceFraction", 0); + SCM prop = get_property ("graceFraction"); if (SMOB_IS_TYPE_B(Moment, prop)) grace_fraction_rat = *SMOB_TO_TYPE (Moment,prop); diff --git a/lily/include/align-element.hh b/lily/include/align-element.hh index 1ba8ea1289..c6e230df5d 100644 --- a/lily/include/align-element.hh +++ b/lily/include/align-element.hh @@ -22,26 +22,28 @@ TODO: implement padding. document usage of this. - */ -class Align_element : public virtual Axis_group_element { -public: - Interval threshold_interval_ ; - /** - Should high priorities be first or last? - */ - - Direction stacking_dir_; - /** - Which side to align? -1: left side, 0: centered (around + + ******* + + element properties + + stacking-dir + + Which side to align? -1: left side, 0: centered (around center_l_ if not nil, or around center of width), 1: right side - URG. Unintuitive if stacking_dir_ == -1 - */ + ***** - Direction align_dir_; + align-dir: deprecate! Use Side_pos_interface::self_align + +*/ +class Align_element : public virtual Axis_group_element { +public: + Interval threshold_interval_ ; + Axis axis () const; Align_element (); diff --git a/lily/include/command-request.hh b/lily/include/command-request.hh index c1efa26c43..c21b1d0b3c 100644 --- a/lily/include/command-request.hh +++ b/lily/include/command-request.hh @@ -15,6 +15,7 @@ #include "duration.hh" #include "musical-pitch.hh" #include "key-def.hh" +#include "protected-scm.hh" class Break_req : public Request { public: @@ -26,10 +27,9 @@ protected: class Mark_req : public Request { public: - String str_; + Protected_scm mark_label_; protected: virtual bool do_equal_b (Request const*) const; - virtual void do_print () const; VIRTUAL_COPY_CONS(Music); }; diff --git a/lily/include/mark-engraver.hh b/lily/include/mark-engraver.hh index 0d9dd4eebf..4e4da38ced 100644 --- a/lily/include/mark-engraver.hh +++ b/lily/include/mark-engraver.hh @@ -10,21 +10,7 @@ #ifndef MARK_ENGRAVER_HH #define MARK_ENGRAVER_HH -#include "bar-script-engraver.hh" +#error -/**Print rehearsal marks. - */ -class Mark_engraver : public Bar_script_engraver -{ -public: - Mark_engraver (); - VIRTUAL_COPY_CONS(Translator); -protected: - virtual bool do_try_music (Music *req_l); - virtual void do_process_requests (); - virtual void do_post_move_processing (); -private: - Mark_req * mark_req_l_; -}; -#endif // MARK_ENGRAVER_HH +dendif // MARK_ENGRAVER_HH diff --git a/lily/include/translator-group.hh b/lily/include/translator-group.hh index 0f3fe7dd1a..11df320ce8 100644 --- a/lily/include/translator-group.hh +++ b/lily/include/translator-group.hh @@ -39,7 +39,7 @@ protected: Cons_list trans_p_list_; public: - SCM get_property (SCM name_sym, Translator_group **where_found_l) const; + SCM get_property (SCM name_sym) const; void set_property (String var_name, SCM value); diff --git a/lily/include/translator.hh b/lily/include/translator.hh index 54696d1040..7740fc7a9c 100644 --- a/lily/include/translator.hh +++ b/lily/include/translator.hh @@ -62,8 +62,8 @@ public: */ Music_output_def *output_def_l () const; - SCM get_property (String, Translator_group **) const; - SCM get_property (SCM symbol, Translator_group **) const; + SCM get_property (String) const; + SCM get_property (SCM symbol) const; virtual Moment now_mom () const; diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc index 40b9bd4bfd..161f323b0f 100644 --- a/lily/key-engraver.cc +++ b/lily/key-engraver.cc @@ -87,7 +87,7 @@ Key_engraver::acknowledge_element (Score_element_info info) { if (dynamic_cast (info.req_l_)) { - SCM c = get_property ("createKeyOnClefChange", 0); + SCM c = get_property ("createKeyOnClefChange"); if (to_boolean (c)) create_key (); } @@ -133,7 +133,7 @@ Key_engraver::read_req (Key_change_req const * r) { old_accidental_idx_arr_ = accidental_idx_arr_; key_.clear (); - SCM prop = get_property ("keyOctaviation", 0); + SCM prop = get_property ("keyOctaviation"); key_.multi_octave_b_ = to_boolean (prop); diff --git a/lily/local-key-engraver.cc b/lily/local-key-engraver.cc index 6edf683cf6..228ec8d157 100644 --- a/lily/local-key-engraver.cc +++ b/lily/local-key-engraver.cc @@ -101,7 +101,7 @@ Local_key_engraver::process_acknowledged () { if (!key_item_p_ && mel_l_arr_.size()) { - SCM f = get_property ("forgetAccidentals",0); + SCM f = get_property ("forgetAccidentals"); bool forget = to_boolean (f); for (int i=0; i < mel_l_arr_.size(); i++) { @@ -188,7 +188,7 @@ Local_key_engraver::do_pre_move_processing() void Local_key_engraver::acknowledge_element (Score_element_info info) { - SCM wg= get_property ("weAreGraceContext", 0); + SCM wg= get_property ("weAreGraceContext"); bool selfgr = gh_boolean_p (wg) &&gh_scm2bool (wg); bool he_gr = to_boolean (info.elem_l_->get_elt_property ("grace")); @@ -222,7 +222,7 @@ Local_key_engraver::do_process_requests() { if (time_trans_l_ && !time_trans_l_->measure_position ()) { - if (!to_boolean (get_property ("noResetKey",0)) && key_grav_l_) + if (!to_boolean (get_property ("noResetKey")) && key_grav_l_) local_key_= key_grav_l_->key_; } else if (key_grav_l_ && key_grav_l_->key_changed_b ()) diff --git a/lily/mark-engraver.cc b/lily/mark-engraver.cc index 404644f2ce..3c3777d5e8 100644 --- a/lily/mark-engraver.cc +++ b/lily/mark-engraver.cc @@ -5,11 +5,27 @@ (c) 1998--2000 Jan Nieuwenhuizen */ + #include "command-request.hh" -#include "mark-engraver.hh" +#include "bar-script-engraver.hh" #include "engraver-group-engraver.hh" #include "text-item.hh" +/**Print rehearsal marks. + */ +class Mark_engraver : public Bar_script_engraver +{ +public: + Mark_engraver (); + VIRTUAL_COPY_CONS(Translator); +protected: + virtual bool do_try_music (Music *req_l); + virtual void do_process_requests (); + virtual void do_post_move_processing (); +private: + Mark_req * mark_req_l_; +}; + ADD_THIS_TRANSLATOR (Mark_engraver); @@ -32,7 +48,6 @@ Mark_engraver::do_try_music (Music* r_l) { if (Mark_req *mr = dynamic_cast (r_l)) { - if (mark_req_l_ && mr->equal_b (mark_req_l_)) return true; if (mark_req_l_) @@ -50,7 +65,39 @@ Mark_engraver::do_process_requests () { create_items (mark_req_l_); - String t = mark_req_l_->str_; + String t; + + SCM m = (mark_req_l_->mark_label_ == SCM_UNDEFINED) + ? get_property ("rehearsalMark") + : SCM(mark_req_l_->mark_label_); + + if (gh_number_p (m)) + { + int mark_count = gh_scm2int (m); + t = to_str (mark_count); + mark_count ++; + m = gh_int2scm (mark_count); + } + else if (gh_string_p (m)) + { + t = ly_scm2string (m); + String next; + if (t.length_i ()) + { + char c = t[0]; + c++; + next = to_str (c); + } + m = ly_str02scm (next.ch_C()); + } + else + { + m = gh_int2scm (1); + } + + daddy_trans_l_->set_property ("rehearsalMark", m); + + text_p_->set_elt_property ("text", ly_str02scm ( t.ch_C())); SCM st = ly_str02scm ((t.index_any_i ("0123456789") >= 0 ) diff --git a/lily/melisma-engraver.cc b/lily/melisma-engraver.cc index 3a89ad968f..a9e1dce2b3 100644 --- a/lily/melisma-engraver.cc +++ b/lily/melisma-engraver.cc @@ -27,9 +27,9 @@ Melisma_engraver::do_try_music (Music *m ) { if (dynamic_cast(m)) { - SCM plain (get_property ("melismaBusy", 0)); - SCM slur (get_property ("slurMelismaBusy", 0)); - SCM tie (get_property ("tieMelismaBusy", 0)); + SCM plain (get_property ("melismaBusy")); + SCM slur (get_property ("slurMelismaBusy")); + SCM tie (get_property ("tieMelismaBusy")); return (to_boolean (plain)) || (to_boolean (slur)) || (to_boolean (tie)); diff --git a/lily/multi-measure-rest-engraver.cc b/lily/multi-measure-rest-engraver.cc index d34a75adbd..2ed4779388 100644 --- a/lily/multi-measure-rest-engraver.cc +++ b/lily/multi-measure-rest-engraver.cc @@ -118,7 +118,7 @@ Multi_measure_rest_engraver::do_process_requests () announce_element (Score_element_info (mmrest_p_, busy_span_req_l_)); start_measure_i_ - = gh_scm2int (time->get_property ("currentBarNumber", 0)); + = gh_scm2int (time->get_property ("currentBarNumber")); } } @@ -163,7 +163,7 @@ Multi_measure_rest_engraver::do_post_move_processing () if (mmrest_p_ && !time->measure_position ()) { lastrest_p_ = mmrest_p_; - int cur = gh_scm2int (time->get_property ("currentBarNumber", 0)); + int cur = gh_scm2int (time->get_property ("currentBarNumber")); lastrest_p_->set_elt_property ("measure-count", gh_int2scm (cur - start_measure_i_)); mmrest_p_ = 0; diff --git a/lily/note-heads-engraver.cc b/lily/note-heads-engraver.cc index 2815ca843d..4a397581a3 100644 --- a/lily/note-heads-engraver.cc +++ b/lily/note-heads-engraver.cc @@ -58,7 +58,7 @@ Note_heads_engraver::do_process_requests() if (note_p_arr_.size ()) return ; - SCM noteheadstyle = get_property ("noteHeadStyle", 0); + SCM noteheadstyle = get_property ("noteHeadStyle"); for (int i=0; i < note_req_l_arr_.size (); i++) { Note_head *note_p = new Note_head; diff --git a/lily/note-performer.cc b/lily/note-performer.cc index d2cfe8dea8..6e2bab25ca 100644 --- a/lily/note-performer.cc +++ b/lily/note-performer.cc @@ -37,7 +37,7 @@ Note_performer::do_process_requests () { int transposing_i = 0; //urg - SCM prop = get_property ("transposing", 0); + SCM prop = get_property ("transposing"); if (gh_number_p(prop)) transposing_i = gh_scm2int (prop); diff --git a/lily/paper-column.cc b/lily/paper-column.cc index 59d61683ab..3117df5b95 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -122,7 +122,7 @@ Paper_column::column_l () const Paper_column::Paper_column (Moment w) { - SCM when = (new Moment (w))->smobify_self ();; + SCM when = (new Moment (w))->smobify_self (); scm_unprotect_object (when); set_elt_property ("when", when); diff --git a/lily/parser.yy b/lily/parser.yy index 83669c3717..c16f39fd6d 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -996,18 +996,23 @@ verbose_command_req: sp_p->span_type_str_ = ly_scm2string ($3); sp_p->set_spot (THIS->here_input ()); $$ = sp_p; - } + } + | MARK { + Mark_req * m = new Mark_req; + $$ = m; + } | MARK STRING { Mark_req *m = new Mark_req; - m->str_ = ly_scm2string ($2); + m->mark_label_ = $2; $$ = m; } | MARK unsigned { Mark_req *m = new Mark_req; - m->str_ = to_str ($2); + m->mark_label_ = gh_int2scm ($2); $$ = m; } + | TIME_T unsigned '/' unsigned { Time_signature_change_req *m = new Time_signature_change_req; m->beats_i_ = $2; diff --git a/lily/protected-scm.cc b/lily/protected-scm.cc index 71d6b48273..2878e9c9a8 100644 --- a/lily/protected-scm.cc +++ b/lily/protected-scm.cc @@ -12,17 +12,17 @@ Protected_scm::Protected_scm () { - object_ = 0; + object_ = SCM_UNDEFINED; } Protected_scm::Protected_scm (SCM s) { - object_ = s ? scm_protect_object (s): 0; + object_ = SCM_NIMP(s) ? scm_protect_object (s): s; } Protected_scm::Protected_scm (Protected_scm const &s) { - object_ = s.object_ ? scm_protect_object (s.object_) : 0; + object_ = SCM_NIMP(s.object_) ? scm_protect_object (s.object_) : s.object_; } Protected_scm & @@ -30,10 +30,11 @@ Protected_scm::operator =(SCM s) { if (object_ == s) return *this; - if (object_) + + if (SCM_NIMP (object_)) scm_unprotect_object(object_); - object_ = s ? scm_protect_object (s): 0; + object_ = SCM_NIMP (s) ? scm_protect_object (s): s; return *this; } @@ -46,7 +47,7 @@ Protected_scm::operator = (Protected_scm const &s) Protected_scm::~Protected_scm () { - if (object_) + if (SCM_NIMP (object_)) { scm_unprotect_object (object_); } diff --git a/lily/repeat-engraver.cc b/lily/repeat-engraver.cc index 8cc39fad71..ef5a60c3b0 100644 --- a/lily/repeat-engraver.cc +++ b/lily/repeat-engraver.cc @@ -60,7 +60,7 @@ Repeat_engraver::queue_events () Music_sequence* alt = repeated_music_l_->alternatives_p_; Moment walk_mom = now_mom () + repeated_music_l_->repeat_body_p_->length_mom (); - SCM novolta = get_property ("noVoltaBraces",0); + SCM novolta = get_property ("noVoltaBraces"); bool create_volta = !to_boolean (novolta); Cons_list becel; @@ -107,7 +107,7 @@ Repeat_engraver::queue_events () becel.append (c); last_number = volta_number; volta_number ++; - SCM l (get_property ("voltaSpannerDuration", 0)); + SCM l (get_property ("voltaSpannerDuration")); if (SMOB_IS_TYPE_B (Moment, l)) { Moment vSD_mom = *SMOB_TO_TYPE (Moment,l); diff --git a/lily/rhythmic-column-engraver.cc b/lily/rhythmic-column-engraver.cc index 6e4aaa96c5..a8bf90263a 100644 --- a/lily/rhythmic-column-engraver.cc +++ b/lily/rhythmic-column-engraver.cc @@ -58,7 +58,7 @@ Rhythmic_column_engraver::process_acknowledged () stem_l_ = 0; } - SCM wg = get_property ("weAreGraceContext",0); + SCM wg = get_property ("weAreGraceContext"); bool wegrace = to_boolean (wg); if (!wegrace) @@ -71,7 +71,7 @@ Rhythmic_column_engraver::process_acknowledged () void Rhythmic_column_engraver::acknowledge_element (Score_element_info i) { - SCM wg = get_property ("weAreGraceContext",0); + SCM wg = get_property ("weAreGraceContext"); bool wegrace = to_boolean (wg); if ((wegrace != (i.elem_l_->get_elt_property ("grace") != SCM_UNDEFINED)) diff --git a/lily/rod.cc b/lily/rod.cc index cbf1403cdc..0db3c85885 100644 --- a/lily/rod.cc +++ b/lily/rod.cc @@ -39,13 +39,23 @@ Column_rod::compare (const Column_rod &r1, const Column_rod &r2) { return r1.other_l_->rank_i() - r2.other_l_->rank_i(); } + void Rod::add_to_cols () { Direction d = LEFT; + Drul_array cols; + Real extra_dist = 0.0; do { - item_l_drul_[-d]->column_l ()->add_rod - (item_l_drul_[d]->column_l (), distance_f_); - }while ((flip (&d))!=LEFT); + cols[d] = item_l_drul_[d]->column_l (); + extra_dist += item_l_drul_[d]->relative_coordinate (cols[d], X_AXIS); + } while ((flip (&d))!=LEFT); + + if (cols[LEFT] != cols[RIGHT]) + do + { + cols[-d]->add_rod(cols[d], distance_f_ + extra_dist); + } + while ((flip (&d))!=LEFT); } diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc index 65ca2915be..74d8b93f9f 100644 --- a/lily/script-engraver.cc +++ b/lily/script-engraver.cc @@ -94,7 +94,7 @@ Script_engraver::do_process_requests() if (l->get_direction ()) stafy.set_direction (l->get_direction ()); - SCM axisprop = get_property ("scriptHorizontal",0); + SCM axisprop = get_property ("scriptHorizontal"); bool xaxis = to_boolean (axisprop); if (xaxis) stafy.set_axis (X_AXIS); @@ -119,7 +119,7 @@ void Script_engraver::acknowledge_element (Score_element_info inf) { bool them_grace = to_boolean (inf.elem_l_->get_elt_property ("grace")); - bool us_grace = to_boolean (get_property ("weAreGraceContext",0)); + bool us_grace = to_boolean (get_property ("weAreGraceContext")); if (us_grace != them_grace) return; diff --git a/lily/side-position-interface.cc b/lily/side-position-interface.cc index b60a6feb94..ba8861c502 100644 --- a/lily/side-position-interface.cc +++ b/lily/side-position-interface.cc @@ -111,7 +111,7 @@ Side_position_interface::side_position (Dimension_cache const * c) return total_off; } -/* +/** callback that centers the element on itself */ Real diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index d5f6f768e7..61a7d6ce03 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -29,11 +29,6 @@ Slur_engraver::do_try_music (Music *req_l) void Slur_engraver::set_melisma (bool m) { - Translator_group *where = daddy_trans_l_; - get_property ("slurMelismaBusy", &where); - if (!where) - where = daddy_trans_l_; - daddy_trans_l_->set_property ("slurMelismaBusy", m ? SCM_BOOL_T :SCM_BOOL_F); } @@ -58,7 +53,7 @@ Slur_engraver::do_removal_processing () typeset_element (slur_l_stack_[i]); } slur_l_stack_.clear (); - SCM wg = get_property ("weAreGraceContext",0); + SCM wg = get_property ("weAreGraceContext"); bool wgb = to_boolean (wg); if (!wgb) for (int i=0; i < requests_arr_.size(); i++) @@ -115,7 +110,7 @@ void Slur_engraver::do_post_move_processing() { new_slur_req_l_arr_.clear(); - SCM m = get_property ("automaticMelismata",0); + SCM m = get_property ("automaticMelismata"); if (to_boolean (m)) { set_melisma (slur_l_stack_.size ()); diff --git a/lily/staff-margin-engraver.cc b/lily/staff-margin-engraver.cc index 9a93d91e7d..d581d51352 100644 --- a/lily/staff-margin-engraver.cc +++ b/lily/staff-margin-engraver.cc @@ -40,8 +40,8 @@ Staff_margin_engraver::acknowledge_element (Score_element_info inf) return; - SCM long_name = get_property ("instrument", 0); - SCM short_name = get_property ("instr", 0); + SCM long_name = get_property ("instrument"); + SCM short_name = get_property ("instr"); if (now_mom () > Moment (0)) long_name = short_name; diff --git a/lily/staff-performer.cc b/lily/staff-performer.cc index 547163f457..208da51a18 100644 --- a/lily/staff-performer.cc +++ b/lily/staff-performer.cc @@ -96,10 +96,10 @@ String Staff_performer::new_instrument_str () { // mustn't ask Score for instrument: it will return piano! - SCM minstr = get_property (ly_symbol2scm ("midiInstrument"), 0); + SCM minstr = get_property (ly_symbol2scm ("midiInstrument")); if (!gh_string_p(minstr)) - minstr = get_property (ly_symbol2scm ("instrument"), 0); + minstr = get_property (ly_symbol2scm ("instrument")); if (!gh_string_p (minstr) || ly_scm2string (minstr) == instrument_str_) diff --git a/lily/staff-symbol-engraver.cc b/lily/staff-symbol-engraver.cc index eb32b20db0..a84f393a52 100644 --- a/lily/staff-symbol-engraver.cc +++ b/lily/staff-symbol-engraver.cc @@ -54,8 +54,8 @@ Staff_symbol_engraver::do_creation_processing() void Staff_symbol_engraver::do_removal_processing() { - SCM n = get_property ("numberOfStaffLines",0); - SCM ss = get_property ("staffSpace", 0); + SCM n = get_property ("numberOfStaffLines"); + SCM ss = get_property ("staffSpace"); if (gh_number_p (ss)) span_p_->set_elt_property ("staff-space", ss); diff --git a/lily/stem-engraver.cc b/lily/stem-engraver.cc index 91a679eca6..a1f467e1f6 100644 --- a/lily/stem-engraver.cc +++ b/lily/stem-engraver.cc @@ -28,7 +28,7 @@ Stem_engraver::Stem_engraver() void Stem_engraver::do_creation_processing () { - SCM prop = get_property ("abbrev", 0); + SCM prop = get_property ("abbrev"); if (gh_number_p(prop)) { default_abbrev_i_ = gh_scm2int (prop); @@ -99,18 +99,17 @@ Stem_engraver::do_pre_move_processing() if (stem_p_) { - Translator_group* which; - SCM prop = get_property ("stemLeftBeamCount", &which); + SCM prop = get_property ("stemLeftBeamCount"); if (gh_number_p(prop)) { stem_p_->set_beaming (gh_scm2int (prop),LEFT); - ((Translator_group*)which)->set_property ("stemLeftBeamCount", SCM_UNDEFINED); + daddy_trans_l_->set_property ("stemLeftBeamCount", SCM_UNDEFINED); } - prop = get_property ("stemRightBeamCount", &which); + prop = get_property ("stemRightBeamCount"); if (gh_number_p(prop)) { stem_p_->set_beaming (gh_scm2int (prop), RIGHT); - ((Translator_group*)which)->set_property ("stemRightBeamCount", SCM_UNDEFINED); + daddy_trans_l_->set_property ("stemRightBeamCount", SCM_UNDEFINED); } // UGH. Should mark non-forced instead. diff --git a/lily/text-engraver.cc b/lily/text-engraver.cc index 80e5e12080..194b779774 100644 --- a/lily/text-engraver.cc +++ b/lily/text-engraver.cc @@ -81,7 +81,7 @@ Text_engraver::do_process_requests () Text_item *text = new Text_item; Side_position_interface stafy (text); - SCM axisprop = get_property ("scriptHorizontal",0); + SCM axisprop = get_property ("scriptHorizontal"); if (to_boolean (axisprop)) { stafy.set_axis (X_AXIS); @@ -102,7 +102,7 @@ Text_engraver::do_process_requests () if (r->style_str_.length_i ()) text->set_elt_property ("style", ly_str02scm (r->style_str_.ch_C())); - SCM empty = get_property ("textEmptyDimension", 0); + SCM empty = get_property ("textEmptyDimension"); if (to_boolean (empty)) { text->set_empty (X_AXIS); diff --git a/lily/tie-engraver.cc b/lily/tie-engraver.cc index 0090dbd9b5..9ad9be2236 100644 --- a/lily/tie-engraver.cc +++ b/lily/tie-engraver.cc @@ -80,7 +80,7 @@ Tie_engraver::do_try_music (Music *m) if (Tie_req * c = dynamic_cast (m)) { req_l_ = c; - SCM m = get_property ("automaticMelismata",0); + SCM m = get_property ("automaticMelismata"); bool am = gh_boolean_p (m) &&gh_scm2bool (m); if (am) { @@ -94,11 +94,6 @@ Tie_engraver::do_try_music (Music *m) void Tie_engraver::set_melisma (bool m) { - Translator_group *where = daddy_trans_l_; - get_property ("tieMelismaBusy", &where); - if (!where) - where = daddy_trans_l_; - daddy_trans_l_->set_property ("tieMelismaBusy", m ? SCM_BOOL_T : SCM_BOOL_F); } @@ -168,7 +163,7 @@ Tie_engraver::process_acknowledged () } - SCM sparse = get_property ("sparseTies", 0); + SCM sparse = get_property ("sparseTies"); if (to_boolean (sparse)) { int i = scm_ilength (head_list); @@ -234,7 +229,7 @@ Tie_engraver::do_pre_move_processing () void Tie_engraver::do_post_move_processing () { - SCM m = get_property ("automaticMelismata",0); + SCM m = get_property ("automaticMelismata"); if (to_boolean (m)) { set_melisma (false); diff --git a/lily/timing-engraver.cc b/lily/timing-engraver.cc index feb368ba36..f74a9be590 100644 --- a/lily/timing-engraver.cc +++ b/lily/timing-engraver.cc @@ -48,14 +48,14 @@ Timing_engraver::which_bar () if (!now_mom ()) return "|"; - SCM nonauto = get_property ("barNonAuto", 0); + SCM nonauto = get_property ("barNonAuto"); if (!to_boolean (nonauto)) { - SCM always = get_property ("barAlways", 0); + SCM always = get_property ("barAlways"); if (!measure_position () || (to_boolean (always))) { - SCM def=get_property ("defaultBarType" ,0); + SCM def=get_property ("defaultBarType" ); return (gh_string_p (def))? ly_scm2string (def) : ""; } } diff --git a/lily/timing-translator.cc b/lily/timing-translator.cc index 81429e9d3e..7e49f77f2e 100644 --- a/lily/timing-translator.cc +++ b/lily/timing-translator.cc @@ -96,11 +96,11 @@ Timing_translator::do_pre_move_processing() while (!global_l); /* allbars == ! skipbars */ - SCM sb = get_property ("skipBars", 0); + SCM sb = get_property ("skipBars"); bool allbars = !to_boolean (sb); // urg: multi bar rests: should always process whole of first bar? - SCM tim = get_property ("timing", 0); + SCM tim = get_property ("timing"); bool timb = to_boolean (tim); if (timb && allbars) { @@ -130,7 +130,7 @@ Timing_translator::do_creation_processing() Moment Timing_translator::measure_length () const { - SCM l = get_property("measureLength",0); + SCM l = get_property("measureLength"); if (SMOB_IS_TYPE_B(Moment, l)) return *SMOB_TO_TYPE (Moment, l); else @@ -142,7 +142,7 @@ void Timing_translator::get_time_signature (int *n, int *d) const { Moment one_beat (1,4); - SCM one = get_property ("beatLength",0); + SCM one = get_property ("beatLength"); if (SMOB_IS_TYPE_B (Moment, one)) one_beat = *SMOB_TO_TYPE (Moment, one); *n = measure_length () / one_beat; @@ -169,7 +169,7 @@ Timing_translator::Timing_translator() Moment Timing_translator::measure_position () const { - SCM sm = get_property ("measurePosition",0); + SCM sm = get_property ("measurePosition"); Moment m =0; if (SMOB_IS_TYPE_B (Moment, sm)) @@ -206,7 +206,7 @@ Timing_translator::do_post_move_processing() Moment * measposp =0; - SCM s = get_property ("measurePosition", 0); + SCM s = get_property ("measurePosition"); if (SMOB_IS_TYPE_B (Moment, s)) { measposp = SMOB_TO_TYPE (Moment,s); @@ -220,15 +220,14 @@ Timing_translator::do_post_move_processing() *measposp += dt; // don't need to set_property - Translator_group * tr =daddy_trans_l_; - SCM barn = get_property ("currentBarNumber", &tr); + SCM barn = get_property ("currentBarNumber"); int b = 0; if (gh_number_p(barn)) { b = gh_scm2int (barn); } - SCM cad = get_property ("timing", 0); + SCM cad = get_property ("timing"); bool c= to_boolean (cad ); Moment len = measure_length (); @@ -238,6 +237,6 @@ Timing_translator::do_post_move_processing() b ++; } - tr->set_property ("currentBarNumber", gh_int2scm (b)); + daddy_trans_l_->set_property ("currentBarNumber", gh_int2scm (b)); } diff --git a/lily/translator-group.cc b/lily/translator-group.cc index 743f843cb2..c76e68e884 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -429,20 +429,16 @@ Translator_group::do_add_processing () } SCM -Translator_group::get_property (SCM sym, Translator_group **where_l) const +Translator_group::get_property (SCM sym) const { if (properties_dict_.elem_b (sym)) { - if (where_l) - *where_l = (Translator_group*) this; // ugh return properties_dict_.get (sym); } if (daddy_trans_l_) - return daddy_trans_l_->get_property (sym, where_l); + return daddy_trans_l_->get_property (sym); - if (where_l) - *where_l = 0; return SCM_UNDEFINED; } diff --git a/lily/translator.cc b/lily/translator.cc index 274ef2b412..28e2b4c31b 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -164,16 +164,15 @@ Translator::output_def_l () const } SCM -Translator::get_property (String id, Translator_group **where_l) const +Translator::get_property (String id) const { - return daddy_trans_l_->get_property (ly_symbol2scm (id.ch_C()), where_l); + return daddy_trans_l_->get_property (ly_symbol2scm (id.ch_C())); } SCM -Translator::get_property (SCM sym, - Translator_group **where_l) const +Translator::get_property (SCM sym) const { - return daddy_trans_l_->get_property (sym, where_l); + return daddy_trans_l_->get_property (sym); } diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc index 39dbc7b12b..2430e7b37c 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -50,7 +50,7 @@ Tuplet_engraver::do_try_music (Music *r) Moment m = now_mom () + c->length_mom (); stop_moments_.push (m); - SCM s = get_property ("tupletSpannerDuration",0); + SCM s = get_property ("tupletSpannerDuration"); if (SMOB_IS_TYPE_B(Moment, s)) m = m get_elt_property ("grace")); - SCM wg = get_property ("weAreGraceContext",0); + SCM wg = get_property ("weAreGraceContext"); bool wgb = to_boolean (wg); if (grace != wgb) return; @@ -115,7 +115,7 @@ Tuplet_engraver::do_post_move_processing () Moment now = now_mom (); Moment tsd; - SCM s = get_property ("tupletSpannerDuration",0); + SCM s = get_property ("tupletSpannerDuration"); if (SMOB_IS_TYPE_B(Moment, s)) tsd = *SMOB_TO_TYPE(Moment,s); diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc index aca1c68fd8..464e7e3df2 100644 --- a/lily/vertical-align-engraver.cc +++ b/lily/vertical-align-engraver.cc @@ -23,7 +23,7 @@ Vertical_align_engraver::do_creation_processing() { valign_p_ =new Axis_align_spanner; valign_p_->set_axis (Y_AXIS); - valign_p_->stacking_dir_ = DOWN; + valign_p_->set_elt_property ("stacking-dir", gh_int2scm (DOWN)); valign_p_->set_bounds(LEFT,get_staff_info().command_pcol_l ()); announce_element (Score_element_info (valign_p_ , 0)); @@ -32,23 +32,18 @@ Vertical_align_engraver::do_creation_processing() void Vertical_align_engraver::do_removal_processing() { - SCM dist (get_property ("maxVerticalAlign", 0)); + SCM dist (get_property ("maxVerticalAlign")); if (gh_number_p(dist)) { valign_p_->threshold_interval_[BIGGER] = gh_scm2double (dist); } - dist = get_property ("minVerticalAlign", 0); + dist = get_property ("minVerticalAlign"); if (gh_number_p(dist)) { valign_p_->threshold_interval_[SMALLER] = gh_scm2double (dist); } - dist = get_property ("alignmentReference",0); - if (isdir_b (dist)) - { - valign_p_->align_dir_ = to_dir (dist); - } valign_p_->set_bounds(RIGHT,get_staff_info().command_pcol_l ()); typeset_element (valign_p_); valign_p_ =0; diff --git a/ly/engraver.ly b/ly/engraver.ly index b30c731e86..44c508c1ba 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -214,8 +214,8 @@ StaffGroupContext= \translator { \type "Engraver_group_engraver"; \consists "Span_bar_engraver"; \consists "Output_property_engraver"; - \consists "Staff_group_bar_engraver"; + \name StaffGroup; \accepts "Staff"; \accepts "RhythmicStaff"; @@ -246,6 +246,7 @@ LyricsContext = \translator { \name Lyrics; \consists Vertical_align_engraver;%need this for getting folded repeats right. + \consists "Property_engraver"; \consistsend "Axis_group_engraver"; \accepts "LyricVoice"; @@ -340,7 +341,7 @@ ScoreContext = \translator { \accepts "NoteNames"; markVisibilityFunction = #end-of-line-invisible - barNumberVisibilityFunction = #end-of-line-invisible + barNumberVisibilityFunction = #begin-of-line-visible marginVisibilityFunction = #begin-of-line-visible }; @@ -354,8 +355,6 @@ OrchestralScoreContext= \translator { \consists "Bar_number_engraver"; \consists "Mark_engraver"; - - \accepts "HaraKiriStaff"; }; \translator { diff --git a/scm/generic-property.scm b/scm/generic-property.scm index 619e0591aa..db27072dbc 100644 --- a/scm/generic-property.scm +++ b/scm/generic-property.scm @@ -184,3 +184,8 @@ ) +(define generic-lyrics-properties + (list generic-text-properties + ) + +) -- 2.39.5