From 06cac0d84ff6213f83a04fd0b77ab75890a831e8 Mon Sep 17 00:00:00 2001 From: fred Date: Tue, 26 Mar 2002 23:22:13 +0000 Subject: [PATCH] lilypond-1.3.55 --- lily/align-note-column-engraver.cc | 5 ++- lily/auto-beam-engraver.cc | 2 +- lily/bar-engraver.cc | 4 +- lily/bar-number-engraver.cc | 18 +++----- lily/beam-engraver.cc | 2 +- lily/break-align-item.cc | 5 ++- lily/breathing-sign-engraver.cc | 5 +-- lily/breathing-sign.cc | 4 +- lily/chord-name-engraver.cc | 2 +- lily/chord-name.cc | 5 +++ lily/chord-tremolo-engraver.cc | 2 +- lily/clef-engraver.cc | 44 +++++++++++------- lily/collision.cc | 11 ++--- lily/crescendo.cc | 3 +- lily/dot-column-engraver.cc | 2 +- lily/dot-column.cc | 9 ++-- lily/dots.cc | 3 +- lily/dynamic-engraver.cc | 21 ++++----- lily/extender-engraver.cc | 2 +- lily/extender-spanner.cc | 5 ++- lily/grace-align-item.cc | 3 +- lily/hara-kiri-engraver.cc | 2 +- lily/hara-kiri-vertical-group-spanner.cc | 11 +++-- lily/hyphen-engraver.cc | 2 +- lily/hyphen-spanner.cc | 4 +- lily/include/bar.hh | 2 +- lily/include/beam.hh | 2 +- lily/include/break-align-item.hh | 2 +- lily/include/breathing-sign.hh | 2 +- lily/include/chord-name.hh | 3 +- lily/include/clef-item.hh | 1 + lily/include/collision.hh | 2 +- lily/include/crescendo.hh | 2 +- lily/include/dot-column.hh | 2 +- lily/include/dots.hh | 2 +- lily/include/extender-spanner.hh | 2 +- lily/include/grace-align-item.hh | 2 +- .../hara-kiri-vertical-group-spanner.hh | 2 +- lily/include/hyphen-spanner.hh | 2 +- lily/include/item.hh | 2 +- lily/include/key-item.hh | 2 +- lily/include/local-key-item.hh | 4 +- lily/include/multi-measure-rest.hh | 2 +- lily/include/note-column.hh | 2 +- lily/include/note-head.hh | 2 +- lily/include/rest-collision.hh | 2 +- lily/include/rest.hh | 2 + lily/include/script-column.hh | 2 +- lily/include/script.hh | 1 + lily/include/separating-group-spanner.hh | 2 +- lily/include/single-malt-grouping-item.hh | 2 +- lily/include/slur.hh | 2 +- lily/include/spacing-spanner.hh | 2 +- lily/include/span-bar.hh | 2 +- lily/include/staff-bar.hh | 1 + lily/include/staff-symbol.hh | 3 ++ lily/include/stem-tremolo.hh | 2 +- lily/include/stem.hh | 2 +- lily/include/sustain-pedal.hh | 2 +- lily/include/system-start-delimiter.hh | 2 +- lily/include/text-item.hh | 1 + lily/include/tie-column.hh | 3 +- lily/include/tie.hh | 2 +- lily/include/time-signature.hh | 2 +- lily/include/tuplet-spanner.hh | 2 +- lily/include/volta-spanner.hh | 2 +- lily/instrument-name-engraver.cc | 7 +-- lily/key-item.cc | 7 +-- lily/line-group-group-engraver.cc | 2 +- lily/line-number-engraver.cc | 2 +- lily/line-of-score.cc | 45 +++++++++---------- lily/local-key-engraver.cc | 2 +- lily/local-key-item.cc | 5 +++ lily/lyric-engraver.cc | 4 +- lily/mark-engraver.cc | 22 ++++----- lily/multi-measure-rest-engraver.cc | 4 +- lily/multi-measure-rest.cc | 13 +++--- lily/note-column.cc | 27 +++++------ lily/note-head.cc | 6 +++ lily/note-heads-engraver.cc | 4 +- lily/note-name-engraver.cc | 2 +- lily/paper-column.cc | 6 +++ lily/piano-pedal-engraver.cc | 5 ++- lily/repeat-engraver.cc | 2 +- lily/rest-collision-engraver.cc | 2 +- lily/rest-collision.cc | 16 +++---- lily/rest-engraver.cc | 4 +- lily/rest.cc | 5 +++ lily/rhythmic-column-engraver.cc | 2 +- lily/rhythmic-head.cc | 10 +++-- lily/script-column-engraver.cc | 2 +- lily/script-column.cc | 9 ++-- lily/script-engraver.cc | 3 +- lily/script.cc | 4 ++ lily/separating-group-spanner.cc | 14 +++--- lily/slur-engraver.cc | 23 +++++++++- lily/slur.cc | 19 ++++---- lily/spacing-engraver.cc | 2 +- lily/spacing-spanner.cc | 3 +- lily/span-bar-engraver.cc | 18 +++----- lily/staff-bar.cc | 6 +++ lily/staff-symbol-engraver.cc | 7 +-- lily/staff-symbol.cc | 8 +++- lily/stem.cc | 25 ++++++----- lily/sustain-pedal.cc | 4 ++ lily/system-start-delimiter-engraver.cc | 6 +-- lily/system-start-delimiter.cc | 7 +-- lily/text-engraver.cc | 2 +- lily/text-item.cc | 6 +++ lily/tie-column.cc | 11 ++--- lily/tie-engraver.cc | 6 +-- lily/tie.cc | 13 +++--- lily/time-signature-engraver.cc | 4 +- lily/time-signature.cc | 5 ++- lily/tuplet-engraver.cc | 2 +- lily/tuplet-spanner.cc | 33 +++++++------- lily/vertical-align-engraver.cc | 2 +- lily/volta-spanner.cc | 11 ++--- 118 files changed, 401 insertions(+), 317 deletions(-) diff --git a/lily/align-note-column-engraver.cc b/lily/align-note-column-engraver.cc index dff753effc..c034b0df9c 100644 --- a/lily/align-note-column-engraver.cc +++ b/lily/align-note-column-engraver.cc @@ -45,9 +45,10 @@ Align_note_column_engraver::Align_note_column_engraver() void Align_note_column_engraver::do_creation_processing () { - align_item_p_ = new Grace_align_item; + align_item_p_ = new Grace_align_item (SCM_EOL); Side_position_interface (align_item_p_).set_axis (X_AXIS); - Side_position_interface (align_item_p_).set_direction (LEFT); + Side_position_interface (align_item_p_).set_direction (LEFT); + // needed for setting font size. announce_element (Score_element_info (align_item_p_, 0)); } diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc index 26ef80cf7e..5a8661ae9c 100644 --- a/lily/auto-beam-engraver.cc +++ b/lily/auto-beam-engraver.cc @@ -205,7 +205,7 @@ Auto_beam_engraver::begin_beam () Beam* Auto_beam_engraver::create_beam_p () { - Beam* beam_p = new Beam; + Beam* beam_p = new Beam (get_property ("basicBeamProperties")); for (int i = 0; i < stem_l_arr_p_->size (); i++) { diff --git a/lily/bar-engraver.cc b/lily/bar-engraver.cc index 2a8c2ae66d..075cd56129 100644 --- a/lily/bar-engraver.cc +++ b/lily/bar-engraver.cc @@ -28,9 +28,9 @@ Bar_engraver::create_bar () { if (!bar_p_) { - bar_p_ = new Staff_bar; - bar_p_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Staff_bar")); + bar_p_ = new Staff_bar (get_property ("basicBarlineProperties")); + // urg: "" != empty... /* TODO: use symbol. diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc index 3aa50afbf2..f2961ee47f 100644 --- a/lily/bar-number-engraver.cc +++ b/lily/bar-number-engraver.cc @@ -21,7 +21,7 @@ class Bar_number_engraver : public Engraver { protected: Text_item* text_p_; - Protected_scm visibility_lambda_; + Protected_scm staffs_; protected: @@ -65,11 +65,6 @@ Bar_number_engraver::Bar_number_engraver () void Bar_number_engraver::do_creation_processing () { - String t = "barNumberVisibilityFunction"; - SCM proc = get_property (t); - - if (gh_procedure_p (proc)) - visibility_lambda_ = proc; } @@ -98,7 +93,7 @@ Bar_number_engraver::do_pre_move_processing () { if (text_p_) { - text_p_->set_elt_property ("side-support", staffs_); + text_p_->set_elt_pointer ("side-support-elements", staffs_); typeset_element (text_p_); text_p_ =0; } @@ -110,9 +105,9 @@ Bar_number_engraver::create_items () { if (text_p_) return; - - text_p_ = new Text_item; - text_p_->set_elt_property ("breakable", SCM_BOOL_T); // ugh + + SCM b = get_property ("basicBarNumberProperties"); + text_p_ = new Text_item (b); Side_position_interface staffside(text_p_); staffside.set_axis (Y_AXIS); @@ -135,9 +130,6 @@ Bar_number_engraver::create_items () gh_double2scm(paper_l ()->get_var ("interline"))); } - if (gh_procedure_p (visibility_lambda_)) - text_p_->set_elt_property ("visibility-lambda", - visibility_lambda_); announce_element (Score_element_info (text_p_, 0)); } diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index 075af92ed9..739b557944 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -87,7 +87,7 @@ Beam_engraver::do_process_music () } prev_start_req_ = reqs_drul_[START]; - beam_p_ = new Beam; + beam_p_ = new Beam (get_property ("basicBeamProperties")); SCM smp = get_property ("measurePosition"); Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0); diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc index 74fc20e399..c29a970cc5 100644 --- a/lily/break-align-item.cc +++ b/lily/break-align-item.cc @@ -36,7 +36,7 @@ Break_align_item::before_line_breaking () Real interline= paper_l ()->get_var ("interline"); Link_array elems; Link_array all_elems - = Group_interface__extract_elements (this, (Score_element*)0, + = Pointer_group_interface__extract_elements (this, (Score_element*)0, "elements"); for (int i=0; i < all_elems.size(); i++) @@ -157,7 +157,8 @@ Break_align_item::before_line_breaking () } -Break_align_item::Break_align_item () +Break_align_item::Break_align_item (SCM s) + : Item (s) { set_elt_property ("stacking-dir" , gh_int2scm (RIGHT)); diff --git a/lily/breathing-sign-engraver.cc b/lily/breathing-sign-engraver.cc index 2508bb8390..f72e5b2b97 100644 --- a/lily/breathing-sign-engraver.cc +++ b/lily/breathing-sign-engraver.cc @@ -46,9 +46,8 @@ Breathing_sign_engraver::do_process_music() { if(breathing_sign_req_l_) { - breathing_sign_p_ = new Breathing_sign; - breathing_sign_p_->set_elt_property ("break-align-symbol", - ly_symbol2scm ("Breathing_sign")); + SCM b = get_property ("basicBreathingSignProperties"); + breathing_sign_p_ = new Breathing_sign (b); Staff_symbol_referencer_interface st (breathing_sign_p_); st.set_interface (); diff --git a/lily/breathing-sign.cc b/lily/breathing-sign.cc index 64e588f727..d1473eb214 100644 --- a/lily/breathing-sign.cc +++ b/lily/breathing-sign.cc @@ -21,9 +21,9 @@ #include "direction.hh" -Breathing_sign::Breathing_sign () +Breathing_sign::Breathing_sign (SCM s) + : Item (s) { - set_elt_property ("breakable", SCM_BOOL_T); } Molecule diff --git a/lily/chord-name-engraver.cc b/lily/chord-name-engraver.cc index 32419e420c..b074cd8b75 100644 --- a/lily/chord-name-engraver.cc +++ b/lily/chord-name-engraver.cc @@ -73,7 +73,7 @@ Chord_name_engraver::do_process_music () if (gh_boolean_p (chord_inversion)) find_inversion_b = gh_scm2bool (chord_inversion); - chord_name_p_ = new Chord_name; + chord_name_p_ = new Chord_name (SCM_EOL); Chord chord = to_chord (pitch_arr_, tonic_req_, inversion_req_, bass_req_, find_inversion_b); diff --git a/lily/chord-name.cc b/lily/chord-name.cc index 0e8e1d0942..e8500f9c6c 100644 --- a/lily/chord-name.cc +++ b/lily/chord-name.cc @@ -162,3 +162,8 @@ Chord_name::do_brew_molecule () const return ly_text2molecule (text); } + +Chord_name::Chord_name (SCM s) + : Item (s) +{ +} diff --git a/lily/chord-tremolo-engraver.cc b/lily/chord-tremolo-engraver.cc index 291133c50e..4148b2bb62 100644 --- a/lily/chord-tremolo-engraver.cc +++ b/lily/chord-tremolo-engraver.cc @@ -90,7 +90,7 @@ Chord_tremolo_engraver::do_process_music () { if (repeat_ && !beam_p_) { - beam_p_ = new Beam; + beam_p_ = new Beam (SCM_EOL); beam_p_->set_elt_property ("chord-tremolo", SCM_BOOL_T); diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc index 7fff19244c..cfc26a629c 100644 --- a/lily/clef-engraver.cc +++ b/lily/clef-engraver.cc @@ -49,11 +49,17 @@ public: SCM clef_glyph_; // no need for protection. Always referenced somewhere else. Clef_engraver(); + + SCM basic_properties_; + Protected_scm current_settings_; }; Clef_engraver::Clef_engraver() { + current_settings_ = SCM_EOL; + basic_properties_ = SCM_EOL; + clef_glyph_ = SCM_EOL; clef_p_ = 0; clef_req_l_ = 0; @@ -101,6 +107,14 @@ Clef_engraver::set_type (String s) } c0_position_i_ -= (int) octave_dir_ * 7; + + + current_settings_ = gh_cons (gh_cons (ly_symbol2scm ("glyph"), clef_glyph_), basic_properties_); + current_settings_ = + gh_cons (gh_cons (ly_symbol2scm ("c0-position"), + gh_int2scm (c0_position_i_)), + current_settings_); + return true; } @@ -138,6 +152,8 @@ Clef_engraver::acknowledge_element (Score_element_info info) void Clef_engraver::do_creation_processing() { + basic_properties_ = get_property ("basicClefItemProperties"); + SCM def = get_property ("defaultClef"); if (gh_string_p (def)) { @@ -168,9 +184,7 @@ Clef_engraver::create_clef() { if (!clef_p_) { - Clef_item *c= new Clef_item; - c->set_elt_property ("breakable", SCM_BOOL_T); - c->set_elt_property ("break-align-symbol", ly_symbol2scm ("Clef_item")); + Clef_item *c= new Clef_item ( current_settings_); announce_element (Score_element_info (c, clef_req_l_)); Staff_symbol_referencer_interface si(c); @@ -183,16 +197,12 @@ Clef_engraver::create_clef() si.set_position (clef_position_i_); if (octave_dir_) { - Text_item * g = new Text_item; + Text_item * g = new Text_item (get_property ("basicOctavateEightProperties")); Side_position_interface spi (g); spi.set_axis (Y_AXIS); spi.add_support (clef_p_); - g->set_elt_property ("text", ly_str02scm ( "8")); - g->set_elt_property ("style", gh_str02scm ("italic")); g->set_parent (clef_p_, Y_AXIS); g->set_parent (clef_p_, X_AXIS); - - g->set_elt_property ("self-alignment-X", gh_int2scm (0)); g->add_offset_callback (Side_position_interface::aligned_on_self, X_AXIS); g->add_offset_callback (Side_position_interface::centered_on_parent, X_AXIS); g->set_elt_property ("direction", gh_int2scm (octave_dir_)); @@ -217,20 +227,20 @@ Clef_engraver::do_pre_move_processing() { if (clef_p_) { - SCM vis; - if(to_boolean (clef_p_->remove_elt_property("non-default"))) + SCM vis = 0; + if(to_boolean (clef_p_->get_elt_property("non-default"))) { vis = ly_symbol2scm ("all-visible"); + vis = scm_eval (vis); } - else - vis = ly_symbol2scm ("begin-of-line-visible"); - vis = scm_eval (vis); + if (vis) + { + clef_p_->set_elt_property("visibility-lambda", vis); + if (octavate_p_) + octavate_p_->set_elt_property("visibility-lambda", vis); + } - clef_p_->set_elt_property("visibility-lambda", vis); - if (octavate_p_) - octavate_p_->set_elt_property("visibility-lambda", vis); - typeset_element (clef_p_); clef_p_ =0; diff --git a/lily/collision.cc b/lily/collision.cc index e3eb69a403..52498e533a 100644 --- a/lily/collision.cc +++ b/lily/collision.cc @@ -13,7 +13,8 @@ #include "axis-group-interface.hh" -Collision::Collision() +Collision::Collision(SCM s ) + : Item (s) { Axis_group_interface (this).set_interface (); Axis_group_interface (this).set_axes (X_AXIS, Y_AXIS); @@ -73,7 +74,7 @@ Collision::automatic_shift () Drul_array > shifts; SCM tups = SCM_EOL; - SCM s = get_elt_property ("elements"); + SCM s = get_elt_pointer ("elements"); for (; gh_pair_p (s); s = gh_cdr (s)) { SCM car = gh_car (s); @@ -95,7 +96,7 @@ Collision::automatic_shift () for (int i=0; i < clashes.size (); i++) { SCM sh - = clashes[i]->remove_elt_property ("horizontal-shift"); + = clashes[i]->get_elt_property ("horizontal-shift"); if (gh_number_p (sh)) shift.push (gh_scm2int (sh)); @@ -200,10 +201,10 @@ Collision::forced_shift () { SCM tups = SCM_EOL; - SCM s = get_elt_property ("elements"); + SCM s = get_elt_pointer ("elements"); for (; gh_pair_p (s); s = gh_cdr (s)) { - Score_element * se = unsmob_element ( gh_car (s)); + Score_element * se = unsmob_element (gh_car (s)); SCM force = se->remove_elt_property ("force-hshift"); if (gh_number_p (force)) diff --git a/lily/crescendo.cc b/lily/crescendo.cc index 236fbfb53c..fd390e0826 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -15,7 +15,8 @@ #include "paper-column.hh" -Crescendo::Crescendo () +Crescendo::Crescendo (SCM s) + : Spanner (s) { set_elt_property ("dynamic-drul", gh_cons (SCM_BOOL_F, SCM_BOOL_F)); } diff --git a/lily/dot-column-engraver.cc b/lily/dot-column-engraver.cc index 5c2cfd49c4..fdcc919bfd 100644 --- a/lily/dot-column-engraver.cc +++ b/lily/dot-column-engraver.cc @@ -40,7 +40,7 @@ Dot_column_engraver::acknowledge_element (Score_element_info info) if (!dotcol_p_) { - dotcol_p_ = new Dot_column; + dotcol_p_ = new Dot_column( SCM_EOL); Side_position_interface (dotcol_p_).set_axis (X_AXIS); Side_position_interface (dotcol_p_).set_direction (RIGHT); announce_element (Score_element_info (dotcol_p_, 0)); diff --git a/lily/dot-column.cc b/lily/dot-column.cc index 75f8391fe9..75b86cf657 100644 --- a/lily/dot-column.cc +++ b/lily/dot-column.cc @@ -20,7 +20,7 @@ void Dot_column::add_dots (Dots *d) { - Group_interface gi (this, "dots"); + Pointer_group_interface gi (this, "dots"); gi.add_element (d); add_dependency (d); @@ -48,9 +48,10 @@ Dot_column::compare (Dots * const &d1, Dots * const &d2) } -Dot_column::Dot_column () +Dot_column::Dot_column (SCM s) + : Item (s) { - Group_interface gi (this, "dots"); + Pointer_group_interface gi (this, "dots"); gi.set_interface (); directional_element (this).set (RIGHT); @@ -76,7 +77,7 @@ Dot_column::Dot_column () void Dot_column::after_line_breaking () { - Link_array dots = Group_interface__extract_elements (this, (Dots*)0 , "dots"); + Link_array dots = Pointer_group_interface__extract_elements (this, (Dots*)0 , "dots"); dots.sort (Dot_column::compare); if (dots.size () < 2) diff --git a/lily/dots.cc b/lily/dots.cc index 2487268c2b..a658d838e7 100644 --- a/lily/dots.cc +++ b/lily/dots.cc @@ -13,7 +13,8 @@ #include "staff-symbol-referencer.hh" #include "directional-element-interface.hh" -Dots::Dots () +Dots::Dots (SCM s) + : Item (s) { set_elt_property ("dot-count", gh_int2scm (0)); } diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index 9a8675caee..15592c6c78 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -39,13 +39,14 @@ class Dynamic_line_spanner : public Spanner { public: - Dynamic_line_spanner (); + Dynamic_line_spanner (SCM); VIRTUAL_COPY_CONS(Score_element); void add_column (Note_column*); void add_element (Score_element*); }; -Dynamic_line_spanner::Dynamic_line_spanner () +Dynamic_line_spanner::Dynamic_line_spanner (SCM s) + : Spanner (s) { set_elt_property ("transparent", SCM_BOOL_T); Side_position_interface (this).set_axis (Y_AXIS); @@ -114,7 +115,7 @@ ADD_THIS_TRANSLATOR (Dynamic_engraver); void Dynamic_engraver::announce_element (Score_element_info i) { - group (i.elem_l_, "interfaces").add_thing (ly_symbol2scm ("dynamic")); + Group_interface (i.elem_l_, "interfaces").add_thing (ly_symbol2scm ("dynamic")); Engraver::announce_element (i); } @@ -172,7 +173,7 @@ Dynamic_engraver::do_process_music () && !line_spanner_ && pending_element_arr_.size ()) { - line_spanner_ = new Dynamic_line_spanner; + line_spanner_ = new Dynamic_line_spanner (get_property ("basicDynamicLineSpannerProperties")); for (int i = 0; i < pending_column_arr_.size (); i++) line_spanner_->add_column (pending_column_arr_[i]); pending_column_arr_.clear (); @@ -262,16 +263,12 @@ Dynamic_engraver::do_process_music () { String loud = text_req_l_->text_str_; - text_p_ = new Text_item; - text_p_->set_elt_property ("text", - ly_str02scm (loud.ch_C ())); - text_p_->set_elt_property ("style", gh_str02scm ("dynamic")); - text_p_->set_elt_property ("script-priority", - gh_int2scm (100)); + text_p_ = new Text_item (get_property ("basicDynamicTextProperties")); + text_p_->set_elt_property ("text", ly_str02scm (loud.ch_C ())); if (Direction d=text_req_l_->get_direction ()) directional_element (text_p_).set (d); pending_element_arr_.push (text_p_); - text_p_->set_elt_property ("self-alignment-Y", gh_int2scm (0)); + text_p_->add_offset_callback (Side_position_interface::aligned_on_self, Y_AXIS); announce_element (Score_element_info (text_p_, text_req_l_)); @@ -307,7 +304,7 @@ Dynamic_engraver::do_process_music () else { span_start_req_l_ = span_req_l_drul_[START]; - cresc_p_ = new Crescendo; + cresc_p_ = new Crescendo (SCM_EOL); cresc_p_->set_elt_property ("grow-direction", gh_int2scm ((span_req_l_drul_[START]->span_type_str_ == "crescendo") diff --git a/lily/extender-engraver.cc b/lily/extender-engraver.cc index aba5025d69..9e869dc9c2 100644 --- a/lily/extender-engraver.cc +++ b/lily/extender-engraver.cc @@ -75,7 +75,7 @@ Extender_engraver::do_process_music () return; } - extender_spanner_p_ = new Extender_spanner; + extender_spanner_p_ = new Extender_spanner (SCM_EOL); extender_spanner_p_->set_textitem (LEFT, last_lyric_l_); announce_element (Score_element_info (extender_spanner_p_, req_l_)); } diff --git a/lily/extender-spanner.cc b/lily/extender-spanner.cc index 4c1dedbcd6..8a987bad27 100644 --- a/lily/extender-spanner.cc +++ b/lily/extender-spanner.cc @@ -20,8 +20,9 @@ #include "paper-def.hh" #include "extender-spanner.hh" -Extender_spanner::Extender_spanner () - : Spanner () +Extender_spanner::Extender_spanner (SCM s) + : Spanner (s) + { dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0; set_extent_callback (Score_element::point_dimension_callback, Y_AXIS); diff --git a/lily/grace-align-item.cc b/lily/grace-align-item.cc index 73ef013c07..654f44139e 100644 --- a/lily/grace-align-item.cc +++ b/lily/grace-align-item.cc @@ -13,7 +13,8 @@ #include "paper-column.hh" #include "paper-def.hh" -Grace_align_item::Grace_align_item () +Grace_align_item::Grace_align_item (SCM s) + : Item (s) { set_elt_property ("stacking-dir", gh_int2scm (RIGHT)); Align_interface (this).set_interface(); diff --git a/lily/hara-kiri-engraver.cc b/lily/hara-kiri-engraver.cc index 1d2e281c21..29211b6234 100644 --- a/lily/hara-kiri-engraver.cc +++ b/lily/hara-kiri-engraver.cc @@ -13,7 +13,7 @@ Spanner* Hara_kiri_engraver::get_spanner_p () const { - return new Hara_kiri_group_spanner; + return new Hara_kiri_group_spanner (SCM_EOL); } void diff --git a/lily/hara-kiri-vertical-group-spanner.cc b/lily/hara-kiri-vertical-group-spanner.cc index 12d5093c07..d028ed5ef9 100644 --- a/lily/hara-kiri-vertical-group-spanner.cc +++ b/lily/hara-kiri-vertical-group-spanner.cc @@ -13,24 +13,23 @@ #include "debug.hh" #include "item.hh" -Hara_kiri_group_spanner::Hara_kiri_group_spanner() +Hara_kiri_group_spanner::Hara_kiri_group_spanner(SCM s) + : Spanner (s) { - set_elt_property ("items-worth-living", SCM_EOL); + set_elt_pointer ("items-worth-living", SCM_EOL); } void Hara_kiri_group_spanner::add_interesting_item (Item* n) { add_dependency (n); - set_elt_property ("items-worth-living", - gh_cons (n->self_scm_, - get_elt_property ("items-worth-living"))); + Pointer_group_interface (this, "items-worth-living").add_element (n); } void Hara_kiri_group_spanner::after_line_breaking () { - SCM worth = get_elt_property ("items-worth-living"); + SCM worth = get_elt_pointer ("items-worth-living"); if (gh_pair_p (worth)) return; diff --git a/lily/hyphen-engraver.cc b/lily/hyphen-engraver.cc index 72eb2268fe..071526f89a 100644 --- a/lily/hyphen-engraver.cc +++ b/lily/hyphen-engraver.cc @@ -73,7 +73,7 @@ Hyphen_engraver::do_process_music () return; } - hyphen_spanner_p_ = new Hyphen_spanner; + hyphen_spanner_p_ = new Hyphen_spanner (SCM_EOL); hyphen_spanner_p_->set_textitem (LEFT, last_lyric_l_); announce_element (Score_element_info (hyphen_spanner_p_, req_l_)); } diff --git a/lily/hyphen-spanner.cc b/lily/hyphen-spanner.cc index acc40be05a..d0b58fc3bd 100644 --- a/lily/hyphen-spanner.cc +++ b/lily/hyphen-spanner.cc @@ -22,8 +22,8 @@ #include "hyphen-spanner.hh" #include "dimension-cache.hh" -Hyphen_spanner::Hyphen_spanner () - : Spanner () +Hyphen_spanner::Hyphen_spanner (SCM s) + : Spanner (s) { dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0; diff --git a/lily/include/bar.hh b/lily/include/bar.hh index aa429c89bb..f770c3aac2 100644 --- a/lily/include/bar.hh +++ b/lily/include/bar.hh @@ -14,7 +14,7 @@ class Bar:public Item { public: VIRTUAL_COPY_CONS(Score_element); - Bar(); + Bar(SCM); Molecule compound_barline (String, Real height) const; Molecule simple_barline (Real wid, Real height) const; diff --git a/lily/include/beam.hh b/lily/include/beam.hh index 768d07aaa7..27a19a1769 100644 --- a/lily/include/beam.hh +++ b/lily/include/beam.hh @@ -34,7 +34,7 @@ public: Stem* first_visible_stem () const; Stem* last_visible_stem () const; - Beam (); + Beam (SCM); void add_stem (Stem*); void set_grouping (Rhythmic_grouping def, Rhythmic_grouping current); void set_beaming (Beaming_info_list *); diff --git a/lily/include/break-align-item.hh b/lily/include/break-align-item.hh index 49057bde8d..6ba3cc1b7a 100644 --- a/lily/include/break-align-item.hh +++ b/lily/include/break-align-item.hh @@ -29,7 +29,7 @@ class Break_align_item : public Item protected: virtual void before_line_breaking (); public: - Break_align_item (); + Break_align_item (SCM s); VIRTUAL_COPY_CONS(Score_element); }; #endif // BREAK_ALIGN_ITEM_HH diff --git a/lily/include/breathing-sign.hh b/lily/include/breathing-sign.hh index e0cda68c19..fb212868b5 100644 --- a/lily/include/breathing-sign.hh +++ b/lily/include/breathing-sign.hh @@ -21,7 +21,7 @@ class Breathing_sign : public Item { public: VIRTUAL_COPY_CONS(Score_element); - Breathing_sign (); + Breathing_sign (SCM s); protected: virtual void after_line_breaking (); virtual Molecule do_brew_molecule () const; diff --git a/lily/include/chord-name.hh b/lily/include/chord-name.hh index 3bdf747a0b..2f77bb4b1d 100644 --- a/lily/include/chord-name.hh +++ b/lily/include/chord-name.hh @@ -25,9 +25,10 @@ public: VIRTUAL_COPY_CONS (Score_element); Molecule ly_word2molecule (SCM scm) const; Molecule ly_text2molecule (SCM scm) const; - + Chord_name(SCM s); protected: virtual Molecule do_brew_molecule () const; + }; #endif // CHORD_NAME_HH diff --git a/lily/include/clef-item.hh b/lily/include/clef-item.hh index 111e416393..75aad9b0d8 100644 --- a/lily/include/clef-item.hh +++ b/lily/include/clef-item.hh @@ -29,6 +29,7 @@ protected: virtual void before_line_breaking (); public: VIRTUAL_COPY_CONS(Score_element); + Clef_item (SCM); }; #endif // CLEFITEM_HH diff --git a/lily/include/collision.hh b/lily/include/collision.hh index 4cb7b615ec..4cb1993856 100644 --- a/lily/include/collision.hh +++ b/lily/include/collision.hh @@ -45,6 +45,6 @@ protected: public: void add_column (Note_column*ncol_l); - Collision(); + Collision(SCM); }; #endif // COLLISION_HH diff --git a/lily/include/crescendo.hh b/lily/include/crescendo.hh index 115b98b9fd..b5a46c8433 100644 --- a/lily/include/crescendo.hh +++ b/lily/include/crescendo.hh @@ -18,7 +18,7 @@ */ class Crescendo : public Spanner { public: - Crescendo(); + Crescendo(SCM); protected: VIRTUAL_COPY_CONS(Score_element); virtual Molecule do_brew_molecule() const; diff --git a/lily/include/dot-column.hh b/lily/include/dot-column.hh index 4c3a211557..9fd7150b82 100644 --- a/lily/include/dot-column.hh +++ b/lily/include/dot-column.hh @@ -23,7 +23,7 @@ class Dot_column : public Item public: VIRTUAL_COPY_CONS (Score_element); void add_head (Rhythmic_head*); - Dot_column (); + Dot_column (SCM); protected: virtual void after_line_breaking (); diff --git a/lily/include/dots.hh b/lily/include/dots.hh index 2446e1f906..e1bf806390 100644 --- a/lily/include/dots.hh +++ b/lily/include/dots.hh @@ -30,7 +30,7 @@ protected: virtual void after_line_breaking (); public: - Dots (); + Dots (SCM); }; #endif // DOTS_HH diff --git a/lily/include/extender-spanner.hh b/lily/include/extender-spanner.hh index 261e758f4d..862318e7ea 100644 --- a/lily/include/extender-spanner.hh +++ b/lily/include/extender-spanner.hh @@ -30,7 +30,7 @@ class Extender_spanner : public Spanner { public: - Extender_spanner (); + Extender_spanner (SCM); void set_textitem (Direction, Item*); protected: diff --git a/lily/include/grace-align-item.hh b/lily/include/grace-align-item.hh index ed16719bca..b4f9e94e99 100644 --- a/lily/include/grace-align-item.hh +++ b/lily/include/grace-align-item.hh @@ -17,7 +17,7 @@ class Grace_align_item : public Item { public: VIRTUAL_COPY_CONS (Score_element); - Grace_align_item (); + Grace_align_item (SCM); protected: virtual void do_add_processing (); virtual void before_line_breaking (); diff --git a/lily/include/hara-kiri-vertical-group-spanner.hh b/lily/include/hara-kiri-vertical-group-spanner.hh index 389223cf34..1adc9480bf 100644 --- a/lily/include/hara-kiri-vertical-group-spanner.hh +++ b/lily/include/hara-kiri-vertical-group-spanner.hh @@ -27,7 +27,7 @@ class Hara_kiri_group_spanner : public Spanner { public: - Hara_kiri_group_spanner (); + Hara_kiri_group_spanner (SCM); virtual void after_line_breaking (); void add_interesting_item (Item* n); protected: diff --git a/lily/include/hyphen-spanner.hh b/lily/include/hyphen-spanner.hh index ec60dee675..24c1ab7299 100644 --- a/lily/include/hyphen-spanner.hh +++ b/lily/include/hyphen-spanner.hh @@ -21,7 +21,7 @@ class Hyphen_spanner : public Spanner { public: -Hyphen_spanner (); + Hyphen_spanner (SCM); void set_textitem (Direction, Item*); protected: diff --git a/lily/include/item.hh b/lily/include/item.hh index 7d327628ed..c036dd2e52 100644 --- a/lily/include/item.hh +++ b/lily/include/item.hh @@ -40,7 +40,7 @@ class Item : public Score_element public: VIRTUAL_COPY_CONS(Score_element); - Item(); + Item (SCM); Item (Item const &); bool breakable_b () const; diff --git a/lily/include/key-item.hh b/lily/include/key-item.hh index c003a3094d..b8430c4272 100644 --- a/lily/include/key-item.hh +++ b/lily/include/key-item.hh @@ -28,7 +28,7 @@ class Key_item :public Item public: VIRTUAL_COPY_CONS(Score_element); - Key_item (); + Key_item (SCM); void add (int pitch, int acc); void add_old (int pitch, int acc); diff --git a/lily/include/local-key-item.hh b/lily/include/local-key-item.hh index 39ad2ccac2..db072f0dfe 100644 --- a/lily/include/local-key-item.hh +++ b/lily/include/local-key-item.hh @@ -40,11 +40,13 @@ class Local_key_item : public Item Molecule accidental (int,bool,bool) const; public: - + Local_key_item (SCM ); void add_pitch (Musical_pitch, bool cautionary, bool natural); protected: virtual void before_line_breaking (); virtual Molecule do_brew_molecule() const; + + }; #endif // LOCALKEYITEM_HH diff --git a/lily/include/multi-measure-rest.hh b/lily/include/multi-measure-rest.hh index 8dfbba2f5f..0258c9a7ee 100644 --- a/lily/include/multi-measure-rest.hh +++ b/lily/include/multi-measure-rest.hh @@ -16,7 +16,7 @@ class Multi_measure_rest : public Spanner { public: - Multi_measure_rest (); + Multi_measure_rest (SCM); void add_column (Item*); Molecule compound_rest (int)const; diff --git a/lily/include/note-column.hh b/lily/include/note-column.hh index 9ad0295ad7..88c2c36016 100644 --- a/lily/include/note-column.hh +++ b/lily/include/note-column.hh @@ -35,7 +35,7 @@ public: void translate_rests(int dy); Note_head * first_head ()const; Interval rest_dim ()const ; - Note_column (); + Note_column (SCM); void set_stem (Stem*); void set_dotcol (Dot_column*); void add_head (Rhythmic_head*); diff --git a/lily/include/note-head.hh b/lily/include/note-head.hh index 3354ecfb24..85442c0b00 100644 --- a/lily/include/note-head.hh +++ b/lily/include/note-head.hh @@ -25,8 +25,8 @@ public: static int compare (Note_head * const &a, Note_head *const &b) ; Molecule ledger_line (Interval) const; + Note_head (SCM); protected: - virtual void before_line_breaking (); virtual Molecule do_brew_molecule() const; }; diff --git a/lily/include/rest-collision.hh b/lily/include/rest-collision.hh index eac7a48a0f..d6f26fa718 100644 --- a/lily/include/rest-collision.hh +++ b/lily/include/rest-collision.hh @@ -18,7 +18,7 @@ public: void add_column (Note_column*); Interval rest_dim () const; - Rest_collision(); + Rest_collision(SCM); protected: virtual void before_line_breaking (); }; diff --git a/lily/include/rest.hh b/lily/include/rest.hh index dcd6b81628..cb62ce3883 100644 --- a/lily/include/rest.hh +++ b/lily/include/rest.hh @@ -24,5 +24,7 @@ class Rest : public Rhythmic_head protected: virtual void after_line_breaking (); virtual Molecule do_brew_molecule () const; +public: + Rest (SCM s); }; #endif // REST_HH diff --git a/lily/include/script-column.hh b/lily/include/script-column.hh index 0ba7cb1281..d79e25f3f8 100644 --- a/lily/include/script-column.hh +++ b/lily/include/script-column.hh @@ -15,7 +15,7 @@ class Script_column : public Item { public: - Script_column(); + Script_column(SCM); void add_staff_sided (Item*); protected: virtual void before_line_breaking (); diff --git a/lily/include/script.hh b/lily/include/script.hh index 05149c7b93..4d8441584d 100644 --- a/lily/include/script.hh +++ b/lily/include/script.hh @@ -22,6 +22,7 @@ class Script : public Item { Molecule get_molecule (Direction d) const; public: + Script (SCM); protected: virtual void before_line_breaking (); diff --git a/lily/include/separating-group-spanner.hh b/lily/include/separating-group-spanner.hh index 6deb0fba8e..bfbe265062 100644 --- a/lily/include/separating-group-spanner.hh +++ b/lily/include/separating-group-spanner.hh @@ -16,7 +16,7 @@ class Separating_group_spanner : public Spanner { public: void add_spacing_unit (Single_malt_grouping_item*); - Separating_group_spanner(); + Separating_group_spanner(SCM); protected: VIRTUAL_COPY_CONS(Score_element); virtual Array get_rods () const; diff --git a/lily/include/single-malt-grouping-item.hh b/lily/include/single-malt-grouping-item.hh index 17280a2b82..082a37b517 100644 --- a/lily/include/single-malt-grouping-item.hh +++ b/lily/include/single-malt-grouping-item.hh @@ -31,7 +31,7 @@ class Single_malt_grouping_item : public Item { VIRTUAL_COPY_CONS(Score_element); public: - Single_malt_grouping_item (); + Single_malt_grouping_item (SCM); Interval my_width () const; void add_item (Item*); }; diff --git a/lily/include/slur.hh b/lily/include/slur.hh index cb202f1e93..3ab1dff6bd 100644 --- a/lily/include/slur.hh +++ b/lily/include/slur.hh @@ -16,7 +16,7 @@ class Slur : public Spanner { public: - Slur (); + Slur (SCM); VIRTUAL_COPY_CONS(Score_element); void add_column (Note_column*); diff --git a/lily/include/spacing-spanner.hh b/lily/include/spacing-spanner.hh index 46a7d6f025..c6e4bdd7cd 100644 --- a/lily/include/spacing-spanner.hh +++ b/lily/include/spacing-spanner.hh @@ -15,7 +15,7 @@ class Spacing_spanner : public Spanner { public: - Spacing_spanner (); + Spacing_spanner (SCM); VIRTUAL_COPY_CONS(Score_element); Array do_measure (Link_array) const; diff --git a/lily/include/span-bar.hh b/lily/include/span-bar.hh index ff5c6b0700..17886676cd 100644 --- a/lily/include/span-bar.hh +++ b/lily/include/span-bar.hh @@ -25,7 +25,7 @@ class Span_bar : public Bar { Interval get_spanned_interval () const; public: - Span_bar(); + Span_bar (SCM); VIRTUAL_COPY_CONS(Score_element); void add_bar (Score_element*); diff --git a/lily/include/staff-bar.hh b/lily/include/staff-bar.hh index c8f5049293..0932ef78a1 100644 --- a/lily/include/staff-bar.hh +++ b/lily/include/staff-bar.hh @@ -22,6 +22,7 @@ class Staff_bar : public Bar public: VIRTUAL_COPY_CONS(Score_element); virtual Real get_bar_size () const; + Staff_bar (SCM); }; #endif /* STAFF_BAR_HH */ diff --git a/lily/include/staff-symbol.hh b/lily/include/staff-symbol.hh index 88821052fe..676886c7ec 100644 --- a/lily/include/staff-symbol.hh +++ b/lily/include/staff-symbol.hh @@ -21,8 +21,11 @@ public: Real staff_space () const; int steps_i() const; int line_count () const; + Staff_symbol (SCM s); + protected: VIRTUAL_COPY_CONS(Score_element); virtual Molecule do_brew_molecule() const; + }; #endif // STAFFSYM_HH diff --git a/lily/include/stem-tremolo.hh b/lily/include/stem-tremolo.hh index 59ac84f3e1..11c1c93af8 100644 --- a/lily/include/stem-tremolo.hh +++ b/lily/include/stem-tremolo.hh @@ -20,7 +20,7 @@ protected: static Interval dim_callback (Score_element*, Axis); public: - Stem_tremolo (); + Stem_tremolo (SCM); void set_stem (Stem *); }; diff --git a/lily/include/stem.hh b/lily/include/stem.hh index d843a9846c..8ae9771fca 100644 --- a/lily/include/stem.hh +++ b/lily/include/stem.hh @@ -57,7 +57,7 @@ public: Drul_array extremal_heads () const; Score_element * support_head () const; - Stem (); + Stem (SCM); /// ensure that this Stem also encompasses the Notehead #n# void add_head (Rhythmic_head*n); diff --git a/lily/include/sustain-pedal.hh b/lily/include/sustain-pedal.hh index b2ae20e984..9f17f20361 100644 --- a/lily/include/sustain-pedal.hh +++ b/lily/include/sustain-pedal.hh @@ -32,7 +32,7 @@ class Sustain_pedal : public Item { public: VIRTUAL_COPY_CONS (Score_element); - + Sustain_pedal (SCM); protected: virtual Molecule do_brew_molecule () const; virtual void after_line_breaking (); diff --git a/lily/include/system-start-delimiter.hh b/lily/include/system-start-delimiter.hh index d594c7ff87..d84acd97d0 100644 --- a/lily/include/system-start-delimiter.hh +++ b/lily/include/system-start-delimiter.hh @@ -18,7 +18,7 @@ class System_start_delimiter : public Spanner { public: - System_start_delimiter (); + System_start_delimiter (SCM); VIRTUAL_COPY_CONS (Score_element); protected: virtual void after_line_breaking(); diff --git a/lily/include/text-item.hh b/lily/include/text-item.hh index f6aaa02928..818a5a3139 100644 --- a/lily/include/text-item.hh +++ b/lily/include/text-item.hh @@ -19,6 +19,7 @@ class Text_item : public Item { public: VIRTUAL_COPY_CONS (Score_element); + Text_item (SCM s); protected: virtual Molecule do_brew_molecule () const; }; diff --git a/lily/include/tie-column.hh b/lily/include/tie-column.hh index cdbe522201..6dfe54d82b 100644 --- a/lily/include/tie-column.hh +++ b/lily/include/tie-column.hh @@ -18,11 +18,10 @@ class Tie_column : public Spanner public: VIRTUAL_COPY_CONS (Score_element); void add_tie (Tie*); - Tie_column (); + Tie_column (SCM s); protected: virtual void after_line_breaking (); void set_directions (); - }; #endif /* TIE_COLUMN_HH */ diff --git a/lily/include/tie.hh b/lily/include/tie.hh index 4240193247..7de2697cfa 100644 --- a/lily/include/tie.hh +++ b/lily/include/tie.hh @@ -19,7 +19,7 @@ class Tie : public Spanner { public: - Tie (); + Tie (SCM); void set_head (Direction, Item*head_l); VIRTUAL_COPY_CONS(Score_element); diff --git a/lily/include/time-signature.hh b/lily/include/time-signature.hh index 3bdc1208e1..6744bff15e 100644 --- a/lily/include/time-signature.hh +++ b/lily/include/time-signature.hh @@ -26,7 +26,7 @@ class Time_signature: public Item protected: virtual Molecule do_brew_molecule() const; public: - Time_signature () ; + Time_signature (SCM); /* TODO: make this SCM! diff --git a/lily/include/tuplet-spanner.hh b/lily/include/tuplet-spanner.hh index b851d1f626..51789988b6 100644 --- a/lily/include/tuplet-spanner.hh +++ b/lily/include/tuplet-spanner.hh @@ -20,7 +20,7 @@ class Tuplet_spanner : public Spanner { public: - Tuplet_spanner (); + Tuplet_spanner (SCM); void add_column (Note_column*); void add_beam (Beam*); diff --git a/lily/include/volta-spanner.hh b/lily/include/volta-spanner.hh index e76d6e0537..a1f9b0ebfe 100644 --- a/lily/include/volta-spanner.hh +++ b/lily/include/volta-spanner.hh @@ -16,7 +16,7 @@ class Volta_spanner : public Spanner { public: - Volta_spanner (); + Volta_spanner (SCM); void add_column (Note_column*); void add_bar (Bar*); diff --git a/lily/instrument-name-engraver.cc b/lily/instrument-name-engraver.cc index 584d0d9cd7..1a9bd7da1f 100644 --- a/lily/instrument-name-engraver.cc +++ b/lily/instrument-name-engraver.cc @@ -55,17 +55,12 @@ Instrument_name_engraver::create_text (SCM txt) { if(!text_) { - text_ = new Text_item; + text_ = new Text_item (get_property ("basicInstrumentNameProperties")); text_->set_elt_property ("text", txt); - text_->set_elt_property ("breakable", SCM_BOOL_T); /* TODO: use more lispish names for break-align-symbols */ - text_->set_elt_property ("break-align-symbol", ly_symbol2scm ("Instrument_name")); - text_->set_elt_property ("visibility-lambda", - scm_eval (ly_symbol2scm ("begin-of-line-visible"))); - if (delim_) text_->set_parent (delim_, Y_AXIS); diff --git a/lily/key-item.cc b/lily/key-item.cc index 143d7da103..c9b74955b7 100644 --- a/lily/key-item.cc +++ b/lily/key-item.cc @@ -18,13 +18,10 @@ const int FLAT_TOP_PITCH=2; /* fes,ges,as and bes typeset in lower octave */ const int SHARP_TOP_PITCH=4; /* ais and bis typeset in lower octave */ -Key_item::Key_item () +Key_item::Key_item (SCM s) + : Item (s) { - set_elt_property ("breakable", SCM_BOOL_T); set_elt_property ("c0-position", gh_int2scm (0)); - - set_elt_property ("old-accidentals", SCM_EOL); - set_elt_property ("new-accidentals", SCM_EOL); } void diff --git a/lily/line-group-group-engraver.cc b/lily/line-group-group-engraver.cc index e08fae2289..aa4b6e8c20 100644 --- a/lily/line-group-group-engraver.cc +++ b/lily/line-group-group-engraver.cc @@ -52,7 +52,7 @@ Line_group_engraver_group::do_creation_processing() void Line_group_engraver_group::create_line_spanner () { - staffline_p_ = new Spanner ; + staffline_p_ = new Spanner (SCM_EOL); Axis_group_interface (staffline_p_).set_interface (); Axis_group_interface (staffline_p_).set_axes (Y_AXIS,Y_AXIS); } diff --git a/lily/line-number-engraver.cc b/lily/line-number-engraver.cc index fc9f639367..afde3217cd 100644 --- a/lily/line-number-engraver.cc +++ b/lily/line-number-engraver.cc @@ -36,7 +36,7 @@ Line_number_engraver::process_acknowledged () { if (!text_item_p_ && interesting_.size ()) { - text_item_p_ = new Text_item; + text_item_p_ = new Text_item (SCM_EOL); Side_position_interface si (text_item_p_); si.set_axis (Y_AXIS); text_item_p_->set_parent (interesting_[0].elem_l_, Y_AXIS); diff --git a/lily/line-of-score.cc b/lily/line-of-score.cc index abc8b0a455..2ca094bab9 100644 --- a/lily/line-of-score.cc +++ b/lily/line-of-score.cc @@ -21,9 +21,10 @@ #include "all-font-metrics.hh" Line_of_score::Line_of_score() + : Spanner (SCM_EOL) { - set_elt_property ("columns", SCM_EOL); - set_elt_property ("all-elements", SCM_EOL); + set_elt_pointer ("columns", SCM_EOL); + set_elt_pointer ("all-elements", SCM_EOL); Axis_group_interface (this).set_interface (); Axis_group_interface (this).set_axes (Y_AXIS,X_AXIS); @@ -32,7 +33,7 @@ Line_of_score::Line_of_score() int Line_of_score::element_count () const { - return scm_ilength ( get_elt_property ("all-elements")); + return scm_ilength ( get_elt_pointer ("all-elements")); } @@ -43,14 +44,14 @@ void Line_of_score::typeset_element (Score_element * elem_p) { elem_p->pscore_l_ = pscore_l_; - Group_interface (this, "all-elements").add_element (elem_p); + Pointer_group_interface (this, "all-elements").add_element (elem_p); scm_unprotect_object (elem_p->self_scm_); } void Line_of_score::output_lines () { - for (SCM s = get_elt_property ("all-elements"); + for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { unsmob_element (gh_car (s))->do_break_processing (); @@ -62,7 +63,7 @@ Line_of_score::output_lines () for (int i=0; i < broken_into_l_arr_.size (); i++) { Score_element *se = broken_into_l_arr_[i]; - SCM all = se->get_elt_property ("all-elements"); + SCM all = se->get_elt_pointer ("all-elements"); for (SCM s = all; gh_pair_p (s); s = gh_cdr (s)) { unsmob_element (gh_car (s))->fixup_refpoint (); @@ -74,13 +75,13 @@ Line_of_score::output_lines () /* needed for doing items. */ - for (SCM s = get_elt_property ("all-elements"); + for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { unsmob_element (gh_car (s))->fixup_refpoint (); } - for (SCM s = get_elt_property ("all-elements"); + for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { unsmob_element (gh_car (s))->handle_broken_dependencies (); @@ -167,12 +168,12 @@ Line_of_score::output_scheme (SCM s) void Line_of_score::add_column (Paper_column*p) { - SCM cs = get_elt_property ("columns"); + SCM cs = get_elt_pointer ("columns"); Score_element * prev = gh_pair_p (cs) ? unsmob_element (gh_car (cs)) : 0; int rank = prev ? dynamic_cast (prev)->rank_i () + 1 : 0; p->set_rank (rank); - set_elt_property ("columns", gh_cons (p->self_scm_, cs)); + set_elt_pointer ("columns", gh_cons (p->self_scm_, cs)); Axis_group_interface (this).add_element (p); typeset_element (p); @@ -182,7 +183,7 @@ Link_array Line_of_score::column_l_arr ()const { Link_array acs - = Group_interface__extract_elements (this, (Paper_column*) 0, "columns"); + = Pointer_group_interface__extract_elements (this, (Paper_column*) 0, "columns"); bool bfound = false; for (int i= acs.size (); i -- ; ) { @@ -194,9 +195,7 @@ Line_of_score::column_l_arr ()const seem empty. We need to retain breakable columns, in case someone forced a breakpoint. */ - if (!bfound - || (acs[i]->get_elt_property ("elements") == SCM_EOL - && !brb)) + if (!bfound || !acs[i]->used_b ()) acs.del (i); } return acs; @@ -223,32 +222,32 @@ fixup_refpoints (SCM s) void Line_of_score::pre_processing () { - for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) unsmob_element (gh_car (s))->discretionary_processing (); progress_indication ( _f("Element count %d ", element_count ())); - for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) unsmob_element (gh_car (s))->handle_prebroken_dependencies (); - fixup_refpoints (get_elt_property ("all-elements")); + fixup_refpoints (get_elt_pointer ("all-elements")); - for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { Score_element* sc = unsmob_element (gh_car (s)); sc->calculate_dependencies (PRECALCED, PRECALCING, &Score_element::before_line_breaking); } progress_indication ("\n" + _ ("Calculating column positions...") + " " ); - for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) unsmob_element (gh_car (s))->do_space_processing (); } void Line_of_score::post_processing () { - for (SCM s = get_elt_property ("all-elements"); + for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { Score_element* sc = unsmob_element (gh_car (s)); @@ -272,7 +271,7 @@ Line_of_score::post_processing () generate all molecules to trigger all font loads. (ugh. This is not very memory efficient.) */ - for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) unsmob_element (gh_car (s))->get_molecule (); /* @@ -295,7 +294,7 @@ Line_of_score::post_processing () /* all elements. */ - for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_elt_pointer ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { Score_element * sc = unsmob_element (gh_car (s)); Molecule m = sc->get_molecule (); @@ -323,7 +322,7 @@ Line_of_score::broken_col_range (Item const*l, Item const*r) const l = l->column_l (); r = r->column_l (); - SCM s = get_elt_property ("columns"); + SCM s = get_elt_pointer ("columns"); while (gh_car (s) != r->self_scm_) s = gh_cdr (s); diff --git a/lily/local-key-engraver.cc b/lily/local-key-engraver.cc index f917dc7e8a..8a5678fe1b 100644 --- a/lily/local-key-engraver.cc +++ b/lily/local-key-engraver.cc @@ -124,7 +124,7 @@ Local_key_engraver::process_acknowledged () { if (!key_item_p_) { - key_item_p_ = new Local_key_item; + key_item_p_ = new Local_key_item (SCM_EOL); Side_position_interface (key_item_p_).set_axis (X_AXIS); Side_position_interface (key_item_p_).set_direction (LEFT); staff_symbol_referencer(key_item_p_).set_interface (); diff --git a/lily/local-key-item.cc b/lily/local-key-item.cc index 9166bb2fd0..e730ad4ea0 100644 --- a/lily/local-key-item.cc +++ b/lily/local-key-item.cc @@ -136,3 +136,8 @@ Local_key_item::do_brew_molecule() const return mol; } +Local_key_item::Local_key_item (SCM s) + : Item (s) +{ + +} diff --git a/lily/lyric-engraver.cc b/lily/lyric-engraver.cc index 61e12a1c51..fce6048163 100644 --- a/lily/lyric-engraver.cc +++ b/lily/lyric-engraver.cc @@ -40,11 +40,11 @@ Lyric_engraver::do_process_music() { if (req_l_) { - text_p_= new Text_item; + text_p_= new Text_item (get_property ("basicLyricTextProperties")); text_p_->set_elt_property ("text", ly_str02scm ((req_l_->text_str_ + " ").ch_C ())); - text_p_->set_elt_property ("non-rhythmic", SCM_BOOL_T); + announce_element (Score_element_info (text_p_, req_l_)); } } diff --git a/lily/mark-engraver.cc b/lily/mark-engraver.cc index 0aa80fc411..88c1550606 100644 --- a/lily/mark-engraver.cc +++ b/lily/mark-engraver.cc @@ -34,7 +34,6 @@ public: Mark_engraver (); protected: Text_item* text_p_; - Protected_scm visibility_lambda_; Protected_scm staffs_; protected: @@ -63,15 +62,9 @@ Mark_engraver::Mark_engraver () void Mark_engraver::do_creation_processing () { - String t = "markVisibilityFunction"; - SCM proc = get_property (t); - - if (gh_procedure_p (proc)) - visibility_lambda_ = proc; } - void Mark_engraver::acknowledge_element (Score_element_info inf) { @@ -95,7 +88,7 @@ Mark_engraver::do_pre_move_processing () { if (text_p_) { - text_p_->set_elt_property ("side-support" , staffs_); + text_p_->set_elt_pointer("side-support-elements" , staffs_); typeset_element (text_p_); text_p_ =0; } @@ -107,13 +100,17 @@ Mark_engraver::create_items (Request *rq) { if (text_p_) return; - - text_p_ = new Text_item; - text_p_->set_elt_property ("breakable", SCM_BOOL_T); // ugh + + SCM s = get_property ("basicMarkProperties"); + text_p_ = new Text_item (s); + Group_interface (text_p_, "interfaces").add_thing (ly_symbol2scm ("Mark")); Side_position_interface staffside(text_p_); staffside.set_axis (Y_AXIS); + /* + -> Generic props. + */ SCM prop = get_property ("markDirection"); if (!isdir_b (prop)) { @@ -133,9 +130,6 @@ Mark_engraver::create_items (Request *rq) gh_double2scm(paper_l ()->get_var ("interline"))); } - if (gh_procedure_p (visibility_lambda_)) - text_p_->set_elt_property ("visibility-lambda", - visibility_lambda_); announce_element (Score_element_info (text_p_, rq)); } diff --git a/lily/multi-measure-rest-engraver.cc b/lily/multi-measure-rest-engraver.cc index 6a49f50a54..5941e43ec8 100644 --- a/lily/multi-measure-rest-engraver.cc +++ b/lily/multi-measure-rest-engraver.cc @@ -109,7 +109,7 @@ Multi_measure_rest_engraver::do_process_music () if (busy_span_req_l_ && !mmrest_p_) { - mmrest_p_ = new Multi_measure_rest; + mmrest_p_ = new Multi_measure_rest (SCM_EOL); Staff_symbol_referencer_interface si (mmrest_p_); si.set_interface (); @@ -127,7 +127,7 @@ Multi_measure_rest_engraver::do_pre_move_processing () if (mmrest_p_ && (now_mom () >= start_moment_) && !mp - && (scm_ilength (mmrest_p_->get_elt_property ("columns")) >= 2)) + && (scm_ilength (mmrest_p_->get_elt_pointer ("columns")) >= 2)) { typeset_element (mmrest_p_); /* diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc index 0d360c945b..cd770d0d04 100644 --- a/lily/multi-measure-rest.cc +++ b/lily/multi-measure-rest.cc @@ -20,9 +20,10 @@ #include "stem.hh" #include "staff-symbol-referencer.hh" -Multi_measure_rest::Multi_measure_rest () +Multi_measure_rest::Multi_measure_rest (SCM s) + : Spanner (s) { - set_elt_property ("columns", SCM_EOL); + set_elt_pointer ("columns", SCM_EOL); } @@ -139,9 +140,9 @@ Multi_measure_rest::do_brew_molecule () const void Multi_measure_rest::do_add_processing () { - if (gh_pair_p (get_elt_property ("columns"))) + if (gh_pair_p (get_elt_pointer ("columns"))) { - Link_array column_arr (Group_interface__extract_elements (this, (Item*)0, "columns")); + Link_array column_arr (Pointer_group_interface__extract_elements (this, (Item*)0, "columns")); set_bound (LEFT, column_arr[0 >? column_arr.size () - 2]); set_bound (RIGHT, column_arr.top ()); @@ -153,7 +154,7 @@ Multi_measure_rest::do_add_processing () void Multi_measure_rest::after_line_breaking () { - if (!gh_pair_p (get_elt_property ("columns"))) + if (!gh_pair_p (get_elt_pointer ("columns"))) set_elt_property ("transparent", SCM_BOOL_T); } @@ -162,7 +163,7 @@ Multi_measure_rest::after_line_breaking () void Multi_measure_rest::add_column (Item* c) { - Group_interface gi (this, "columns"); + Pointer_group_interface gi (this, "columns"); gi.add_element (c); diff --git a/lily/note-column.cc b/lily/note-column.cc index 1f424860fe..7c1dd5ae9c 100644 --- a/lily/note-column.cc +++ b/lily/note-column.cc @@ -22,7 +22,7 @@ bool Note_column::rest_b () const { - SCM r = get_elt_property ("rests"); + SCM r = get_elt_pointer ("rests"); return gh_pair_p (r); } @@ -38,10 +38,11 @@ Note_column::shift_compare (Note_column *const &p1, Note_column*const&p2) return h1 - h2; } -Note_column::Note_column() +Note_column::Note_column( SCM s) + : Item (s) { - set_elt_property ("rests", SCM_EOL); - set_elt_property ("note-heads", SCM_EOL); + set_elt_pointer ("rests", SCM_EOL); + set_elt_pointer ("note-heads", SCM_EOL); Axis_group_interface (this).set_interface (); Axis_group_interface (this).set_axes (X_AXIS, Y_AXIS); Group_interface (this, "interfaces").add_thing (ly_symbol2scm ("Note_column")); @@ -50,7 +51,7 @@ Note_column::Note_column() Stem * Note_column::stem_l () const { - SCM s = get_elt_property ("stem"); + SCM s = get_elt_pointer ("stem"); return dynamic_cast (unsmob_element (s)); } @@ -63,7 +64,7 @@ Note_column::head_positions_interval() const iv.set_empty (); - SCM h = get_elt_property ("note-heads"); + SCM h = get_elt_pointer ("note-heads"); for (; gh_pair_p (h); h = gh_cdr (h)) { Score_element *se = unsmob_element (gh_car (h)); @@ -80,7 +81,7 @@ Note_column::dir () const { if (stem_l ()) return stem_l ()->get_direction (); - else if (gh_pair_p (get_elt_property ("note-heads"))) + else if (gh_pair_p (get_elt_pointer ("note-heads"))) return (Direction)sign (head_positions_interval().center ()); programming_error ("Note column without heads and stem!"); @@ -91,7 +92,7 @@ Note_column::dir () const void Note_column::set_stem (Stem * stem_l) { - set_elt_property ("stem", stem_l->self_scm_); + set_elt_pointer ("stem", stem_l->self_scm_); add_dependency (stem_l); Axis_group_interface (this).add_element (stem_l); @@ -104,12 +105,12 @@ Note_column::add_head (Rhythmic_head *h) { if (Rest*r=dynamic_cast (h)) { - Group_interface gi (this, "rests"); + Pointer_group_interface gi (this, "rests"); gi.add_element (h); } if (Note_head *nh=dynamic_cast (h)) { - Group_interface gi (this, "note-heads"); + Pointer_group_interface gi (this, "note-heads"); gi.add_element (nh); } Axis_group_interface (this).add_element (h); @@ -121,7 +122,7 @@ Note_column::add_head (Rhythmic_head *h) void Note_column::translate_rests (int dy_i) { - SCM s = get_elt_property ("rests"); + SCM s = get_elt_pointer ("rests"); for (; gh_pair_p (s); s = gh_cdr (s)) { Score_element * se = unsmob_element (gh_car (s)); @@ -181,7 +182,7 @@ Note_column::after_line_breaking () Direction d = stem_l ()->get_direction (); Real beamy = (stem_l ()->relative_coordinate (0, X_AXIS) - x0) * dydx + beam_y; - s = get_elt_property ("rests"); + s = get_elt_pointer ("rests"); Score_element * se = unsmob_element (gh_car (s)); Staff_symbol_referencer_interface si (se); @@ -210,7 +211,7 @@ Interval Note_column::rest_dim () const { Interval restdim; - SCM s = get_elt_property ("rests"); + SCM s = get_elt_pointer ("rests"); for (; gh_pair_p (s); s = gh_cdr (s)) { Score_element * sc = unsmob_element ( gh_car (s)); diff --git a/lily/note-head.cc b/lily/note-head.cc index 027f736c54..d5fa47e7ff 100644 --- a/lily/note-head.cc +++ b/lily/note-head.cc @@ -119,3 +119,9 @@ Note_head::do_brew_molecule() const return out; } + +Note_head::Note_head (SCM s) + : Rhythmic_head (s) +{ + +} diff --git a/lily/note-heads-engraver.cc b/lily/note-heads-engraver.cc index 780b642500..3090a6d111 100644 --- a/lily/note-heads-engraver.cc +++ b/lily/note-heads-engraver.cc @@ -60,7 +60,7 @@ Note_heads_engraver::do_process_music() for (int i=0; i < note_req_l_arr_.size (); i++) { - Note_head *note_p = new Note_head; + Note_head *note_p = new Note_head (SCM_EOL); Staff_symbol_referencer_interface si (note_p); si.set_interface (); @@ -73,7 +73,7 @@ Note_heads_engraver::do_process_music() if (note_req_l->duration_.dots_i_) { - Dots * d = new Dots; + Dots * d = new Dots (SCM_EOL); Staff_symbol_referencer_interface sd (d); sd.set_interface (); diff --git a/lily/note-name-engraver.cc b/lily/note-name-engraver.cc index 80e7651b6e..1f03a0ea1a 100644 --- a/lily/note-name-engraver.cc +++ b/lily/note-name-engraver.cc @@ -46,7 +46,7 @@ Note_name_engraver::do_process_music () } if (s.length_i()) { - Text_item * t = new Text_item; + Text_item * t = new Text_item (SCM_EOL); t->set_elt_property ("text", ly_str02scm ( s.ch_C())); announce_element (Score_element_info (t, req_l_arr_[0])); texts_.push (t); diff --git a/lily/paper-column.cc b/lily/paper-column.cc index d81fc89911..f7db1474a2 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -95,6 +95,7 @@ Paper_column::column_l () const } Paper_column::Paper_column (Moment w) + : Item (SCM_EOL) { SCM when = (new Moment (w))->smobify_self (); scm_unprotect_object (when); @@ -131,3 +132,8 @@ Paper_column::musical_b () const return s != Moment(0); } +bool +Paper_column::used_b ()const +{ + return gh_pair_p (get_elt_pointer ("elements")) || breakable_b (); +} diff --git a/lily/piano-pedal-engraver.cc b/lily/piano-pedal-engraver.cc index 216670ca30..e51fff1c6e 100644 --- a/lily/piano-pedal-engraver.cc +++ b/lily/piano-pedal-engraver.cc @@ -185,12 +185,12 @@ Piano_pedal_engraver::do_process_music () { if (p->name_ == String ("Sustain")) { - p->item_p_ = new Sustain_pedal; + p->item_p_ = new Sustain_pedal (SCM_EOL); p->item_p_->set_elt_property ("text", s); } else { - p->item_p_ = new Text_item; + p->item_p_ = new Text_item (SCM_EOL); p->item_p_->set_elt_property ("text", s); // guh p->item_p_->set_elt_property ("style", ly_str02scm ("italic")); @@ -199,6 +199,7 @@ Piano_pedal_engraver::do_process_music () Side_position_interface si (p->item_p_); si.set_axis (Y_AXIS); + // todo: init with basic props. p->item_p_->set_elt_property ("no-spacing-rods" , SCM_BOOL_T); p->item_p_->set_elt_property ("self-alignment-X", gh_int2scm (0)); p->item_p_->add_offset_callback (Side_position_interface::aligned_on_self, X_AXIS); diff --git a/lily/repeat-engraver.cc b/lily/repeat-engraver.cc index 67fa3e661e..8c838c3474 100644 --- a/lily/repeat-engraver.cc +++ b/lily/repeat-engraver.cc @@ -180,7 +180,7 @@ Repeat_engraver::do_process_music () else { assert (!volta_span_p_); - volta_span_p_ = new Volta_spanner; + volta_span_p_ = new Volta_spanner (SCM_EOL); announce_element (Score_element_info (volta_span_p_,0)); volta_span_p_->set_elt_property ("text", ly_str02scm (t.ch_C())); diff --git a/lily/rest-collision-engraver.cc b/lily/rest-collision-engraver.cc index c735a03205..606dfe30d6 100644 --- a/lily/rest-collision-engraver.cc +++ b/lily/rest-collision-engraver.cc @@ -27,7 +27,7 @@ Rest_collision_engraver::process_acknowledged () if (rest_collision_p_ || note_column_l_arr_.size () < 2) return; - rest_collision_p_ = new Rest_collision; + rest_collision_p_ = new Rest_collision (get_property ("basicRestCollisionProperties")); announce_element (Score_element_info (rest_collision_p_, 0)); for (int i=0; i< note_column_l_arr_.size (); i++) diff --git a/lily/rest-collision.cc b/lily/rest-collision.cc index df842f8f33..34d39fbe3b 100644 --- a/lily/rest-collision.cc +++ b/lily/rest-collision.cc @@ -24,7 +24,7 @@ void Rest_collision::add_column (Note_column *nc_l) { add_dependency (nc_l); - Group_interface gi (this); + Pointer_group_interface gi (this); if (nc_l->rest_b ()) gi.name_ = "rests"; else @@ -51,7 +51,7 @@ rhythmic_head2mom (Rhythmic_head* r) static Rhythmic_head* col2rhythmic_head (Note_column* c) { - SCM s = c->get_elt_property ("rests"); + SCM s = c->get_elt_pointer ("rests"); assert (gh_pair_p (s)); Score_element* e = unsmob_element (gh_car (s)); return dynamic_cast (e); @@ -61,9 +61,9 @@ void Rest_collision::before_line_breaking () { Link_array rest_l_arr = - Group_interface__extract_elements (this, (Note_column*) 0, "rests"); + Pointer_group_interface__extract_elements (this, (Note_column*) 0, "rests"); Link_array ncol_l_arr = - Group_interface__extract_elements (this, (Note_column*) 0, "notes"); + Pointer_group_interface__extract_elements (this, (Note_column*) 0, "notes"); /* @@ -188,11 +188,11 @@ Rest_collision::before_line_breaking () } -Rest_collision::Rest_collision() +Rest_collision::Rest_collision(SCM s) + : Item (s) { - set_elt_property ("rests", SCM_EOL); - set_elt_property ("notes", SCM_EOL); - set_elt_property ("transparent", SCM_BOOL_T); + set_elt_pointer ("rests", SCM_EOL); + set_elt_pointer ("notes", SCM_EOL); set_extent_callback (0, X_AXIS); set_extent_callback (0, Y_AXIS); } diff --git a/lily/rest-engraver.cc b/lily/rest-engraver.cc index fce8f71bbd..37b3e6ee1f 100644 --- a/lily/rest-engraver.cc +++ b/lily/rest-engraver.cc @@ -46,7 +46,7 @@ Rest_engraver::do_process_music () { if (rest_req_l_ && !rest_p_) { - rest_p_ = new Rest; + rest_p_ = new Rest (SCM_EOL); Staff_symbol_referencer_interface si (rest_p_); si.set_interface (); @@ -55,7 +55,7 @@ Rest_engraver::do_process_music () if (rest_req_l_->duration_.dots_i_) { - dot_p_ = new Dots; + dot_p_ = new Dots (SCM_EOL); Staff_symbol_referencer_interface si (dot_p_); si.set_interface (); diff --git a/lily/rest.cc b/lily/rest.cc index 89c2d1a9e0..b01d47896d 100644 --- a/lily/rest.cc +++ b/lily/rest.cc @@ -62,3 +62,8 @@ Rest::do_brew_molecule () const +Rest::Rest (SCM s) + : Rhythmic_head (s) +{ +} + diff --git a/lily/rhythmic-column-engraver.cc b/lily/rhythmic-column-engraver.cc index a8bf90263a..ad0c6acbdd 100644 --- a/lily/rhythmic-column-engraver.cc +++ b/lily/rhythmic-column-engraver.cc @@ -30,7 +30,7 @@ Rhythmic_column_engraver::process_acknowledged () { if (!ncol_p_) { - ncol_p_ = new Note_column; + ncol_p_ = new Note_column (SCM_EOL); announce_element (Score_element_info (ncol_p_, 0)); } diff --git a/lily/rhythmic-head.cc b/lily/rhythmic-head.cc index 64d2bd4bdd..1b735cd5ee 100644 --- a/lily/rhythmic-head.cc +++ b/lily/rhythmic-head.cc @@ -21,7 +21,7 @@ Dots* Rhythmic_head::dots_l () const { - SCM s = get_elt_property ("dot"); + SCM s = get_elt_pointer ("dot"); return dynamic_cast (unsmob_element (s)); } @@ -36,7 +36,7 @@ Rhythmic_head::balltype_i () const Stem* Rhythmic_head::stem_l () const { - SCM s = get_elt_property ("stem"); + SCM s = get_elt_pointer ("stem"); return dynamic_cast (unsmob_element (s)); } @@ -62,8 +62,12 @@ Rhythmic_head::after_line_breaking () void Rhythmic_head::add_dots (Dots *dot_l) { - set_elt_property ("dot", dot_l->self_scm_); + set_elt_pointer ("dot", dot_l->self_scm_); dot_l->add_dependency (this); } +Rhythmic_head::Rhythmic_head (SCM s) + : Item (s) +{ +} diff --git a/lily/script-column-engraver.cc b/lily/script-column-engraver.cc index 131bf4bb63..9fbf4f567d 100644 --- a/lily/script-column-engraver.cc +++ b/lily/script-column-engraver.cc @@ -73,7 +73,7 @@ Script_column_engraver::process_acknowledged () { if (!scol_p_ && script_l_arr_.size () > 1) { - scol_p_ = new Script_column; + scol_p_ = new Script_column (SCM_EOL); announce_element (Score_element_info (scol_p_, 0)); } diff --git a/lily/script-column.cc b/lily/script-column.cc index 35d9d02604..c4123815d4 100644 --- a/lily/script-column.cc +++ b/lily/script-column.cc @@ -19,15 +19,16 @@ Script_column::add_staff_sided (Item *i) return; - Group_interface gi (this, "scripts"); + Pointer_group_interface gi (this, "scripts"); gi.add_element (i); add_dependency (i); } -Script_column::Script_column () +Script_column::Script_column (SCM s) + : Item (s) { - set_elt_property ("scripts", SCM_EOL); + set_elt_pointer ("scripts", SCM_EOL); } static int @@ -45,7 +46,7 @@ Script_column::before_line_breaking () { Drul_array > arrs; Link_array staff_sided - = Group_interface__extract_elements (this, (Item*)0, "scripts"); + = Pointer_group_interface__extract_elements (this, (Item*)0, "scripts"); for (int i=0; i < staff_sided.size (); i++) diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc index 3ea13a879a..7136ba6841 100644 --- a/lily/script-engraver.cc +++ b/lily/script-engraver.cc @@ -70,7 +70,8 @@ Script_engraver::do_process_music() l->articulation_str_.ch_C ())); continue; } - Script *p =new Script; + // todo -> use result of articulation-to-scriptdef directly as basic prop list. + Script *p =new Script (SCM_EOL); Side_position_interface stafy (p); diff --git a/lily/script.cc b/lily/script.cc index 3e78d6acd8..20c799cd96 100644 --- a/lily/script.cc +++ b/lily/script.cc @@ -14,6 +14,10 @@ #include "paper-def.hh" #include "dimension-cache.hh" +Script ::Script (SCM s) + : Item (s) +{ +} Molecule Script::get_molecule(Direction d) const diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc index 295bef4824..9ce1156d17 100644 --- a/lily/separating-group-spanner.cc +++ b/lily/separating-group-spanner.cc @@ -12,6 +12,7 @@ #include "paper-column.hh" #include "paper-def.hh" #include "dimensions.hh" +#include "group-interface.hh" static Rod make_rod (Single_malt_grouping_item *l, Single_malt_grouping_item *r) @@ -39,7 +40,7 @@ Separating_group_spanner::get_rods () const { Array a; - for (SCM s = get_elt_property ("elements"); gh_pair_p (s) && gh_pair_p (gh_cdr (s)); s = gh_cdr (s)) + for (SCM s = get_elt_pointer ("elements"); gh_pair_p (s) && gh_pair_p (gh_cdr (s)); s = gh_cdr (s)) { /* Order of elements is reversed! @@ -81,7 +82,7 @@ Separating_group_spanner::get_rods () const /* We've done our job, so we get lost. */ - for (SCM s = get_elt_property ("elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_elt_pointer ("elements"); gh_pair_p (s); s = gh_cdr (s)) { Item * it =dynamic_cast(unsmob_element (gh_car (s))); if (it && it->broken_b ()) @@ -100,14 +101,13 @@ Separating_group_spanner::get_rods () const void Separating_group_spanner::add_spacing_unit (Single_malt_grouping_item*i) { - set_elt_property ("elements", - gh_cons (i->self_scm_, - get_elt_property ("elements"))); + Pointer_group_interface (this, "elements").add_element (i); add_dependency (i); } -Separating_group_spanner::Separating_group_spanner () +Separating_group_spanner::Separating_group_spanner (SCM s) + : Spanner (s) { - set_elt_property ("elements", SCM_EOL); + set_elt_pointer ("elements", SCM_EOL); } diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index d6115db93c..89edf59ca9 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -11,6 +11,27 @@ #include "debug.hh" #include "note-column.hh" #include "translator-group.hh" +#include "engraver.hh" + +class Slur_engraver :public Engraver { + Link_array requests_arr_; + Link_array new_slur_req_l_arr_; + Link_array slur_l_stack_; + Link_array end_slur_l_arr_; + + void set_melisma (bool); +protected: + virtual bool do_try_music (Music*); + virtual void do_process_music(); + virtual void acknowledge_element (Score_element_info); + virtual void do_pre_move_processing(); + virtual void do_post_move_processing(); + virtual void do_removal_processing (); + +public: + VIRTUAL_COPY_CONS(Translator); + +}; bool Slur_engraver::do_try_music (Music *req_l) @@ -85,7 +106,7 @@ Slur_engraver::do_process_music() { // push a new slur onto stack. //(use temp. array to wait for all slur STOPs) - Slur * s_p =new Slur; + Slur * s_p =new Slur (SCM_EOL); requests_arr_.push (slur_req_l); start_slur_l_arr_.push (s_p); diff --git a/lily/slur.cc b/lily/slur.cc index 13b2c7b7c8..f15b9a3bb8 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -215,24 +215,25 @@ Slur_bezier_bow::fit_factor () const Slur */ -Slur::Slur () +Slur::Slur (SCM s) + : Spanner (s) { // URG dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = 0.0; dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0; - set_elt_property ("note-columns", SCM_EOL); + set_elt_pointer ("note-columns", SCM_EOL); set_elt_property ("control-points", SCM_EOL); } void Slur::add_column (Note_column*n) { - if (!gh_pair_p (n->get_elt_property ("note-heads"))) + if (!gh_pair_p (n->get_elt_pointer ("note-heads"))) warning (_ ("Putting slur over rest. Ignoring.")); else { - Group_interface (this, "note-columns").add_element (n); + Pointer_group_interface (this, "note-columns").add_element (n); add_dependency (n); } } @@ -271,7 +272,7 @@ Direction Slur::get_default_dir () const { Link_array encompass_arr = - Group_interface__extract_elements (this, (Note_column*)0, "note-columns"); + Pointer_group_interface__extract_elements (this, (Note_column*)0, "note-columns"); Direction d = DOWN; for (int i=0; i < encompass_arr.size (); i ++) @@ -289,7 +290,7 @@ void Slur::do_add_processing () { Link_array encompass_arr = - Group_interface__extract_elements (this, (Note_column*)0, "note-columns"); + Pointer_group_interface__extract_elements (this, (Note_column*)0, "note-columns"); if (encompass_arr.size ()) { @@ -357,7 +358,7 @@ void Slur::set_extremities () { Link_array encompass_arr = - Group_interface__extract_elements (this, (Note_column*)0, "note-columns"); + Pointer_group_interface__extract_elements (this, (Note_column*)0, "note-columns"); if (!encompass_arr.size ()) { @@ -517,7 +518,7 @@ int Slur::cross_staff_count ()const { Link_array encompass_arr = - Group_interface__extract_elements (this, (Note_column*)0, "note-columns"); + Pointer_group_interface__extract_elements (this, (Note_column*)0, "note-columns"); int k=0; @@ -534,7 +535,7 @@ Array Slur::get_encompass_offset_arr () const { Link_array encompass_arr = - Group_interface__extract_elements (this, (Note_column*)0, "note-columns"); + Pointer_group_interface__extract_elements (this, (Note_column*)0, "note-columns"); Array offset_arr; diff --git a/lily/spacing-engraver.cc b/lily/spacing-engraver.cc index 83b3ab1337..5e05094bdb 100644 --- a/lily/spacing-engraver.cc +++ b/lily/spacing-engraver.cc @@ -34,7 +34,7 @@ Spacing_engraver::Spacing_engraver() void Spacing_engraver::do_creation_processing () { - spacing_p_ =new Spacing_spanner; + spacing_p_ =new Spacing_spanner (SCM_EOL); spacing_p_->set_bound (LEFT, get_staff_info ().command_pcol_l ()); announce_element (Score_element_info (spacing_p_, 0)); } diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index 4b413ec6a8..d9de35e5f3 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -16,7 +16,8 @@ #include "line-of-score.hh" #include "misc.hh" -Spacing_spanner::Spacing_spanner () +Spacing_spanner::Spacing_spanner (SCM s) + : Spanner (s) { set_extent_callback (0, X_AXIS); set_extent_callback (0, Y_AXIS); diff --git a/lily/span-bar-engraver.cc b/lily/span-bar-engraver.cc index 6b9db20f74..f2659b0923 100644 --- a/lily/span-bar-engraver.cc +++ b/lily/span-bar-engraver.cc @@ -31,7 +31,7 @@ public: protected: virtual void acknowledge_element (Score_element_info); virtual void do_pre_move_processing(); - virtual Span_bar* get_span_bar_p() const; + virtual Span_bar* get_span_bar_p(SCM) const; }; @@ -41,9 +41,10 @@ Span_bar_engraver::Span_bar_engraver() } Span_bar* -Span_bar_engraver::get_span_bar_p() const +Span_bar_engraver::get_span_bar_p(SCM s) const { - return new Span_bar; + Span_bar * sp= new Span_bar (s); + return sp; } @@ -58,23 +59,14 @@ Span_bar_engraver::acknowledge_element (Score_element_info i) if (bar_l_arr_.size() >= 2 && !spanbar_p_) { - spanbar_p_ = get_span_bar_p(); + spanbar_p_ = get_span_bar_p( bar_l_arr_[0]->property_alist_); spanbar_p_->set_parent (bar_l_arr_[0], Y_AXIS); spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS); - SCM v = bar_l_arr_[0]->get_elt_property ("visibility-lambda"); - if (gh_procedure_p (v)) - spanbar_p_->set_elt_property ("visibility-lambda",v); - - spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS); announce_element (Score_element_info (spanbar_p_,0)); - if (!gh_string_p (spanbar_p_->get_elt_property ("glyph"))) - spanbar_p_-> set_elt_property ("glyph", - bar_l_arr_[0]->get_elt_property ("glyph")); } } } - void Span_bar_engraver::do_pre_move_processing() { diff --git a/lily/staff-bar.cc b/lily/staff-bar.cc index c1aba6ca96..c74c0bcfb7 100644 --- a/lily/staff-bar.cc +++ b/lily/staff-bar.cc @@ -23,3 +23,9 @@ Staff_bar::get_bar_size () const } } + +Staff_bar::Staff_bar (SCM s) + : Bar (s) +{ + +} diff --git a/lily/staff-symbol-engraver.cc b/lily/staff-symbol-engraver.cc index 4bed0bf752..e5bc48cd62 100644 --- a/lily/staff-symbol-engraver.cc +++ b/lily/staff-symbol-engraver.cc @@ -1,5 +1,5 @@ /* - staff-sym-reg.cc -- implement Staff_symbol_engraver + staff-symbol-engraver.cc -- implement Staff_symbol_engraver source file of the GNU LilyPond music typesetter @@ -46,8 +46,9 @@ Staff_symbol_engraver::Staff_symbol_engraver() void Staff_symbol_engraver::do_creation_processing() { - span_p_ = new Staff_symbol; + span_p_ = new Staff_symbol (get_property ("staffSymbolBasicProperties")); span_p_->set_bound(LEFT,get_staff_info().command_pcol_l ()); + announce_element (Score_element_info (span_p_, 0)); } @@ -70,7 +71,7 @@ Staff_symbol_engraver::do_removal_processing() void Staff_symbol_engraver::acknowledge_element (Score_element_info s) { - s.elem_l_->set_elt_property ("staff-symbol", span_p_->self_scm_); + s.elem_l_->set_elt_pointer ("staff-symbol", span_p_->self_scm_); s.elem_l_->add_dependency (span_p_); // UGH. UGH. UGH } diff --git a/lily/staff-symbol.cc b/lily/staff-symbol.cc index 4419d8dc12..50399d33b5 100644 --- a/lily/staff-symbol.cc +++ b/lily/staff-symbol.cc @@ -60,5 +60,11 @@ Staff_symbol::line_count () const Real Staff_symbol::staff_space ()const { - return gh_scm2double (get_elt_property ("staff-space")); + return gh_scm2double (get_elt_property ("staff-space")) * + paper_l ()->get_var ("staffspace"); +} + +Staff_symbol::Staff_symbol( SCM s) + : Spanner (s) +{ } diff --git a/lily/stem.cc b/lily/stem.cc index d883849bc6..583d777c5c 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -132,7 +132,7 @@ Stem::type_i () const Score_element* Stem::support_head ()const { - SCM h = get_elt_property ("support-head"); + SCM h = get_elt_pointer ("support-head"); Score_element * nh = unsmob_element (h); if (nh) return nh; @@ -142,7 +142,7 @@ Stem::support_head ()const UGH. */ - return unsmob_element (gh_car (get_elt_property ("heads"))); + return unsmob_element (gh_car (get_elt_pointer ("heads"))); } else return first_head (); @@ -152,7 +152,7 @@ Stem::support_head ()const int Stem::heads_i ()const { - Group_interface gi (this, "heads"); + Pointer_group_interface gi (this, "heads"); return gi.count (); } @@ -179,7 +179,7 @@ Stem::extremal_heads () const Drul_array exthead; exthead[LEFT] = exthead[RIGHT] =0; - for (SCM s = get_elt_property ("heads"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_elt_pointer ("heads"); gh_pair_p (s); s = gh_cdr (s)) { Note_head * n = dynamic_cast (unsmob_element (gh_car (s))); Staff_symbol_referencer_interface si (n); @@ -202,10 +202,10 @@ Stem::extremal_heads () const void Stem::add_head (Rhythmic_head *n) { - n->set_elt_property ("stem", this->self_scm_); + n->set_elt_pointer ("stem", this->self_scm_); n->add_dependency (this); - Group_interface gi (this); + Pointer_group_interface gi (this); if (Note_head *nh = dynamic_cast (n)) gi.name_ = "heads"; else @@ -214,10 +214,11 @@ Stem::add_head (Rhythmic_head *n) gi.add_element (n); } -Stem::Stem () +Stem::Stem (SCM s) + : Item (s) { - set_elt_property ("heads", SCM_EOL); - set_elt_property ("rests", SCM_EOL); + set_elt_pointer ("heads", SCM_EOL); + set_elt_pointer ("rests", SCM_EOL); add_offset_callback ( &Stem::off_callback, X_AXIS); } @@ -338,7 +339,7 @@ Stem::position_noteheads () return; Link_array heads = - Group_interface__extract_elements (this, (Score_element*)0, "heads"); + Pointer_group_interface__extract_elements (this, (Score_element*)0, "heads"); heads.sort (compare_position); Direction dir =get_direction (); @@ -443,7 +444,7 @@ Stem::dim_callback (Score_element const *se, Axis ) Stem * s = dynamic_cast ((Score_element*)se); Interval r (0, 0); - if (unsmob_element (s->get_elt_property ("beam")) || abs (s->flag_i ()) <= 2) + if (unsmob_element (s->get_elt_pointer ("beam")) || abs (s->flag_i ()) <= 2) ; // TODO! else { @@ -517,7 +518,7 @@ Stem::off_callback (Score_element const* se, Axis) Beam* Stem::beam_l ()const { - SCM b= get_elt_property ("beam"); + SCM b= get_elt_pointer ("beam"); return dynamic_cast (unsmob_element (b)); } diff --git a/lily/sustain-pedal.cc b/lily/sustain-pedal.cc index a6388d658e..f94867bbf4 100644 --- a/lily/sustain-pedal.cc +++ b/lily/sustain-pedal.cc @@ -60,3 +60,7 @@ Sustain_pedal::do_brew_molecule () const } + +Sustain_pedal ::Sustain_pedal(SCM s ) + : Item (s) +{} diff --git a/lily/system-start-delimiter-engraver.cc b/lily/system-start-delimiter-engraver.cc index caa138477d..4841e19a48 100644 --- a/lily/system-start-delimiter-engraver.cc +++ b/lily/system-start-delimiter-engraver.cc @@ -39,7 +39,7 @@ System_start_delimiter_engraver::acknowledge_element (Score_element_info inf) don't add as Axis_group_interface (delim_).add_element (), because that would set the parent as well */ - Group_interface (delim_).add_element (inf.elem_l_); + Pointer_group_interface (delim_).add_element (inf.elem_l_); } else if (System_start_delimiter * b = dynamic_cast (inf.elem_l_)) { @@ -64,7 +64,7 @@ System_start_delimiter_engraver::System_start_delimiter_engraver() void System_start_delimiter_engraver::do_creation_processing() { - delim_ = new System_start_delimiter; + delim_ = new System_start_delimiter (get_property ("basicSystemStartDelimiterProperties")); delim_->set_bound (LEFT, get_staff_info ().command_pcol_l ()); /* @@ -87,8 +87,6 @@ System_start_delimiter_engraver::do_removal_processing () SCM collapse = get_property ("bracketCollapseHeight"); if (gh_number_p (collapse)) delim_->set_elt_property ("collapse-height", collapse); - else - delim_->set_elt_property ("collapse-height", gh_double2scm (1)); delim_->set_bound (RIGHT, get_staff_info ().command_pcol_l ()); typeset_element (delim_); diff --git a/lily/system-start-delimiter.cc b/lily/system-start-delimiter.cc index 928a1a9924..aeb2bfd9c1 100644 --- a/lily/system-start-delimiter.cc +++ b/lily/system-start-delimiter.cc @@ -38,10 +38,11 @@ System_start_delimiter::staff_bracket (Real height) const return mol; } -System_start_delimiter::System_start_delimiter () +System_start_delimiter::System_start_delimiter (SCM s) + : Spanner (s) { set_extent_callback (0, Y_AXIS); - Group_interface (this).set_interface(); + Pointer_group_interface (this).set_interface(); } Molecule @@ -56,7 +57,7 @@ System_start_delimiter::after_line_breaking () { SCM gl = get_elt_property ("glyph"); - if (scm_ilength (get_elt_property ("elements")) <= 1 && gl == ly_symbol2scm ("bar-line")) + if (scm_ilength (get_elt_pointer ("elements")) <= 1 && gl == ly_symbol2scm ("bar-line")) { set_elt_property ("transparent", SCM_BOOL_T); set_extent_callback (0, X_AXIS); diff --git a/lily/text-engraver.cc b/lily/text-engraver.cc index 7c1e15c829..a3d72332f9 100644 --- a/lily/text-engraver.cc +++ b/lily/text-engraver.cc @@ -78,7 +78,7 @@ Text_engraver::do_process_music () { Text_script_req * r = reqs_[i]; - Text_item *text = new Text_item; + Text_item *text = new Text_item (SCM_EOL); Side_position_interface stafy (text); SCM axisprop = get_property ("scriptHorizontal"); diff --git a/lily/text-item.cc b/lily/text-item.cc index 9eb3047356..9e3be5ce81 100644 --- a/lily/text-item.cc +++ b/lily/text-item.cc @@ -14,6 +14,12 @@ #include "lookup.hh" #include "staff-symbol-referencer.hh" +Text_item::Text_item (SCM s) + : Item (s) +{ + +} + Molecule Text_item::do_brew_molecule () const { diff --git a/lily/tie-column.cc b/lily/tie-column.cc index 78f398d1e0..146e94d3a1 100644 --- a/lily/tie-column.cc +++ b/lily/tie-column.cc @@ -13,9 +13,10 @@ #include "directional-element-interface.hh" #include "note-head.hh" -Tie_column::Tie_column () +Tie_column::Tie_column (SCM s) + : Spanner (s) { - set_elt_property ("ties", SCM_EOL); + set_elt_pointer ("ties", SCM_EOL); set_extent_callback (0, X_AXIS); set_extent_callback (0, Y_AXIS); set_elt_property ("transparent", SCM_BOOL_T); @@ -24,14 +25,14 @@ Tie_column::Tie_column () void Tie_column::add_tie (Tie *s) { - Group_interface g (this, "ties"); + Pointer_group_interface g (this, "ties"); if (!g.count ()) { set_bound (LEFT, s->head (LEFT)); set_bound (RIGHT, s->head (RIGHT)); } - group (this, "ties").add_element (s); + Pointer_group_interface (this, "ties").add_element (s); s->add_dependency (this); } @@ -56,7 +57,7 @@ void Tie_column::set_directions () { Link_array s = - Group_interface__extract_elements (this, (Tie*)0, "ties"); + Pointer_group_interface__extract_elements (this, (Tie*)0, "ties"); Direction d = directional_element (this).get (); diff --git a/lily/tie-engraver.cc b/lily/tie-engraver.cc index 273d66843e..b507048eed 100644 --- a/lily/tie-engraver.cc +++ b/lily/tie-engraver.cc @@ -173,7 +173,7 @@ Tie_engraver::process_acknowledged () SCM pair = gh_list_ref (head_list, gh_int2scm (i/2)); - Tie * p = new Tie; + Tie * p = new Tie (SCM_EOL); p->set_head (LEFT, dynamic_cast (unsmob_element (gh_car (pair)))); p->set_head (RIGHT, dynamic_cast (unsmob_element (gh_cdr (pair)))); @@ -182,7 +182,7 @@ Tie_engraver::process_acknowledged () } else for (SCM s = head_list; gh_pair_p (s); s = gh_cdr (s)) { - Tie * p = new Tie; + Tie * p = new Tie (SCM_EOL); p->set_head (LEFT, dynamic_cast (unsmob_element (gh_caar (s)))); p->set_head (RIGHT, dynamic_cast (unsmob_element (gh_cdar (s)))); @@ -196,7 +196,7 @@ Tie_engraver::process_acknowledged () } else if (tie_p_arr_.size () > 1 && !tie_column_p_) { - tie_column_p_ = new Tie_column; + tie_column_p_ = new Tie_column (SCM_EOL); for (int i = tie_p_arr_.size (); i--; ) tie_column_p_->add_tie (tie_p_arr_ [i]); announce_element (Score_element_info (tie_column_p_, 0)); diff --git a/lily/tie.cc b/lily/tie.cc index 2b0e032b7c..daf09ecdab 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -24,15 +24,16 @@ void Tie::set_head (Direction d, Item * head_l) { assert (!head (d)); - index_set_cell (get_elt_property ("heads"), d, head_l->self_scm_); + index_set_cell (get_elt_pointer ("heads"), d, head_l->self_scm_); set_bound (d, head_l); add_dependency (head_l); } -Tie::Tie() +Tie::Tie(SCM s) + : Spanner (s) { - set_elt_property ("heads", gh_cons (SCM_EOL, SCM_EOL)); + set_elt_pointer ("heads", gh_cons (SCM_EOL, SCM_EOL)); dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = 0.0; dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0; @@ -41,7 +42,7 @@ Tie::Tie() Note_head* Tie::head (Direction d) const { - SCM c = get_elt_property ("heads"); + SCM c = get_elt_pointer ("heads"); c = index_cell (c, d); return dynamic_cast (unsmob_element (c)); @@ -87,8 +88,8 @@ Tie::do_add_processing() new_head_drul[d] = head((Direction)-d); } while (flip(&d) != LEFT); - index_set_cell (get_elt_property ("heads"), LEFT, new_head_drul[LEFT]->self_scm_ ); - index_set_cell (get_elt_property ("heads"), RIGHT, new_head_drul[RIGHT]->self_scm_ ); + index_set_cell (get_elt_pointer ("heads"), LEFT, new_head_drul[LEFT]->self_scm_ ); + index_set_cell (get_elt_pointer ("heads"), RIGHT, new_head_drul[RIGHT]->self_scm_ ); } void diff --git a/lily/time-signature-engraver.cc b/lily/time-signature-engraver.cc index 6a4a1deed7..77f1e75e94 100644 --- a/lily/time-signature-engraver.cc +++ b/lily/time-signature-engraver.cc @@ -35,11 +35,11 @@ Time_signature_engraver::do_process_music() Time_signature_change_req *req = timing_grav_l->time_signature_req_l(); if (req) { - time_signature_p_ = new Time_signature; + time_signature_p_ = new Time_signature (get_property ("basicTimeSignatureProperties")); + time_signature_p_->set_elt_property ("fraction", gh_cons (gh_int2scm (req->beats_i_), gh_int2scm (req->one_beat_i_))); - time_signature_p_->set_elt_property ("break-align-symbol", ly_symbol2scm( "Time_signature")); } diff --git a/lily/time-signature.cc b/lily/time-signature.cc index 4a67538f35..15d419a94f 100644 --- a/lily/time-signature.cc +++ b/lily/time-signature.cc @@ -13,9 +13,10 @@ #include "paper-def.hh" #include "lookup.hh" -Time_signature::Time_signature () +Time_signature::Time_signature (SCM s) + : Item (s) { - set_elt_property ("breakable", SCM_BOOL_T); + } // ugh.! diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc index 1dccd22122..04918610d3 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -73,7 +73,7 @@ Tuplet_engraver::do_process_music () if (i < started_span_p_arr_.size () && started_span_p_arr_[i]) continue; - Tuplet_spanner* glep = new Tuplet_spanner; + Tuplet_spanner* glep = new Tuplet_spanner (SCM_EOL); if (i >= started_span_p_arr_.size ()) started_span_p_arr_.push (glep); else diff --git a/lily/tuplet-spanner.cc b/lily/tuplet-spanner.cc index 3bafebeec8..70ad67dd4e 100644 --- a/lily/tuplet-spanner.cc +++ b/lily/tuplet-spanner.cc @@ -22,10 +22,11 @@ #include "directional-element-interface.hh" -Tuplet_spanner::Tuplet_spanner () +Tuplet_spanner::Tuplet_spanner (SCM s) + : Spanner (s) { - set_elt_property ("beams", SCM_EOL); - set_elt_property ("columns", SCM_EOL); + set_elt_pointer ("beams", SCM_EOL); + set_elt_pointer ("columns", SCM_EOL); // ugh. set_elt_property ("delta-y", gh_int2scm (0)); @@ -60,10 +61,10 @@ Tuplet_spanner::do_brew_molecule () const else if (bracket == ly_symbol2scm ("if-no-beam")) number_visibility = !par_beam; - if (gh_pair_p (get_elt_property ("columns"))) + if (gh_pair_p (get_elt_pointer ("columns"))) { Link_array column_arr= - Group_interface__extract_elements (this, (Note_column*)0, "columns"); + Pointer_group_interface__extract_elements (this, (Note_column*)0, "columns"); Real ncw = column_arr.top ()->extent(X_AXIS).length (); Real w = spanner_length () + ncw; @@ -114,10 +115,10 @@ Tuplet_spanner::do_brew_molecule () const void Tuplet_spanner::do_add_processing () { - if (gh_pair_p (get_elt_property ("columns"))) + if (gh_pair_p (get_elt_pointer ("columns"))) { Link_array column_arr= - Group_interface__extract_elements (this, (Note_column*)0, "columns"); + Pointer_group_interface__extract_elements (this, (Note_column*)0, "columns"); set_bound (LEFT, column_arr[0]); set_bound (RIGHT, column_arr.top ()); @@ -133,10 +134,10 @@ void Tuplet_spanner::calc_position_and_height (Real *offset, Real * dy) const { Link_array column_arr= - Group_interface__extract_elements (this, (Note_column*)0, "columns"); + Pointer_group_interface__extract_elements (this, (Note_column*)0, "columns"); - Score_element * common = common_refpoint (get_elt_property ("columns"), Y_AXIS); + Score_element * common = common_refpoint (get_elt_pointer ("columns"), Y_AXIS); Direction d = directional_element (this).get (); @@ -190,7 +191,7 @@ void Tuplet_spanner::calc_dy (Real * dy) const { Link_array column_arr= - Group_interface__extract_elements (this, (Note_column*)0, "columns"); + Pointer_group_interface__extract_elements (this, (Note_column*)0, "columns"); Direction d = directional_element (this).get (); @@ -202,7 +203,7 @@ void Tuplet_spanner::after_line_breaking () { Link_array column_arr= - Group_interface__extract_elements (this, (Note_column*)0, "columns"); + Pointer_group_interface__extract_elements (this, (Note_column*)0, "columns"); if (!column_arr.size ()) { @@ -226,9 +227,9 @@ Tuplet_spanner::after_line_breaking () translate_axis (offset, Y_AXIS); - if (scm_ilength (get_elt_property ("beams")) == 1) + if (scm_ilength (get_elt_pointer ("beams")) == 1) { - SCM bs = get_elt_property ("beams"); + SCM bs = get_elt_pointer ("beams"); Score_element *b = unsmob_element (gh_car (bs)); Beam * beam_l = dynamic_cast (b); if (!broken_b () @@ -252,7 +253,7 @@ Tuplet_spanner::get_default_dir () const } d = UP ; - for (SCM s = get_elt_property ("columns"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_elt_pointer ("columns"); gh_pair_p (s); s = gh_cdr (s)) { Score_element * sc = unsmob_element (gh_car (s)); Note_column * nc = dynamic_cast (sc); @@ -270,14 +271,14 @@ void Tuplet_spanner::add_beam (Beam *b) { add_dependency (b); - Group_interface gi (this, "beams"); + Pointer_group_interface gi (this, "beams"); gi.add_element (b); } void Tuplet_spanner::add_column (Note_column*n) { - Group_interface gi (this, "columns"); + Pointer_group_interface gi (this, "columns"); gi.add_element (n); add_dependency (n); diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc index 9718a8a53b..0a9c319294 100644 --- a/lily/vertical-align-engraver.cc +++ b/lily/vertical-align-engraver.cc @@ -37,7 +37,7 @@ Vertical_align_engraver::Vertical_align_engraver() void Vertical_align_engraver::do_creation_processing() { - valign_p_ =new Spanner; //Axis_align_spanner + valign_p_ =new Spanner (SCM_EOL); // todo -> basic props Align_interface (valign_p_).set_interface (); Align_interface (valign_p_).set_axis (Y_AXIS); valign_p_->set_elt_property ("stacking-dir", diff --git a/lily/volta-spanner.cc b/lily/volta-spanner.cc index d4604f151a..0ad6860ade 100644 --- a/lily/volta-spanner.cc +++ b/lily/volta-spanner.cc @@ -22,9 +22,10 @@ #include "side-position-interface.hh" #include "directional-element-interface.hh" -Volta_spanner::Volta_spanner () +Volta_spanner::Volta_spanner (SCM s) + : Spanner (s) { - set_elt_property ("bars", SCM_EOL); + set_elt_pointer ("bars", SCM_EOL); Side_position_interface (this).set_axis (Y_AXIS); directional_element (this).set (UP); } @@ -46,7 +47,7 @@ Volta_spanner::do_brew_molecule () const Molecule mol; Link_array bar_arr - = Group_interface__extract_elements (this, (Bar*)0, "bars"); + = Pointer_group_interface__extract_elements (this, (Bar*)0, "bars"); if (!bar_arr.size ()) return mol; @@ -100,7 +101,7 @@ Volta_spanner::do_add_processing () { Link_array bar_arr - = Group_interface__extract_elements (this, (Bar*)0, "bars"); + = Pointer_group_interface__extract_elements (this, (Bar*)0, "bars"); if (bar_arr.size ()) { @@ -118,7 +119,7 @@ Volta_spanner::after_line_breaking () void Volta_spanner::add_bar (Bar* b) { - Group_interface gi(this, "bars"); + Pointer_group_interface gi(this, "bars"); gi.add_element (b); Side_position_interface (this).add_support (b); -- 2.39.5