From: fred Date: Wed, 27 Mar 2002 00:33:28 +0000 (+0000) Subject: lilypond-1.3.110 X-Git-Tag: release/1.5.59~1099 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=d3a7e4e40c7014c0a02ce3578820ceff31df9a82;p=lilypond.git lilypond-1.3.110 --- diff --git a/CHANGES b/CHANGES index 07c400599b..4b678c9088 100644 --- a/CHANGES +++ b/CHANGES @@ -1,5 +1,36 @@ -1.3.108.uu1 -=========== +1.3.109.jcn2 +============ + +* Fixed a mysterious typo in toplevel index. + +* Enabled property-engraver. + +* Cleanup in Auto-beam-engraver (still broken, because timings are off?) + +* Collapsed all ``void Foo::create_grobs () { deprecated_process_music +(); }'' occurences, and reactivated some disabled code (note-name, +chord-name, custos, lyrics). Reactivated Timing_translator using +process_music (). + +1.3.109.hwn1 +============ + +* unsmob_element -> unsmob_grob + +* Make a Slur::height callback, to prevent early brew_molecule +call. This fixes cross-staff slurs. + +* Bugfix: custodes style must be symbol, not string. + +* do_creation_processing () -> initialize (), do_removal_processing () +-> finalize (). Remove (do_)add_processing. + +* Move Relative_octave_music::last_pitch_ into SCM, junk +Transposed_music::to_pitch_, junked Time_scaled_music::{den_i_, +num_i_}, Rhythmic_req::duration_, Melodic_req::pitch_ + +1.3.109 +======= * Bugfix: resurrected point-and-click. @@ -21,8 +52,8 @@ various XXXX functions as wrapper for do_XXX functions. {pre,post}_move_processing -> {stop,start}_translation_timestep, do_try_music -> try_music. -1.3.107.jcn3 -============ +1.3.108 +======= * Dropped ly_lists_equal for gh_equal_ diff --git a/Documentation/topdocs/index.tely b/Documentation/topdocs/index.tely index 50be2f66d7..ce76388365 100644 --- a/Documentation/topdocs/index.tely +++ b/Documentation/topdocs/index.tely @@ -16,7 +16,7 @@ @unnumberedsec What is LilyPond? -LilyPond is a music typesetting. It produces beautiful sheet music +LilyPond is a music typesetter. It produces beautiful sheet music using a high level description file as input. It excels at typesetting classical music, but you can also print pop-songs. With LilyPond we hope to make music publication software available to anyone on the @@ -73,15 +73,6 @@ examples} and @uref{long-examples.html,longer examples}. The examples include sound bites in MIDI, pictures in PNG, printable scores in PostScript, and LilyPond input. Others use LilyPond too, and have put scores on the web. Head over to @uref{http://appel.lilypond.org/wiki/index.php?DownloadLilyPondScores} -@uref{http://www.geocities.com/Vienna/Studio/1714/harpsichord.html,John -Sankey}, harpsichordist to the internet, is typesetting the complete -@uref{http://www.geocities.com/Vienna/Studio/1714/scarlattidwn.html,sonatas -by Scarlatti}. Jeff Covey, guitar player and overall nice guy, is -putting @uref{http://www4.smart.net/~jcovey/scores/,guitar music} on the -net. The @uref{http://sca.uwaterloo.ca/Mutopia/,Mutopia project} is an -archive of public domain sheet music under construction. Dirk Lattermann -also put some works @uref{http://www.alqualonde.de/lilypond.html,on the -web}. @html diff --git a/VERSION b/VERSION index b235fa36fa..8dbf13f805 100644 --- a/VERSION +++ b/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=109 +PATCH_LEVEL=110 MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a diff --git a/lily/a2-engraver.cc b/lily/a2-engraver.cc index b59595a5aa..d2f56c2ef3 100644 --- a/lily/a2-engraver.cc +++ b/lily/a2-engraver.cc @@ -22,7 +22,6 @@ public: VIRTUAL_COPY_CONS (Translator); protected: - void deprecated_process_music (); virtual void acknowledge_grob (Grob_info); virtual void create_grobs (); @@ -43,7 +42,7 @@ A2_engraver::A2_engraver () void -A2_engraver::deprecated_process_music () +A2_engraver::create_grobs () { if (!to_boolean (get_property ("combineParts"))) return ; @@ -161,12 +160,6 @@ A2_engraver::acknowledge_grob (Grob_info i) } } -void -A2_engraver::create_grobs () -{ - deprecated_process_music (); -} - void A2_engraver::stop_translation_timestep () { diff --git a/lily/align-interface.cc b/lily/align-interface.cc index dfb50d7d26..db7963ad21 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -21,7 +21,7 @@ MAKE_SCHEME_CALLBACK(Align_interface,alignment_callback,2); SCM Align_interface::alignment_callback (SCM element_smob, SCM axis) { - Grob * me = unsmob_element (element_smob); + Grob * me = unsmob_grob (element_smob); Axis ax = (Axis )gh_scm2int (axis); Grob * par = me->parent_l (ax); if (par && !to_boolean (par->get_grob_property ("alignment-done"))) diff --git a/lily/align-note-column-engraver.cc b/lily/align-note-column-engraver.cc index b3dc85e859..5904c223e7 100644 --- a/lily/align-note-column-engraver.cc +++ b/lily/align-note-column-engraver.cc @@ -28,8 +28,8 @@ class Align_note_column_engraver: public Engraver virtual void create_grobs (); virtual void start_translation_timestep (); - virtual void do_creation_processing (); - virtual void do_removal_processing (); + virtual void initialize (); + virtual void finalize (); virtual void acknowledge_grob (Grob_info); public: VIRTUAL_COPY_CONS(Translator); @@ -44,7 +44,7 @@ Align_note_column_engraver::Align_note_column_engraver() } void -Align_note_column_engraver::do_creation_processing () +Align_note_column_engraver::initialize () { align_item_p_ = new Item (get_property ("GraceAlignment")); Grace_align_item::set_interface (align_item_p_); @@ -56,7 +56,7 @@ Align_note_column_engraver::do_creation_processing () } void -Align_note_column_engraver::do_removal_processing () +Align_note_column_engraver::finalize () { SCM al = get_property ("graceAlignPosition"); if (isdir_b (al)) diff --git a/lily/arpeggio.cc b/lily/arpeggio.cc index 8802cb71f3..ba1e4d28ba 100644 --- a/lily/arpeggio.cc +++ b/lily/arpeggio.cc @@ -26,12 +26,12 @@ MAKE_SCHEME_CALLBACK (Arpeggio, brew_molecule, 1); SCM Arpeggio::brew_molecule (SCM smob) { - Grob *me = unsmob_element (smob); + Grob *me = unsmob_grob (smob); Grob * common = me; for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = gh_cdr (s)) { - Grob * stem = unsmob_element (gh_car (s)); + Grob * stem = unsmob_grob (gh_car (s)); common = common->common_refpoint (Staff_symbol_referencer::staff_symbol_l (stem), Y_AXIS); } @@ -49,7 +49,7 @@ Arpeggio::brew_molecule (SCM smob) for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = gh_cdr (s)) { - Grob * stem = unsmob_element (gh_car (s)); + Grob * stem = unsmob_grob (gh_car (s)); Grob * ss = Staff_symbol_referencer::staff_symbol_l (stem); Interval iv =Stem::head_positions (stem); iv *= Staff_symbol::staff_space (ss)/2.0; @@ -90,7 +90,7 @@ MAKE_SCHEME_CALLBACK(Arpeggio, width_callback,2); SCM Arpeggio::width_callback (SCM smob, SCM axis) { - Grob * me = unsmob_element (smob); + Grob * me = unsmob_grob (smob); Axis a = (Axis)gh_scm2int (axis); assert (a == X_AXIS); Molecule arpeggio = Font_interface::get_default_font (me)->find_by_name ("scripts-arpeggio"); diff --git a/lily/auto-beam-engraver.cc b/lily/auto-beam-engraver.cc index ff73ee4c72..d5af0fcf66 100644 --- a/lily/auto-beam-engraver.cc +++ b/lily/auto-beam-engraver.cc @@ -33,14 +33,16 @@ public: protected: virtual void stop_translation_timestep (); virtual void start_translation_timestep (); - virtual void do_removal_processing (); + virtual void finalize (); virtual void acknowledge_grob (Grob_info); virtual void create_grobs (); private: - void begin_beam (); - void consider_end_and_begin (Moment test_mom); + bool test_moment (Direction, Moment); + void consider_begin (Moment); + void consider_end (Moment); Spanner* create_beam_p (); + void begin_beam (); void end_beam (); void junk_beam (); bool same_grace_state_b (Grob* e); @@ -54,7 +56,7 @@ private: Link_array* stem_l_arr_p_; - bool first_b_; + bool count_i_; Moment last_add_mom_; /* @@ -73,7 +75,7 @@ ADD_THIS_TRANSLATOR (Auto_beam_engraver); Auto_beam_engraver::Auto_beam_engraver () { - first_b_ = true; + count_i_ = 0; stem_l_arr_p_ = 0; shortest_mom_ = Moment (1, 8); finished_beam_p_ = 0; @@ -82,14 +84,38 @@ Auto_beam_engraver::Auto_beam_engraver () } /* - rename me: consider_end_or_begin () ? - */ -void -Auto_beam_engraver::consider_end_and_begin (Moment test_mom) + Determine end moment for auto beaming (or begin moment, but mostly + 0==anywhere) In order of increasing priority: + + i. begin anywhere, end at every beat + ii. end * + iii. end + + iv. end * * * + v. end * * + + + Rationale: + + [to be defined in config file] + i. easy catch-all rule + ii. exceptions for time signature + iii. exceptions for time signature, for specific duration type + + [user override] + iv. generic override + v. override for specific duration type + +*/ +bool +Auto_beam_engraver::test_moment (Direction dir, Moment test_mom) { SCM wild = gh_list (ly_symbol2scm ("*"), ly_symbol2scm ("*"), SCM_UNDEFINED); - SCM b = gh_list (ly_symbol2scm ("begin"), SCM_UNDEFINED); - SCM e = gh_list (ly_symbol2scm ("end"), SCM_UNDEFINED); + SCM function; + if (dir == START) + function = gh_list (ly_symbol2scm ("begin"), SCM_UNDEFINED); + else + function = gh_list (ly_symbol2scm ("end"), SCM_UNDEFINED); Moment one_beat = *unsmob_moment( get_property ("beatLength")); int num = *unsmob_moment (get_property("measureLength")) / one_beat; @@ -101,112 +127,82 @@ Auto_beam_engraver::consider_end_and_begin (Moment test_mom) SCM settings = get_property ("autoBeamSettings"); - /* - Determine end moment for auto beaming (and begin, mostly 0==anywhere) - In order of increasing priority: - - i. every beat - ii. end * - iii. end - - iv. end * * * - v. end * * - - - Rationale: - - [to be defined in config file] - i. easy catch-all rule - ii. exceptions for time signature - iii. exceptions for time signature, for specific duration type - - [user override] - iv. generic override - v. override for specific duration type - - */ + /* first guess */ - - /* - first guess: begin beam at any position - */ - Moment begin_mom (0); - /* - first guess: end beam at end of beat - */ - SCM one (get_property ("beatLength")); - - Moment end_mom; - if (unsmob_moment (one)) - end_mom = *unsmob_moment (one); - - /* - second guess: property generic time exception - */ - SCM begin = gh_assoc (gh_append3 (b, wild, time), settings); + /* begin beam at any position + (and fallback for end) */ + Moment moment (0); - if (begin != SCM_BOOL_F && unsmob_moment (gh_cdr (begin))) - begin_mom = * unsmob_moment (gh_cdr (begin)); - - SCM end = gh_assoc (gh_append3 (e, wild, time), settings); - if (end != SCM_BOOL_F && unsmob_moment (gh_cdr (end))) - end_mom = * unsmob_moment (gh_cdr (end)); + /* end beam at end of beat */ + if (dir == STOP) + { + SCM beat (get_property ("beatLength")); + + if (unsmob_moment (beat)) + moment = *unsmob_moment (beat); + } - /* - third guess: property time exception, specific for duration type - */ - SCM begin_mult = gh_assoc (gh_append3 (b, type, time), settings); - if (begin_mult != SCM_BOOL_F && unsmob_moment (gh_cdr (begin_mult))) - begin_mom = * unsmob_moment (gh_cdr (begin_mult)); + /* second guess: property generic time exception */ + SCM m = gh_assoc (gh_append3 (function, wild, time), settings); - SCM end_mult = gh_assoc (gh_append3 (e, type, time), settings); - if (end_mult != SCM_BOOL_F && unsmob_moment (gh_cdr (end_mult))) - end_mom = * unsmob_moment (gh_cdr (end_mult)); - - /* - fourth guess [user override]: property plain generic - */ - begin = gh_assoc (gh_append3 (b, wild, wild), settings); - if (begin != SCM_BOOL_F && unsmob_moment (gh_cdr (begin))) - begin_mom = * unsmob_moment (gh_cdr (begin)); - - end = gh_assoc (gh_append3 (e, wild, wild), settings); - if (end != SCM_BOOL_F && unsmob_moment (gh_cdr (end))) - end_mom = * unsmob_moment (gh_cdr (end)); - - /* - fifth guess [user override]: property plain, specific for duration type - */ - begin_mult = gh_assoc (gh_append3 (b, type, wild), settings); - if (begin_mult != SCM_BOOL_F && unsmob_moment (gh_cdr (begin_mult))) - begin_mom = * unsmob_moment (gh_cdr (begin_mult)); + if (m != SCM_BOOL_F && unsmob_moment (gh_cdr (m))) + moment = * unsmob_moment (gh_cdr (m)); + + /* third guess: property time exception, specific for duration type */ + m = gh_assoc (gh_append3 (function, type, time), settings); + if (m != SCM_BOOL_F && unsmob_moment (gh_cdr (m))) + moment = * unsmob_moment (gh_cdr (m)); + + /* fourth guess [user override]: property plain generic */ + m = gh_assoc (gh_append3 (function, wild, wild), settings); + if (m != SCM_BOOL_F && unsmob_moment (gh_cdr (m))) + moment = * unsmob_moment (gh_cdr (m)); + + /* fifth guess [user override]: property plain, specific for duration type */ + m = gh_assoc (gh_append3 (function, type, wild), settings); + if (m != SCM_BOOL_F && unsmob_moment (gh_cdr (m))) + moment = * unsmob_moment (gh_cdr (m)); - end_mult = gh_assoc (gh_append3 (e, type, wild), settings); - if (end_mult != SCM_BOOL_F && unsmob_moment (gh_cdr (end_mult))) - end_mom = * unsmob_moment (gh_cdr (end_mult)); - Rational r; - if (end_mom) - r = unsmob_moment (get_property ("measurePosition"))->mod_rat (end_mom); + if (moment) + r = unsmob_moment (get_property ("measurePosition"))->mod_rat (moment); else - r = Moment (1); - - if (stem_l_arr_p_ && stem_l_arr_p_->size () > 1 && !r) - end_beam (); + { + if (dir == START) + /* if undefined, starting is ok */ + r = 0; + else + /* but ending is not */ + r = 1; + } + return !r; +} - /* - Allow already started autobeam to end - */ - SCM on = get_property ("noAutoBeaming"); - if (to_boolean (on)) - return; +void +Auto_beam_engraver::consider_begin (Moment test_mom) +{ + bool off = to_boolean (get_property ("noAutoBeaming")); + if (!stem_l_arr_p_ && ! off) + { + bool b = test_moment (START, test_mom); + if (b) + begin_beam (); + } +} - if (begin_mom) - r = unsmob_moment (get_property ("measurePosition"))->mod_rat (begin_mom); - if (!stem_l_arr_p_ && (!begin_mom || !r)) - begin_beam (); +void +Auto_beam_engraver::consider_end (Moment test_mom) +{ + if (stem_l_arr_p_ && stem_l_arr_p_->size () > 1) + { + /* Allow already started autobeam to end: + don't check for noAutoBeaming */ + bool b = test_moment (STOP, test_mom); + if (b) + end_beam (); + } } - + Spanner* Auto_beam_engraver::create_beam_p () { @@ -292,7 +288,7 @@ Auto_beam_engraver::typeset_beam () void Auto_beam_engraver::start_translation_timestep () { - first_b_ =true; + count_i_ = 0; /* don't beam over skips */ @@ -314,7 +310,7 @@ Auto_beam_engraver::stop_translation_timestep () } void -Auto_beam_engraver::do_removal_processing () +Auto_beam_engraver::finalize () { /* finished beams may be typeset */ typeset_beam (); @@ -390,26 +386,36 @@ Auto_beam_engraver::acknowledge_grob (Grob_info info) return; } - /* - if shortest duration would change - reconsider ending/starting beam first. - */ Moment dur = unsmob_duration (rhythmic_req->get_mus_property ("duration"))->length_mom (); - consider_end_and_begin (dur); - if (!stem_l_arr_p_) - return; + /* FIXME: + + This comment has been here since long: + + if shortest duration would change + consider ending and beginning beam first. + + but the code didn't match: */ +#if 1 + consider_end (dur); + consider_begin (dur); + + if (dur < shortest_mom_) + shortest_mom_ = dur; +#else + /* I very much suspect that we wanted: */ + + consider_end (shortest_mom_); if (dur < shortest_mom_) { shortest_mom_ = dur; - if (stem_l_arr_p_->size ()) - { - shortest_mom_ = dur; - consider_end_and_begin (shortest_mom_); - if (!stem_l_arr_p_) - return; - } + consider_end (shortest_mom_); } + consider_begin (shortest_mom_); +#endif + + if (!stem_l_arr_p_) + return; Moment now = now_mom (); @@ -424,12 +430,12 @@ Auto_beam_engraver::acknowledge_grob (Grob_info info) void Auto_beam_engraver::create_grobs () { - if (first_b_) + if (!count_i_) { - first_b_ = false; - consider_end_and_begin (shortest_mom_); + consider_end (shortest_mom_); + consider_begin (shortest_mom_); } - else + else if (count_i_ > 1) { if (stem_l_arr_p_) { @@ -444,5 +450,11 @@ Auto_beam_engraver::create_grobs () junk_beam (); } } - } + } + + /* + count_i_++ -> + + auto-beam-engraver.cc:459: warning: value computed is not used (gcc: 2.96) */ + count_i_ = count_i_ + 1; } diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc index 2c0e62a630..38142ee4e9 100644 --- a/lily/axis-group-engraver.cc +++ b/lily/axis-group-engraver.cc @@ -21,8 +21,8 @@ class Axis_group_engraver : public Engraver protected: Spanner *staffline_p_; Link_array elts_; - virtual void do_creation_processing(); - virtual void do_removal_processing(); + virtual void initialize(); + virtual void finalize(); virtual void acknowledge_grob (Grob_info); virtual void create_grobs (); virtual Spanner* get_spanner_p () const; @@ -40,13 +40,13 @@ Axis_group_engraver::Axis_group_engraver () } void -Axis_group_engraver::do_creation_processing () +Axis_group_engraver::initialize () { staffline_p_ = get_spanner_p (); Axis_group_interface::set_interface (staffline_p_); Axis_group_interface::set_axes (staffline_p_, Y_AXIS, Y_AXIS); - Grob * it = unsmob_element (get_property ("currentCommandColumn")); + Grob * it = unsmob_grob (get_property ("currentCommandColumn")); staffline_p_->set_bound(LEFT,it); @@ -60,7 +60,7 @@ Axis_group_engraver::get_spanner_p () const } void -Axis_group_engraver::do_removal_processing () +Axis_group_engraver::finalize () { String type = daddy_grav_l ()->type_str_ ; SCM dims = get_property ((type + "VerticalExtent").ch_C()); @@ -82,7 +82,7 @@ Axis_group_engraver::do_removal_processing () && gh_number_p (gh_cdr (dims))) staffline_p_->set_grob_property ("extra-extent-Y", dims); - Grob * it = unsmob_element (get_property ("currentCommandColumn")); + Grob * it = unsmob_grob (get_property ("currentCommandColumn")); staffline_p_->set_bound(RIGHT,it); diff --git a/lily/axis-group-interface.cc b/lily/axis-group-interface.cc index 4c2b849aea..67beabd1c7 100644 --- a/lily/axis-group-interface.cc +++ b/lily/axis-group-interface.cc @@ -43,7 +43,7 @@ Axis_group_interface::relative_group_extent (Axis a, Grob *common, SCM elts) Interval r; for (SCM s = elts; gh_pair_p (s); s = gh_cdr (s)) { - Grob * se = unsmob_element (gh_car (s)); + Grob * se = unsmob_grob (gh_car (s)); Interval dims = se->extent (common, a); if (!dims.empty_b ()) r.unite (dims); @@ -55,14 +55,14 @@ MAKE_SCHEME_CALLBACK(Axis_group_interface,group_extent_callback,2); SCM Axis_group_interface::group_extent_callback (SCM element_smob, SCM scm_axis) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (scm_axis); Grob * common =(Grob*) me; for (SCM s = me->get_grob_property ("elements"); gh_pair_p (s); s = gh_cdr (s)) { - Grob * se = unsmob_element (gh_car (s)); + Grob * se = unsmob_grob (gh_car (s)); common = se->common_refpoint (common, a); } @@ -118,7 +118,7 @@ Axis_group_interface::get_children (Grob*me) for (SCM ep = me->get_grob_property ("elements"); gh_pair_p (ep); ep = gh_cdr (ep)) { - Grob* e = unsmob_element (gh_car (ep)); + Grob* e = unsmob_grob (gh_car (ep)); if (e) childs.concat (Axis_group_interface::get_children (e)); } diff --git a/lily/bar-engraver.cc b/lily/bar-engraver.cc index 4fad1f37c5..32bd40368e 100644 --- a/lily/bar-engraver.cc +++ b/lily/bar-engraver.cc @@ -27,8 +27,7 @@ public: void request_bar (String type_str); protected: - virtual void do_removal_processing (); - void deprecated_process_music(); + virtual void finalize (); virtual void stop_translation_timestep(); virtual void create_grobs (); @@ -60,7 +59,7 @@ Bar_engraver::create_bar () } void -Bar_engraver::do_removal_processing () +Bar_engraver::finalize () { typeset_bar (); } @@ -70,7 +69,7 @@ Bar_engraver::do_removal_processing () modify whichBar in deprecated_process_music () be typeset */ void -Bar_engraver::deprecated_process_music() +Bar_engraver::create_grobs () { if (!bar_p_ && gh_string_p (get_property ("whichBar"))) { @@ -78,12 +77,6 @@ Bar_engraver::deprecated_process_music() } } -void -Bar_engraver::create_grobs () -{ - deprecated_process_music (); -} - void Bar_engraver::typeset_bar () { diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc index 5a32db3481..ce129ffd9b 100644 --- a/lily/bar-number-engraver.cc +++ b/lily/bar-number-engraver.cc @@ -26,17 +26,17 @@ protected: protected: virtual void stop_translation_timestep (); virtual void acknowledge_grob (Grob_info); - virtual void do_creation_processing (); + virtual void initialize (); virtual void create_grobs (); void create_items(); - void deprecated_process_music (); + public: VIRTUAL_COPY_CONS(Translator); Bar_number_engraver(); }; void -Bar_number_engraver::deprecated_process_music () +Bar_number_engraver::create_grobs () { // todo include (&&!time->cadenza_b_ ) SCM bn = get_property("currentBarNumber"); @@ -54,13 +54,6 @@ Bar_number_engraver::deprecated_process_music () } } -void -Bar_number_engraver::create_grobs () -{ - deprecated_process_music (); -} - - ADD_THIS_TRANSLATOR(Bar_number_engraver); Bar_number_engraver::Bar_number_engraver () @@ -69,7 +62,7 @@ Bar_number_engraver::Bar_number_engraver () } void -Bar_number_engraver::do_creation_processing () +Bar_number_engraver::initialize () { /* ugh: need to share code with mark_engraver diff --git a/lily/bar.cc b/lily/bar.cc index 6923ad9180..b74122d072 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -26,7 +26,7 @@ MAKE_SCHEME_CALLBACK(Bar,brew_molecule,1); SCM Bar::brew_molecule (SCM smob) { - Grob * me = unsmob_element (smob); + Grob * me = unsmob_grob (smob); SCM s = me->get_grob_property ("glyph"); SCM barsiz_proc = me->get_grob_property ("barsize-procedure"); @@ -128,7 +128,7 @@ MAKE_SCHEME_CALLBACK(Bar,before_line_breaking ,1); SCM Bar::before_line_breaking (SCM smob) { - Grob*me=unsmob_element (smob); + Grob*me=unsmob_grob (smob); Item * item = dynamic_cast (me); SCM g = me->get_grob_property ("glyph"); @@ -192,7 +192,7 @@ MAKE_SCHEME_CALLBACK(Bar,get_staff_bar_size,1); SCM Bar::get_staff_bar_size (SCM smob) { - Grob*me = unsmob_element (smob); + Grob*me = unsmob_grob (smob); Real ss = Staff_symbol_referencer::staff_space (me); SCM size = me->get_grob_property ("bar-size"); if (gh_number_p (size)) diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index a49a2bb1f4..80b812b951 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -44,11 +44,11 @@ class Beam_engraver : public Engraver protected: virtual void stop_translation_timestep (); virtual void start_translation_timestep (); - virtual void do_removal_processing (); + virtual void finalize (); virtual void create_grobs (); virtual void acknowledge_grob (Grob_info); virtual bool try_music (Music*); - void deprecated_process_music (); + public: Beam_engraver (); VIRTUAL_COPY_CONS (Translator); @@ -116,7 +116,7 @@ Beam_engraver::set_melisma (bool m) void -Beam_engraver::deprecated_process_music () +Beam_engraver::create_grobs () { if (reqs_drul_[STOP]) { @@ -211,7 +211,7 @@ Beam_engraver::stop_translation_timestep () } void -Beam_engraver::do_removal_processing () +Beam_engraver::finalize () { typeset_beam (); if (beam_p_) @@ -228,13 +228,6 @@ Beam_engraver::do_removal_processing () } } -void -Beam_engraver::create_grobs () -{ - deprecated_process_music (); -} - - void Beam_engraver::acknowledge_grob (Grob_info info) { diff --git a/lily/beam.cc b/lily/beam.cc index 94dad6e6e5..25f90cb6eb 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -55,7 +55,7 @@ Beam::get_multiplicity (Grob*me) int m = 0; for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = gh_cdr (s)) { - Grob * sc = unsmob_element (gh_car (s)); + Grob * sc = unsmob_grob (gh_car (s)); if (Stem::has_interface (sc)) m = m >? Stem::beam_count (sc,LEFT) >? Stem::beam_count (sc,RIGHT); @@ -75,7 +75,7 @@ MAKE_SCHEME_CALLBACK(Beam,before_line_breaking,1); SCM Beam::before_line_breaking (SCM smob) { - Grob * me = unsmob_element (smob); + Grob * me = unsmob_grob (smob); // Why? if (visible_stem_count (me) < 2) @@ -274,7 +274,7 @@ MAKE_SCHEME_CALLBACK(Beam,after_line_breaking,1); SCM Beam::after_line_breaking (SCM smob) { - Grob * me = unsmob_element (smob); + Grob * me = unsmob_grob (smob); /* first, calculate y, dy */ Real y, dy; @@ -766,7 +766,7 @@ MAKE_SCHEME_CALLBACK(Beam,brew_molecule,1); SCM Beam::brew_molecule (SCM smob) { - Grob * me =unsmob_element (smob); + Grob * me =unsmob_grob (smob); Molecule mol; if (!gh_pair_p (me->get_grob_property ("stems"))) @@ -890,16 +890,16 @@ MAKE_SCHEME_CALLBACK(Beam,rest_collision_callback,2); SCM Beam::rest_collision_callback (SCM element_smob, SCM axis) { - Grob *rest = unsmob_element (element_smob); + Grob *rest = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == Y_AXIS); - Grob * st = unsmob_element (rest->get_grob_property ("stem")); + Grob * st = unsmob_grob (rest->get_grob_property ("stem")); Grob * stem = st; if (!stem) return gh_double2scm (0.0); - Grob * beam = unsmob_element (stem->get_grob_property ("beam")); + Grob * beam = unsmob_grob (stem->get_grob_property ("beam")); if (!beam || !Beam::has_interface (beam) || !Beam::visible_stem_count (beam)) return gh_double2scm (0.0); diff --git a/lily/break-align-engraver.cc b/lily/break-align-engraver.cc index aee231f3cc..1fdf8ea46e 100644 --- a/lily/break-align-engraver.cc +++ b/lily/break-align-engraver.cc @@ -19,7 +19,7 @@ class Break_align_engraver : public Engraver Item *align_l_; Protected_scm column_alist_; protected: - virtual void do_removal_processing (); + virtual void finalize (); virtual void acknowledge_grob(Grob_info i); virtual void stop_translation_timestep (); void add_column (SCM); @@ -36,13 +36,13 @@ ADD_THIS_TRANSLATOR(Break_align_engraver); void Break_align_engraver::add_column (SCM smob) { - Grob * e = unsmob_element (smob); + Grob * e = unsmob_grob (smob); Break_align_interface::add_element (align_l_,e); typeset_grob (e); } void -Break_align_engraver::do_removal_processing () +Break_align_engraver::finalize () { column_alist_ = SCM_EOL; } @@ -137,7 +137,7 @@ Break_align_engraver::acknowledge_grob (Grob_info inf) if (s != SCM_BOOL_F) { - Grob *e = unsmob_element (gh_cdr(s)); + Grob *e = unsmob_grob (gh_cdr(s)); group = dynamic_cast (e); } else diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc index b900f601b7..38705e1d74 100644 --- a/lily/break-align-item.cc +++ b/lily/break-align-item.cc @@ -26,7 +26,7 @@ MAKE_SCHEME_CALLBACK(Break_align_interface,before_line_breaking,1); SCM Break_align_interface::before_line_breaking (SCM smob) { - Grob* me = unsmob_element (smob); + Grob* me = unsmob_grob (smob); do_alignment (me); return SCM_UNSPECIFIED; } @@ -35,7 +35,7 @@ MAKE_SCHEME_CALLBACK(Break_align_interface,alignment_callback,2); SCM Break_align_interface::alignment_callback (SCM element_smob, SCM axis) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == X_AXIS); @@ -53,7 +53,7 @@ MAKE_SCHEME_CALLBACK(Break_align_interface,self_align_callback,2); SCM Break_align_interface::self_align_callback (SCM element_smob, SCM axis) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == X_AXIS); diff --git a/lily/breathing-sign-engraver.cc b/lily/breathing-sign-engraver.cc index 5a24b9c6c9..5e1c08fa2f 100644 --- a/lily/breathing-sign-engraver.cc +++ b/lily/breathing-sign-engraver.cc @@ -29,8 +29,7 @@ public: protected: virtual bool try_music (Music *req_l); - void deprecated_process_music(); - + virtual void create_grobs (); virtual void stop_translation_timestep(); virtual void start_translation_timestep(); @@ -58,7 +57,7 @@ Breathing_sign_engraver::try_music (Music*r_l) } void -Breathing_sign_engraver::deprecated_process_music() +Breathing_sign_engraver::create_grobs () { if(breathing_sign_req_l_ && ! breathing_sign_p_) { @@ -68,6 +67,7 @@ Breathing_sign_engraver::deprecated_process_music() Breathing_sign::set_interface (breathing_sign_p_); announce_grob (breathing_sign_p_, breathing_sign_req_l_); + breathing_sign_req_l_ = 0; } } diff --git a/lily/breathing-sign.cc b/lily/breathing-sign.cc index 2f131e5be8..06be981cf1 100644 --- a/lily/breathing-sign.cc +++ b/lily/breathing-sign.cc @@ -24,7 +24,7 @@ MAKE_SCHEME_CALLBACK(Breathing_sign,brew_molecule,1); SCM Breathing_sign::brew_molecule (SCM smob) { - Grob * me = unsmob_element (smob); + Grob * me = unsmob_grob (smob); Real space = Staff_symbol_referencer::staff_space (me); // todo: cfg'able. @@ -38,7 +38,7 @@ MAKE_SCHEME_CALLBACK(Breathing_sign,offset_callback,2); SCM Breathing_sign::offset_callback (SCM element_smob, SCM ) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Direction d = Directional_element_interface::get (me); if (!d) diff --git a/lily/chord-name-engraver.cc b/lily/chord-name-engraver.cc index 7b72e3bc26..a8143f1845 100644 --- a/lily/chord-name-engraver.cc +++ b/lily/chord-name-engraver.cc @@ -28,7 +28,7 @@ public: protected: virtual void stop_translation_timestep (); virtual void acknowledge_grob (Grob_info i); - void deprecated_process_music (); + virtual void create_grobs (); virtual bool try_music (Music *); private: @@ -77,24 +77,6 @@ Chord_name_engraver::try_music (Music* m) return false; } -/* Uh, if we do acknowledge_grob, shouldn't we postpone - deprecated_process_music until do_process_acknowlegded? - - Sigh, I can *never* remember how this works, can't we - possibly-please just number these functions: - - do_creation0 - - post_move1 - try_music2 - deprecated_process_music3 (or is it acknowledge_grob3 ?) - acknowledge_grob4 - - do_pre_move9 - - do_removal99 - - and what was the deal with this ``do'' prefix again? */ void Chord_name_engraver::acknowledge_grob (Grob_info i) { @@ -103,23 +85,10 @@ Chord_name_engraver::acknowledge_grob (Grob_info i) } void -Chord_name_engraver::deprecated_process_music () +Chord_name_engraver::create_grobs () { if (!chord_name_p_ && gh_car (chord_) != SCM_EOL) { -#if 0 - bool find_inversion_b = false; - SCM chord_inversion = get_property ("chordInversion"); - if (gh_boolean_p (chord_inversion)) - find_inversion_b = gh_scm2bool (chord_inversion); - - chord_ = Chord::pitches_and_requests_to_chord (pitches_, - inversion_, - bass_, - find_inversion_b); - -#endif - chord_name_p_ = new Item (get_property ("ChordName")); chord_name_p_->set_grob_property ("chord", chord_); announce_grob (chord_name_p_, 0); diff --git a/lily/chord-name.cc b/lily/chord-name.cc index 804b3fb2c8..dd06b0bbdf 100644 --- a/lily/chord-name.cc +++ b/lily/chord-name.cc @@ -20,7 +20,7 @@ MAKE_SCHEME_CALLBACK (Chord_name,after_line_breaking,1); SCM Chord_name::after_line_breaking (SCM smob) { - Item* me = dynamic_cast (unsmob_element (smob)); + Item* me = dynamic_cast (unsmob_grob (smob)); assert (me); SCM s = me->get_grob_property ("begin-of-line-visible"); @@ -42,7 +42,7 @@ MAKE_SCHEME_CALLBACK (Chord_name,brew_molecule,1); SCM Chord_name::brew_molecule (SCM smob) { - Grob *me = unsmob_element (smob); + Grob *me = unsmob_grob (smob); SCM style = me->get_grob_property ("style"); if (!gh_symbol_p (style)) diff --git a/lily/chord-tremolo-engraver.cc b/lily/chord-tremolo-engraver.cc index a71c7f1041..4c9a9e01a1 100644 --- a/lily/chord-tremolo-engraver.cc +++ b/lily/chord-tremolo-engraver.cc @@ -57,8 +57,7 @@ protected: Spanner * finished_beam_p_; protected: - virtual void do_removal_processing(); - void deprecated_process_music(); + virtual void finalize(); virtual bool try_music (Music*); virtual void acknowledge_grob (Grob_info); virtual void stop_translation_timestep(); @@ -95,12 +94,6 @@ Chord_tremolo_engraver::try_music (Music * m) void Chord_tremolo_engraver::create_grobs () -{ - deprecated_process_music (); -} - -void -Chord_tremolo_engraver::deprecated_process_music () { if (repeat_ && !beam_p_) { @@ -118,7 +111,7 @@ Chord_tremolo_engraver::deprecated_process_music () void -Chord_tremolo_engraver::do_removal_processing () +Chord_tremolo_engraver::finalize () { typeset_beam (); if (beam_p_) diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc index b0e1408229..06758d2629 100644 --- a/lily/clef-engraver.cc +++ b/lily/clef-engraver.cc @@ -33,9 +33,7 @@ public: Direction octave_dir_; protected: - void deprecated_process_music (); virtual void stop_translation_timestep (); - virtual void do_creation_processing (); virtual void start_translation_timestep (); virtual void create_grobs (); virtual void acknowledge_grob (Grob_info); @@ -114,7 +112,7 @@ Clef_engraver::set_glyph () void Clef_engraver::acknowledge_grob (Grob_info info) { - deprecated_process_music (); + create_grobs (); Item * item =dynamic_cast (info.elem_l_); if (item) { @@ -145,13 +143,6 @@ Clef_engraver::acknowledge_grob (Grob_info info) } } -void -Clef_engraver::do_creation_processing () -{ -} - - - void Clef_engraver::create_clef () { @@ -185,12 +176,6 @@ Clef_engraver::create_clef () void Clef_engraver::create_grobs () -{ - deprecated_process_music (); -} - -void -Clef_engraver::deprecated_process_music () { SCM glyph = get_property ("clefGlyph"); SCM clefpos = get_property ("clefPosition"); diff --git a/lily/clef-item.cc b/lily/clef-item.cc index 528fc7dbf7..0481d0b74b 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -20,7 +20,7 @@ MAKE_SCHEME_CALLBACK(Clef,before_line_breaking,1); SCM Clef::before_line_breaking (SCM smob) { - Item * s = dynamic_cast (unsmob_element (smob)); + Item * s = dynamic_cast (unsmob_grob (smob)); SCM glyph = s->get_grob_property ("glyph"); @@ -62,7 +62,7 @@ MAKE_SCHEME_CALLBACK(Clef,brew_molecule,1) SCM Clef::brew_molecule (SCM smob) { - Grob * sc = unsmob_element (smob); + Grob * sc = unsmob_grob (smob); SCM glyph = sc->get_grob_property ("glyph"); if (gh_string_p (glyph)) { diff --git a/lily/collision.cc b/lily/collision.cc index 8bd1bc186c..8d5448b128 100644 --- a/lily/collision.cc +++ b/lily/collision.cc @@ -18,7 +18,7 @@ MAKE_SCHEME_CALLBACK(Collision,force_shift_callback,2); SCM Collision::force_shift_callback (SCM element_smob, SCM axis) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == X_AXIS); @@ -26,7 +26,7 @@ Collision::force_shift_callback (SCM element_smob, SCM axis) /* ugh. the way DONE is done is not clean */ - if (!unsmob_element (me->get_grob_property ("done"))) + if (!unsmob_grob (me->get_grob_property ("done"))) { me->set_grob_property ("done", me->self_scm ()); do_shifts (me); @@ -51,7 +51,7 @@ Collision::do_shifts(Grob* me) for (; gh_pair_p (hand); hand =gh_cdr (hand)) { - Grob * s = unsmob_element (gh_caar (hand)); + Grob * s = unsmob_grob (gh_caar (hand)); Real amount = gh_scm2double (gh_cdar (hand)); s->translate_axis (amount *wid, X_AXIS); @@ -59,7 +59,7 @@ Collision::do_shifts(Grob* me) } for (; gh_pair_p (autos); autos =gh_cdr (autos)) { - Grob * s = unsmob_element (gh_caar (autos)); + Grob * s = unsmob_grob (gh_caar (autos)); Real amount = gh_scm2double (gh_cdar (autos)); if (!done.find_l (s)) @@ -84,7 +84,7 @@ Collision::automatic_shift (Grob *me) { SCM car = gh_car (s); - Grob * se = unsmob_element (car); + Grob * se = unsmob_grob (car); if (Note_column::has_interface (se)) clash_groups[Note_column::dir (se)].push (se); } @@ -209,7 +209,7 @@ Collision::forced_shift (Grob *me) SCM s = me->get_grob_property ("elements"); for (; gh_pair_p (s); s = gh_cdr (s)) { - Grob * se = unsmob_element (gh_car (s)); + Grob * se = unsmob_grob (gh_car (s)); SCM force = se->remove_grob_property ("force-hshift"); if (gh_number_p (force)) diff --git a/lily/command-request.cc b/lily/command-request.cc index 0b615681a4..d292d55027 100644 --- a/lily/command-request.cc +++ b/lily/command-request.cc @@ -33,7 +33,7 @@ Tempo_req::do_equal_b (Request const *r) const { Tempo_req const *t = dynamic_cast (r); - return t&& t->dur_.length_mom ()== dur_.length_mom (); + return t; // && t->dur_.length_mom ()== dur_.length_mom (); // && metronome_i_ == t->metronome_i_; } diff --git a/lily/crescendo.cc b/lily/crescendo.cc index c578c323c3..897f6861d6 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -20,7 +20,7 @@ MAKE_SCHEME_CALLBACK (Hairpin, brew_molecule, 1); SCM Hairpin::brew_molecule (SCM smob) { - Grob *me= unsmob_element (smob); + Grob *me= unsmob_grob (smob); Spanner *span = dynamic_cast(me); Real line = me->paper_l ()->get_var ("stafflinethickness"); diff --git a/lily/custos-engraver.cc b/lily/custos-engraver.cc index 63ae946016..aed720a86f 100644 --- a/lily/custos-engraver.cc +++ b/lily/custos-engraver.cc @@ -26,10 +26,9 @@ public: Custos_engraver(); virtual void start_translation_timestep(); virtual void acknowledge_grob(Grob_info); - void deprecated_process_music (); virtual void create_grobs (); virtual void stop_translation_timestep (); - virtual void do_removal_processing (); + virtual void finalize (); VIRTUAL_COPY_CONS(Translator); private: @@ -67,16 +66,6 @@ Custos_engraver::start_translation_timestep () } -/* - TODO check if this works with forced bar lines? - */ -void -Custos_engraver::deprecated_process_music () -{ - if (gh_string_p (get_property( "whichBar"))) - custos_permitted = true; -} - void Custos_engraver::acknowledge_grob (Grob_info info) { @@ -106,8 +95,9 @@ Custos_engraver::acknowledge_grob (Grob_info info) void Custos_engraver::create_grobs () { - deprecated_process_music (); - + if (gh_string_p (get_property( "whichBar"))) + custos_permitted = true; + if (custos_permitted) { for (int i = pitches_.size (); i--;) @@ -136,7 +126,7 @@ Custos_engraver::create_custos() } void -Custos_engraver::do_removal_processing () +Custos_engraver::finalize () { for (int i = custos_arr_.size (); i--;) { diff --git a/lily/custos.cc b/lily/custos.cc index e718085906..ef3399d7ec 100644 --- a/lily/custos.cc +++ b/lily/custos.cc @@ -70,7 +70,8 @@ * * (3) The thickness of the ledger line is fixed (limitation). */ -Molecule create_ledger_line (Interval x_extent, Grob *me) +Molecule +Custos::create_ledger_line (Interval x_extent, Grob *me) { Molecule line; Molecule slice = Font_interface::get_default_font (me)->find_by_name ("noteheads-ledgerending"); @@ -105,7 +106,8 @@ Molecule create_ledger_line (Interval x_extent, Grob *me) return line; } -void add_streepjes(Grob* me, +void +Custos::add_streepjes(Grob* me, int pos, int interspaces, Molecule* custos_p_) @@ -139,7 +141,7 @@ MAKE_SCHEME_CALLBACK(Custos,brew_molecule,1); SCM Custos::brew_molecule (SCM smob) { - Item *me = (Item *)unsmob_element (smob); + Item *me = (Item *)unsmob_grob (smob); SCM scm_style = me->get_grob_property ("style"); if (gh_symbol_p (scm_style)) diff --git a/lily/dot-column-engraver.cc b/lily/dot-column-engraver.cc index fa74004768..ca52e1273a 100644 --- a/lily/dot-column-engraver.cc +++ b/lily/dot-column-engraver.cc @@ -46,7 +46,7 @@ Dot_column_engraver::stop_translation_timestep () void Dot_column_engraver::acknowledge_grob (Grob_info info) { - Grob *d = unsmob_element (info.elem_l_->get_grob_property ("dot")); + Grob *d = unsmob_grob (info.elem_l_->get_grob_property ("dot")); if (d) { if (!dotcol_p_) diff --git a/lily/dot-column.cc b/lily/dot-column.cc index 8c4e900eb3..014af080bf 100644 --- a/lily/dot-column.cc +++ b/lily/dot-column.cc @@ -50,7 +50,7 @@ MAKE_SCHEME_CALLBACK(Dot_column,force_shift_callback,2); SCM Dot_column::force_shift_callback (SCM element_smob, SCM axis) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == Y_AXIS); me = me->parent_l (X_AXIS); @@ -65,7 +65,7 @@ Dot_column::do_shifts (SCM l) Link_array dots; while (gh_pair_p (l)) { - dots.push (unsmob_element (gh_car (l))); + dots.push (unsmob_grob (gh_car (l))); l = gh_cdr (l); } @@ -121,7 +121,7 @@ Dot_column::has_interface (Grob*m) void Dot_column::add_head (Grob * me, Grob *rh) { - Grob * d = unsmob_element (rh->get_grob_property ("dot")); + Grob * d = unsmob_grob (rh->get_grob_property ("dot")); if (d) { Side_position::add_support (me,rh); diff --git a/lily/dots.cc b/lily/dots.cc index 1a695c1a12..4dc6ab4877 100644 --- a/lily/dots.cc +++ b/lily/dots.cc @@ -20,7 +20,7 @@ MAKE_SCHEME_CALLBACK(Dots,quantised_position_callback,2); SCM Dots::quantised_position_callback (SCM element_smob, SCM axis) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == Y_AXIS); @@ -42,7 +42,7 @@ MAKE_SCHEME_CALLBACK(Dots,brew_molecule,1); SCM Dots::brew_molecule (SCM d) { - Grob *sc = unsmob_element (d); + Grob *sc = unsmob_grob (d); Molecule mol; SCM c = sc->get_grob_property ("dot-count"); diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index 881eb90e57..7b5b536113 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -54,10 +54,9 @@ public: Dynamic_engraver (); protected: - virtual void do_removal_processing (); + virtual void finalize (); virtual void acknowledge_grob (Grob_info); virtual bool try_music (Music *req_l); - void deprecated_process_music (); virtual void stop_translation_timestep (); virtual void create_grobs (); virtual void start_translation_timestep (); @@ -122,7 +121,7 @@ Dynamic_engraver::try_music (Music * m) } void -Dynamic_engraver::deprecated_process_music () +Dynamic_engraver::create_grobs () { if (accepted_spanreqs_drul_[START] || accepted_spanreqs_drul_[STOP] || script_req_l_) @@ -206,7 +205,7 @@ Dynamic_engraver::deprecated_process_music () else { assert (!finished_cresc_p_); - Grob* cc = unsmob_element (get_property ("currentMusicalColumn")); + Grob* cc = unsmob_grob (get_property ("currentMusicalColumn")); cresc_p_->set_bound (RIGHT, cc); @@ -269,7 +268,7 @@ Dynamic_engraver::deprecated_process_music () } cresc_p_->set_bound (LEFT, script_p_ ? script_p_ - : unsmob_element (get_property ("currentMusicalColumn"))); + : unsmob_grob (get_property ("currentMusicalColumn"))); Axis_group_interface::add_element (line_spanner_, cresc_p_); announce_grob (cresc_p_, accepted_spanreqs_drul_[START]); @@ -287,13 +286,7 @@ Dynamic_engraver::stop_translation_timestep () } void -Dynamic_engraver::create_grobs () -{ - deprecated_process_music (); -} - -void -Dynamic_engraver::do_removal_processing () +Dynamic_engraver::finalize () { typeset_all (); if (line_spanner_) @@ -317,7 +310,7 @@ Dynamic_engraver::typeset_all () { finished_cresc_p_->set_bound (RIGHT, script_p_ ? script_p_ - : unsmob_element (get_property ("currentMusicalColumn"))); + : unsmob_grob (get_property ("currentMusicalColumn"))); typeset_grob (finished_cresc_p_); finished_cresc_p_ =0; diff --git a/lily/dynamic-performer.cc b/lily/dynamic-performer.cc index 552a769826..d69c38f0f5 100644 --- a/lily/dynamic-performer.cc +++ b/lily/dynamic-performer.cc @@ -25,11 +25,9 @@ public: VIRTUAL_COPY_CONS (Translator); Dynamic_performer (); - ~Dynamic_performer (); protected: virtual bool try_music (Music* req_l); - void deprecated_process_music (); virtual void stop_translation_timestep (); virtual void create_grobs (); @@ -46,13 +44,8 @@ Dynamic_performer::Dynamic_performer () audio_p_ = 0; } -Dynamic_performer::~Dynamic_performer () -{ -} - - void -Dynamic_performer::deprecated_process_music () +Dynamic_performer::create_grobs () { if (script_req_l_) { @@ -119,12 +112,6 @@ Dynamic_performer::deprecated_process_music () } } -void -Dynamic_performer::create_grobs () -{ - deprecated_process_music (); -} - void Dynamic_performer::stop_translation_timestep () { diff --git a/lily/extender-engraver.cc b/lily/extender-engraver.cc index 8128598f6b..a365c25d0d 100644 --- a/lily/extender-engraver.cc +++ b/lily/extender-engraver.cc @@ -38,8 +38,7 @@ public: protected: virtual void acknowledge_grob (Grob_info); - virtual void do_removal_processing(); - void deprecated_process_music(); + virtual void finalize(); virtual bool try_music (Music*); virtual void stop_translation_timestep(); virtual void start_translation_timestep (); @@ -92,23 +91,17 @@ Extender_engraver::try_music (Music* r) } void -Extender_engraver::do_removal_processing () +Extender_engraver::finalize () { if (extender_p_) { req_l_->origin ()->warning (_ ("unterminated extender")); - extender_p_->set_bound(RIGHT, unsmob_element (get_property ("currentCommandColumn"))); + extender_p_->set_bound(RIGHT, unsmob_grob (get_property ("currentCommandColumn"))); } } void Extender_engraver::create_grobs () -{ - deprecated_process_music (); -} - -void -Extender_engraver::deprecated_process_music () { if (req_l_ && ! extender_p_) { diff --git a/lily/grace-align-item.cc b/lily/grace-align-item.cc index f671784ac9..901953cce1 100644 --- a/lily/grace-align-item.cc +++ b/lily/grace-align-item.cc @@ -17,7 +17,7 @@ MAKE_SCHEME_CALLBACK(Grace_align_item,before_line_breaking,1); SCM Grace_align_item::before_line_breaking (SCM smob) { - Grob*me = unsmob_element (smob); + Grob*me = unsmob_grob (smob); SCM space = me->get_grob_property ("horizontal-space"); me->set_grob_property ("threshold", diff --git a/lily/grace-engraver-group.cc b/lily/grace-engraver-group.cc index 1d62fabcde..0f484ae35a 100644 --- a/lily/grace-engraver-group.cc +++ b/lily/grace-engraver-group.cc @@ -38,9 +38,9 @@ Grace_engraver_group::finish () } void -Grace_engraver_group::do_removal_processing () +Grace_engraver_group::finalize () { - Engraver_group_engraver::do_removal_processing (); + Engraver_group_engraver::finalize (); } void @@ -118,9 +118,9 @@ Grace_engraver_group::pass_to_top_b (Music *m) const } void -Grace_engraver_group::do_creation_processing () +Grace_engraver_group::initialize () { calling_self_b_ = true; - Engraver_group_engraver::do_creation_processing (); + Engraver_group_engraver::initialize (); calling_self_b_ = false; } diff --git a/lily/grace-performer-group.cc b/lily/grace-performer-group.cc index 9791c35e05..e1fc4503a8 100644 --- a/lily/grace-performer-group.cc +++ b/lily/grace-performer-group.cc @@ -39,9 +39,9 @@ Grace_performer_group::finish () } void -Grace_performer_group::do_removal_processing () +Grace_performer_group::finalize () { - Performer_group_performer::do_removal_processing (); + Performer_group_performer::finalize (); } void diff --git a/lily/grace-position-engraver.cc b/lily/grace-position-engraver.cc index 45778f0350..1e1d4ec8c3 100644 --- a/lily/grace-position-engraver.cc +++ b/lily/grace-position-engraver.cc @@ -97,7 +97,7 @@ Grace_position_engraver::stop_translation_timestep () Axis_group_interface::add_element (last_musical_col_l_, align_l_); } - last_musical_col_l_ = dynamic_cast( unsmob_element (get_property ("currentMusicalColumn"))); + last_musical_col_l_ = dynamic_cast( unsmob_grob (get_property ("currentMusicalColumn"))); } void diff --git a/lily/grob.cc b/lily/grob.cc index c36942d55f..ac075aba96 100644 --- a/lily/grob.cc +++ b/lily/grob.cc @@ -179,7 +179,7 @@ MAKE_SCHEME_CALLBACK(Grob,molecule_extent,2); SCM Grob::molecule_extent (SCM element_smob, SCM scm_axis) { - Grob *s = unsmob_element (element_smob); + Grob *s = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (scm_axis); Molecule *m = s->get_molecule (); @@ -194,7 +194,7 @@ MAKE_SCHEME_CALLBACK(Grob,preset_extent,2); SCM Grob::preset_extent (SCM element_smob, SCM scm_axis) { - Grob *s = unsmob_element (element_smob); + Grob *s = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (scm_axis); SCM ext = s->get_grob_property ((a == X_AXIS) @@ -237,7 +237,7 @@ Grob::calculate_dependencies (int final, int busy, SCM funcname) for (SCM d= get_grob_property ("dependencies"); gh_pair_p (d); d = gh_cdr (d)) { - unsmob_element (gh_car (d)) + unsmob_grob (gh_car (d)) ->calculate_dependencies (final, busy, funcname); } @@ -257,10 +257,20 @@ Grob::get_molecule () const SCM mol = get_grob_property ("molecule"); if (unsmob_molecule (mol)) return unsmob_molecule (mol); + + mol = get_uncached_molecule (); + + Grob *me = (Grob*)this; + me->set_grob_property ("molecule", mol); + return unsmob_molecule (mol); +} +SCM +Grob::get_uncached_molecule ()const +{ SCM proc = get_grob_property ("molecule-callback"); - mol = SCM_EOL; + SCM mol = SCM_EOL; if (gh_procedure_p (proc)) mol = gh_apply (proc, gh_list (this->self_scm (), SCM_UNDEFINED)); @@ -294,14 +304,9 @@ Grob::get_molecule () const if (m && to_boolean (get_grob_property ("transparent"))) mol = Molecule (m->extent_box (), SCM_EOL).smobbed_copy (); - Grob *me = (Grob*)this; - me->set_grob_property ("molecule", mol); - - m = unsmob_molecule (mol); - return m; + return mol; } - /* VIRTUAL STUBS @@ -347,7 +352,7 @@ SCM Grob::handle_broken_smobs (SCM src, SCM criterion) { again: - Grob *sc = unsmob_element (src); + Grob *sc = unsmob_grob (src); if (sc) { if (gh_number_p (criterion)) @@ -363,7 +368,7 @@ Grob::handle_broken_smobs (SCM src, SCM criterion) else { Line_of_score * line - = dynamic_cast (unsmob_element (criterion)); + = dynamic_cast (unsmob_grob (criterion)); if (sc->line_l () != line) { sc = sc->find_broken_piece (line); @@ -647,7 +652,7 @@ Grob::common_refpoint (SCM elist, Axis a) const Grob * common = (Grob*) this; for (; gh_pair_p (elist); elist = gh_cdr (elist)) { - Grob * s = unsmob_element (gh_car (elist)); + Grob * s = unsmob_grob (gh_car (elist)); if (s) common = common->common_refpoint (s, a); } @@ -709,7 +714,7 @@ MAKE_SCHEME_CALLBACK(Grob,fixup_refpoint,1); SCM Grob::fixup_refpoint (SCM smob) { - Grob *me = unsmob_element (smob); + Grob *me = unsmob_grob (smob); for (int a = X_AXIS; a < NO_AXES; a ++) { Axis ax = (Axis)a; @@ -749,7 +754,7 @@ Grob::fixup_refpoint (SCM smob) ****************************************************/ -IMPLEMENT_UNSMOB(Grob, element); +IMPLEMENT_UNSMOB(Grob, grob); IMPLEMENT_SMOBS(Grob); IMPLEMENT_DEFAULT_EQUAL_P(Grob); @@ -801,7 +806,7 @@ Grob::do_derived_mark () SCM ly_set_grob_property (SCM elt, SCM sym, SCM val) { - Grob * sc = unsmob_element (elt); + Grob * sc = unsmob_grob (elt); if (!gh_symbol_p (sym)) { @@ -827,7 +832,7 @@ ly_set_grob_property (SCM elt, SCM sym, SCM val) SCM ly_get_grob_property (SCM elt, SCM sym) { - Grob * sc = unsmob_element (elt); + Grob * sc = unsmob_grob (elt); if (sc) { @@ -852,7 +857,7 @@ Grob::discretionary_processing() SCM spanner_get_bound (SCM slur, SCM dir) { - return dynamic_cast (unsmob_element (slur))->get_bound (to_dir (dir))->self_scm (); + return dynamic_cast (unsmob_grob (slur))->get_bound (to_dir (dir))->self_scm (); } diff --git a/lily/hara-kiri-group-spanner.cc b/lily/hara-kiri-group-spanner.cc index 3c75ae45a3..ae50f44685 100644 --- a/lily/hara-kiri-group-spanner.cc +++ b/lily/hara-kiri-group-spanner.cc @@ -18,7 +18,7 @@ MAKE_SCHEME_CALLBACK(Hara_kiri_group_spanner,y_extent,2); SCM Hara_kiri_group_spanner::y_extent (SCM element_smob, SCM scm_axis) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (scm_axis); assert (a == Y_AXIS); @@ -55,7 +55,7 @@ MAKE_SCHEME_CALLBACK(Hara_kiri_group_spanner,force_hara_kiri_callback,2); SCM Hara_kiri_group_spanner::force_hara_kiri_callback (SCM element_smob, SCM axis) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == Y_AXIS); consider_suicide (me); @@ -67,7 +67,7 @@ MAKE_SCHEME_CALLBACK(Hara_kiri_group_spanner,force_hara_kiri_in_parent_callback, SCM Hara_kiri_group_spanner::force_hara_kiri_in_parent_callback (SCM element_smob, SCM axis) { - Grob *daughter = unsmob_element (element_smob); + Grob *daughter = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == Y_AXIS); force_hara_kiri_callback (daughter->parent_l (a)->self_scm (), axis); diff --git a/lily/hyphen-engraver.cc b/lily/hyphen-engraver.cc index ebb56587ba..44eb929805 100644 --- a/lily/hyphen-engraver.cc +++ b/lily/hyphen-engraver.cc @@ -32,8 +32,7 @@ public: protected: virtual void acknowledge_grob (Grob_info); - virtual void do_removal_processing(); - void deprecated_process_music(); + virtual void finalize(); virtual bool try_music (Music*); virtual void stop_translation_timestep(); virtual void start_translation_timestep (); @@ -84,23 +83,17 @@ Hyphen_engraver::try_music (Music* r) } void -Hyphen_engraver::do_removal_processing () +Hyphen_engraver::finalize () { if (hyphen_p_) { req_l_->origin ()->warning (_ ("unterminated hyphen")); - hyphen_p_->set_bound(RIGHT, unsmob_element (get_property ("currentCommandColumn"))); + hyphen_p_->set_bound(RIGHT, unsmob_grob (get_property ("currentCommandColumn"))); } } void Hyphen_engraver::create_grobs () -{ - deprecated_process_music (); -} - -void -Hyphen_engraver::deprecated_process_music () { if (req_l_ &&! hyphen_p_) { diff --git a/lily/hyphen-spanner.cc b/lily/hyphen-spanner.cc index b4a8e1738a..6c0dd240ae 100644 --- a/lily/hyphen-spanner.cc +++ b/lily/hyphen-spanner.cc @@ -24,7 +24,7 @@ MAKE_SCHEME_CALLBACK(Hyphen_spanner,brew_molecule,1) SCM Hyphen_spanner::brew_molecule (SCM smob) { - Spanner * sp = dynamic_cast (unsmob_element (smob)); + Spanner * sp = dynamic_cast (unsmob_grob (smob)); Grob * common = sp; Direction d = LEFT; diff --git a/lily/include/command-request.hh b/lily/include/command-request.hh index 5415808e58..b1a28f4350 100644 --- a/lily/include/command-request.hh +++ b/lily/include/command-request.hh @@ -37,9 +37,6 @@ public: class Tempo_req : public Request { public: - Duration dur_; - - Tempo_req(); protected: diff --git a/lily/include/custos.hh b/lily/include/custos.hh index 707df6ec4f..028982f18f 100644 --- a/lily/include/custos.hh +++ b/lily/include/custos.hh @@ -15,6 +15,11 @@ struct Custos { DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); static bool has_interface (Grob*); + +private: + static void add_streepjes(Grob* me, int pos, int interspaces, Molecule* custos_p_); + static Molecule create_ledger_line (Interval x_extent, Grob *me) ; + }; #endif // CUSTOS_HH diff --git a/lily/include/grace-engraver-group.hh b/lily/include/grace-engraver-group.hh index aefbdf8437..dfc0eb2ceb 100644 --- a/lily/include/grace-engraver-group.hh +++ b/lily/include/grace-engraver-group.hh @@ -23,13 +23,13 @@ public: VIRTUAL_COPY_CONS(Translator); Grace_engraver_group (); protected: - virtual void do_creation_processing (); + virtual void initialize (); virtual void announce_grob (Grob_info); virtual void start (); virtual void finish (); virtual void process (); virtual void each (Method_pointer); - virtual void do_removal_processing () ; + virtual void finalize () ; virtual void typeset_grob (Grob*); virtual bool try_music (Music *m); }; diff --git a/lily/include/grace-performer-group.hh b/lily/include/grace-performer-group.hh index d6805d514e..be96df4ce1 100644 --- a/lily/include/grace-performer-group.hh +++ b/lily/include/grace-performer-group.hh @@ -27,7 +27,7 @@ protected: virtual void finish (); virtual void process (); virtual void each (Method_pointer); - virtual void do_removal_processing () ; + virtual void finalize () ; virtual void play_element (Audio_element*); virtual bool try_music (Music *m); }; diff --git a/lily/include/grob.hh b/lily/include/grob.hh index 96bf9be791..86ef255b4f 100644 --- a/lily/include/grob.hh +++ b/lily/include/grob.hh @@ -104,6 +104,8 @@ public: virtual SCM do_derived_mark (); Molecule * get_molecule () const; + SCM get_uncached_molecule () const; + void suicide (); DECLARE_SCHEME_CALLBACK(preset_extent, (SCM smob, SCM axis)); @@ -172,7 +174,7 @@ public: DECLARE_SCHEME_CALLBACK(fixup_refpoint, (SCM)); }; -Grob * unsmob_element (SCM); +Grob * unsmob_grob (SCM); #endif // STAFFELEM_HH diff --git a/lily/include/group-interface.hh b/lily/include/group-interface.hh index 88f608a7ef..c9fcde7aee 100644 --- a/lily/include/group-interface.hh +++ b/lily/include/group-interface.hh @@ -46,7 +46,7 @@ Pointer_group_interface__extract_elements (Grob const *elt, T *, const char* nam for (SCM s = elt->get_grob_property (name); gh_pair_p (s); s = gh_cdr (s)) { SCM e = gh_car (s); - arr.push (dynamic_cast (unsmob_element (e))); + arr.push (dynamic_cast (unsmob_grob (e))); } arr.reverse (); diff --git a/lily/include/line-group-group-engraver.hh b/lily/include/line-group-group-engraver.hh index 1c4d0e3b0f..4f8ca20aaf 100644 --- a/lily/include/line-group-group-engraver.hh +++ b/lily/include/line-group-group-engraver.hh @@ -23,8 +23,8 @@ protected: Spanner *staffline_p_; virtual void create_line_spanner (); - virtual void do_creation_processing(); - virtual void do_removal_processing(); + virtual void initialize(); + virtual void finalize(); virtual void typeset_grob (Grob*); public: VIRTUAL_COPY_CONS(Translator); diff --git a/lily/include/lyric-phrasing-engraver.hh b/lily/include/lyric-phrasing-engraver.hh index 263ae24048..f0e02bcfe7 100644 --- a/lily/include/lyric-phrasing-engraver.hh +++ b/lily/include/lyric-phrasing-engraver.hh @@ -65,7 +65,7 @@ protected: virtual void acknowledge_grob(Grob_info); virtual void create_grobs (); virtual void stop_translation_timestep(); - virtual void do_removal_processing (); + virtual void finalize (); private: void record_notehead(const String &context_id, Grob * notehead); void record_lyric(const String &context_id, Grob * lyric); diff --git a/lily/include/musical-request.hh b/lily/include/musical-request.hh index a19a427aa6..4b8eecd877 100644 --- a/lily/include/musical-request.hh +++ b/lily/include/musical-request.hh @@ -21,8 +21,6 @@ */ class Rhythmic_req : public virtual Request { public: - Duration duration_; - bool do_equal_b (Request const*) const; void compress (Moment); virtual Moment length_mom () const; @@ -76,8 +74,6 @@ protected: /// request which has some kind of pitch struct Melodic_req :virtual Request { - Pitch pitch_; - static int compare (Melodic_req const&,Melodic_req const&); protected: diff --git a/lily/include/score-engraver.hh b/lily/include/score-engraver.hh index 5cbe10b56c..56618c7934 100644 --- a/lily/include/score-engraver.hh +++ b/lily/include/score-engraver.hh @@ -47,14 +47,14 @@ protected: /* Engraver_group_engraver interface */ virtual bool try_music (Music*); - virtual void do_creation_processing(); - virtual void do_removal_processing(); + virtual void initialize(); + virtual void finalize(); virtual void announce_grob (Grob_info); virtual void do_announces(); virtual void typeset_grob (Grob*elem_p); virtual void stop_translation_timestep(); - virtual void do_add_processing (); + }; #endif // SCORE_GRAV_HH diff --git a/lily/include/score-performer.hh b/lily/include/score-performer.hh index 4c71b7b8f7..3abe6f1d99 100644 --- a/lily/include/score-performer.hh +++ b/lily/include/score-performer.hh @@ -29,7 +29,7 @@ protected: virtual void prepare (Moment mom); virtual void process(); virtual void start(); - virtual void do_add_processing (); + virtual void initialize (); virtual void announce_element (Audio_element_info); virtual int get_tempo_i() const; virtual void play_element (Audio_element* p); diff --git a/lily/include/slur.hh b/lily/include/slur.hh index 9c20697a3e..62c7f770cf 100644 --- a/lily/include/slur.hh +++ b/lily/include/slur.hh @@ -23,7 +23,7 @@ public: static Direction get_default_dir (Grob *me); DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM)); DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM )); - + DECLARE_SCHEME_CALLBACK (height, (SCM,SCM)); private: static Real get_first_notecolumn_y (Grob *me, Direction dir); static Offset broken_trend_offset (Grob *me, Direction dir); diff --git a/lily/include/timing-translator.hh b/lily/include/timing-translator.hh index d78dce109f..cdd9143900 100644 --- a/lily/include/timing-translator.hh +++ b/lily/include/timing-translator.hh @@ -25,11 +25,11 @@ public: Music *check_; protected: - virtual void do_creation_processing (); + virtual void initialize (); virtual bool try_music (Music *req_l); - void deprecated_process_music(); - virtual void stop_translation_timestep(); - virtual void start_translation_timestep(); + virtual void process_music (); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); public: Moment measure_position () const; diff --git a/lily/include/translator-group.hh b/lily/include/translator-group.hh index 411710343c..ebda8bdfec 100644 --- a/lily/include/translator-group.hh +++ b/lily/include/translator-group.hh @@ -70,12 +70,11 @@ public: bool try_music_on_nongroup_children (Music *m); virtual void do_announces (); - virtual void do_add_processing (); virtual bool try_music (Music* req_l); virtual void stop_translation_timestep(); virtual void start_translation_timestep(); - virtual void do_creation_processing(); - virtual void do_removal_processing(); + virtual void initialize(); + virtual void finalize(); virtual void each (Method_pointer); }; diff --git a/lily/include/translator.hh b/lily/include/translator.hh index 7680a5d394..019ea273ef 100644 --- a/lily/include/translator.hh +++ b/lily/include/translator.hh @@ -39,7 +39,6 @@ public: void pre_move_processing(); - void add_processing (); void announces(); void post_move_processing(); void removal_processing(); @@ -64,7 +63,6 @@ public: DECLARE_SMOBS(Translator, dummy); public: - virtual void do_add_processing (); /** try to fit the request in this engraver @@ -78,8 +76,8 @@ public: virtual void stop_translation_timestep(); virtual void start_translation_timestep(); virtual void do_announces () ; - virtual void do_creation_processing() ; - virtual void do_removal_processing(); + virtual void initialize() ; + virtual void finalize(); }; diff --git a/lily/include/transposed-music.hh b/lily/include/transposed-music.hh index 1c3defee06..55ff38ff8d 100644 --- a/lily/include/transposed-music.hh +++ b/lily/include/transposed-music.hh @@ -16,9 +16,6 @@ class Transposed_music : public Music_wrapper { public: - Pitch transpose_to_pitch_; - - Transposed_music (Music*, Pitch); VIRTUAL_COPY_CONS(Music); diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc index ebe26164e4..35c4af6a35 100644 --- a/lily/key-engraver.cc +++ b/lily/key-engraver.cc @@ -37,10 +37,9 @@ public: Protected_scm old_accs_; // ugh. -> property protected: - virtual void do_creation_processing(); - virtual void do_removal_processing (); + virtual void initialize(); + virtual void finalize (); virtual bool try_music (Music *req_l); - void deprecated_process_music(); virtual void stop_translation_timestep(); virtual void start_translation_timestep(); virtual void create_grobs (); @@ -49,7 +48,7 @@ protected: void -Key_engraver::do_removal_processing () +Key_engraver::finalize () { old_accs_ = SCM_EOL; // unprotect can not be called from dtor. } @@ -130,12 +129,6 @@ Key_engraver::acknowledge_grob (Grob_info info) void Key_engraver::create_grobs () -{ - deprecated_process_music (); -} - -void -Key_engraver::deprecated_process_music () { if (keyreq_l_ || old_accs_ != get_property ("keySignature")) { @@ -187,7 +180,7 @@ Key_engraver::start_translation_timestep () } void -Key_engraver::do_creation_processing () +Key_engraver::initialize () { daddy_trans_l_->set_property ("keySignature", SCM_EOL); old_accs_ = SCM_EOL; diff --git a/lily/key-item.cc b/lily/key-item.cc index b3fe56c195..a23b92eac8 100644 --- a/lily/key-item.cc +++ b/lily/key-item.cc @@ -76,7 +76,7 @@ MAKE_SCHEME_CALLBACK(Key_item,brew_molecule,1); SCM Key_item::brew_molecule (SCM smob) { - Grob*me =unsmob_element (smob); + Grob*me =unsmob_grob (smob); Real inter = Staff_symbol_referencer::staff_space (me)/2.0; diff --git a/lily/line-group-group-engraver.cc b/lily/line-group-group-engraver.cc index 3bd6c2df54..8d0383c705 100644 --- a/lily/line-group-group-engraver.cc +++ b/lily/line-group-group-engraver.cc @@ -31,11 +31,11 @@ Line_group_engraver_group::typeset_grob (Grob *elem) void -Line_group_engraver_group::do_removal_processing() +Line_group_engraver_group::finalize() { - Engraver_group_engraver::do_removal_processing (); + Engraver_group_engraver::finalize (); Grob * it - = unsmob_element (get_property (ly_symbol2scm ("currentCommandColumn"))); + = unsmob_grob (get_property (ly_symbol2scm ("currentCommandColumn"))); staffline_p_->set_bound(RIGHT,it); Engraver_group_engraver::typeset_grob (staffline_p_); @@ -43,11 +43,11 @@ Line_group_engraver_group::do_removal_processing() } void -Line_group_engraver_group::do_creation_processing() +Line_group_engraver_group::initialize() { create_line_spanner (); Grob * it - = unsmob_element (get_property (ly_symbol2scm ("currentCommandColumn"))); + = unsmob_grob (get_property (ly_symbol2scm ("currentCommandColumn"))); staffline_p_->set_bound(LEFT,it); Engraver::announce_grob (staffline_p_,0); diff --git a/lily/line-of-score.cc b/lily/line-of-score.cc index 9121d4c0fb..99713d7d39 100644 --- a/lily/line-of-score.cc +++ b/lily/line-of-score.cc @@ -61,7 +61,7 @@ Line_of_score::output_lines () for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { - unsmob_element (gh_car (s))->do_break_processing (); + unsmob_grob (gh_car (s))->do_break_processing (); } /* fixups must be done in broken line_of_scores, because new elements @@ -88,7 +88,7 @@ Line_of_score::output_lines () for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { - unsmob_element (gh_car (s))->handle_broken_dependencies (); + unsmob_grob (gh_car (s))->handle_broken_dependencies (); } handle_broken_dependencies (); @@ -113,7 +113,7 @@ Line_of_score::output_lines () if (i < broken_into_l_arr_.size () - 1) { SCM lastcol = gh_car (line_l->get_grob_property ("columns")); - Grob* e = unsmob_element (lastcol); + Grob* e = unsmob_grob (lastcol); SCM inter = e->get_grob_property ("between-system-string"); if (gh_string_p (inter)) { @@ -229,7 +229,7 @@ Line_of_score::add_column (Paper_column*p) { Grob *me = this; SCM cs = me->get_grob_property ("columns"); - Grob * prev = gh_pair_p (cs) ? unsmob_element (gh_car (cs)) : 0; + Grob * prev = gh_pair_p (cs) ? unsmob_grob (gh_car (cs)) : 0; p->rank_i_ = prev ? Paper_column::rank_i (prev) + 1 : 0; @@ -249,27 +249,27 @@ void Line_of_score::pre_processing () { for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) - unsmob_element (gh_car (s))->discretionary_processing (); + unsmob_grob (gh_car (s))->discretionary_processing (); if(verbose_global_b) progress_indication ( _f("Element count %d ", element_count ())); for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) - unsmob_element (gh_car (s))->handle_prebroken_dependencies (); + unsmob_grob (gh_car (s))->handle_prebroken_dependencies (); fixup_refpoints (get_grob_property ("all-elements")); for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { - Grob* sc = unsmob_element (gh_car (s)); + Grob* sc = unsmob_grob (gh_car (s)); sc->calculate_dependencies (PRECALCED, PRECALCING, ly_symbol2scm ("before-line-breaking-callback")); } progress_indication ("\n" + _ ("Calculating column positions...") + " " ); for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { - Grob * e = unsmob_element (gh_car (s)); + Grob * e = unsmob_grob (gh_car (s)); SCM proc = e->get_grob_property ("spacing-procedure"); if (gh_procedure_p (proc)) gh_call1 (proc, e->self_scm ()); @@ -282,7 +282,7 @@ Line_of_score::post_processing (bool last_line) for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { - Grob* sc = unsmob_element (gh_car (s)); + Grob* sc = unsmob_grob (gh_car (s)); sc->calculate_dependencies (POSTCALCED, POSTCALCING, ly_symbol2scm ("after-line-breaking-callback")); } @@ -306,7 +306,7 @@ Line_of_score::post_processing (bool last_line) (ugh. This is not very memory efficient.) */ for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { - unsmob_element (gh_car (s))->get_molecule (); + unsmob_grob (gh_car (s))->get_molecule (); } /* font defs; @@ -328,7 +328,7 @@ Line_of_score::post_processing (bool last_line) */ for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { - Grob *sc = unsmob_element (gh_car (s)); + Grob *sc = unsmob_grob (gh_car (s)); Molecule *m = sc->get_molecule (); if (!m) continue; @@ -373,7 +373,7 @@ Line_of_score::broken_col_range (Item const*l, Item const*r) const while (gh_pair_p (s) && gh_car (s) != l->self_scm ()) { - Paper_column*c = dynamic_cast ( unsmob_element (gh_car (s))); + Paper_column*c = dynamic_cast ( unsmob_grob (gh_car (s))); if (Item::breakable_b (c) && !c->line_l_) ret.push (c); diff --git a/lily/local-key-engraver.cc b/lily/local-key-engraver.cc index 899dc22996..8156cecba0 100644 --- a/lily/local-key-engraver.cc +++ b/lily/local-key-engraver.cc @@ -34,9 +34,9 @@ protected: void deprecated_process_music(); virtual void acknowledge_grob (Grob_info); virtual void stop_translation_timestep(); - virtual void do_creation_processing (); + virtual void initialize (); virtual void create_grobs (); - virtual void do_removal_processing (); + virtual void finalize (); public: // todo -> property @@ -65,7 +65,7 @@ Local_key_engraver::Local_key_engraver() } void -Local_key_engraver::do_creation_processing () +Local_key_engraver::initialize () { last_keysig_ = get_property ("keySignature"); daddy_trans_l_->set_property ("localKeySignature", last_keysig_); @@ -176,7 +176,7 @@ Local_key_engraver::create_grobs () } void -Local_key_engraver::do_removal_processing () +Local_key_engraver::finalize () { // TODO: if grace ? signal accidentals to Local_key_engraver the } diff --git a/lily/local-key-item.cc b/lily/local-key-item.cc index 26ea3f2ec7..6fb078eda2 100644 --- a/lily/local-key-item.cc +++ b/lily/local-key-item.cc @@ -69,7 +69,7 @@ MAKE_SCHEME_CALLBACK(Local_key_item,brew_molecule,1); SCM Local_key_item::brew_molecule (SCM smob) { - Grob* me = unsmob_element (smob); + Grob* me = unsmob_grob (smob); Molecule mol; diff --git a/lily/lyric-engraver.cc b/lily/lyric-engraver.cc index 5c1117637c..9fff756ede 100644 --- a/lily/lyric-engraver.cc +++ b/lily/lyric-engraver.cc @@ -7,13 +7,34 @@ Jan Nieuwenhuizen */ -#include "lyric-engraver.hh" +#include "engraver.hh" #include "musical-request.hh" #include "item.hh" #include "paper-def.hh" #include "font-metric.hh" #include "side-position-interface.hh" +/** + Generate texts for lyric syllables. We only do one lyric at a time. + Multiple copies of this engraver should be used to do multiple voices. + */ +class Lyric_engraver : public Engraver +{ +protected: + virtual void stop_translation_timestep(); + virtual bool try_music (Music *); + virtual void create_grobs (); + virtual void start_translation_timestep (); + +public: + Lyric_engraver (); + VIRTUAL_COPY_CONS (Translator); + +private: + Lyric_req * req_l_; + Item* text_p_; +}; + ADD_THIS_TRANSLATOR (Lyric_engraver); @@ -37,7 +58,7 @@ Lyric_engraver::try_music (Music*r) } void -Lyric_engraver::deprecated_process_music() +Lyric_engraver::create_grobs () { if (req_l_) { diff --git a/lily/lyric-extender.cc b/lily/lyric-extender.cc index 3deeb0e24b..1e5e7555fc 100644 --- a/lily/lyric-extender.cc +++ b/lily/lyric-extender.cc @@ -20,7 +20,7 @@ MAKE_SCHEME_CALLBACK(Lyric_extender,brew_molecule,1) SCM Lyric_extender::brew_molecule (SCM smob) { - Spanner *sp = dynamic_cast (unsmob_element (smob)); + Spanner *sp = dynamic_cast (unsmob_grob (smob)); // ugh: refp Real leftext = sp->get_bound (LEFT)->extent (sp->get_bound (LEFT), diff --git a/lily/lyric-phrasing-engraver.cc b/lily/lyric-phrasing-engraver.cc index 958655daad..045d86ead8 100644 --- a/lily/lyric-phrasing-engraver.cc +++ b/lily/lyric-phrasing-engraver.cc @@ -60,7 +60,7 @@ Lyric_phrasing_engraver::~Lyric_phrasing_engraver() } void -Lyric_phrasing_engraver::do_removal_processing () +Lyric_phrasing_engraver::finalize () { /* but do need to unprotect alist_, since Engravers are gc'd now. diff --git a/lily/mark-engraver.cc b/lily/mark-engraver.cc index d872f5cc53..2d498222d4 100644 --- a/lily/mark-engraver.cc +++ b/lily/mark-engraver.cc @@ -38,9 +38,8 @@ protected: virtual void acknowledge_grob (Grob_info); void create_items(Request*); virtual bool try_music (Music *req_l); - void deprecated_process_music (); virtual void start_translation_timestep (); - virtual void do_creation_processing (); + virtual void initialize (); virtual void create_grobs (); private: @@ -58,7 +57,7 @@ Mark_engraver::Mark_engraver () } void -Mark_engraver::do_creation_processing () +Mark_engraver::initialize () { daddy_trans_l_->set_property ("staffsFound", SCM_EOL); // ugh: sharing with barnumber grav. } @@ -138,12 +137,6 @@ Mark_engraver::try_music (Music* r_l) void Mark_engraver::create_grobs () -{ - deprecated_process_music (); -} - -void -Mark_engraver::deprecated_process_music () { if (mark_req_l_) { diff --git a/lily/multi-measure-rest-engraver.cc b/lily/multi-measure-rest-engraver.cc index 581b4453e8..75f2bc5892 100644 --- a/lily/multi-measure-rest-engraver.cc +++ b/lily/multi-measure-rest-engraver.cc @@ -30,11 +30,10 @@ public: protected: virtual void acknowledge_grob (Grob_info i); - void deprecated_process_music (); virtual bool try_music (Music*); virtual void stop_translation_timestep (); virtual void start_translation_timestep (); - virtual void do_removal_processing (); + virtual void finalize (); virtual void create_grobs (); private: @@ -95,13 +94,6 @@ Multi_measure_rest_engraver::try_music (Music* req_l) void Multi_measure_rest_engraver::create_grobs () -{ - deprecated_process_music (); -} - - -void -Multi_measure_rest_engraver::deprecated_process_music () { if (new_req_l_ && stop_req_l_) stop_req_l_ = 0; @@ -181,7 +173,7 @@ Multi_measure_rest_engraver::start_translation_timestep () void -Multi_measure_rest_engraver::do_removal_processing () +Multi_measure_rest_engraver::finalize () { if (mmrest_p_) typeset_grob (mmrest_p_); diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc index 4eccf4074b..9cb9063a6b 100644 --- a/lily/multi-measure-rest.cc +++ b/lily/multi-measure-rest.cc @@ -40,7 +40,7 @@ MAKE_SCHEME_CALLBACK(Multi_measure_rest,brew_molecule,1); SCM Multi_measure_rest::brew_molecule (SCM smob) { - Grob *me = unsmob_element (smob); + Grob *me = unsmob_grob (smob); Spanner * sp = dynamic_cast (me); SCM alist_chain = Font_interface::font_alist_chain (me); @@ -170,7 +170,7 @@ MAKE_SCHEME_CALLBACK (Multi_measure_rest, set_spacing_rods,1); SCM Multi_measure_rest::set_spacing_rods (SCM smob) { - Grob*me = unsmob_element (smob); + Grob*me = unsmob_grob (smob); Spanner*sp = dynamic_cast (me); if (!(sp->get_bound (LEFT) && sp->get_bound (RIGHT))) diff --git a/lily/music-output-def.cc b/lily/music-output-def.cc index 098a86ab39..976c41767d 100644 --- a/lily/music-output-def.cc +++ b/lily/music-output-def.cc @@ -73,8 +73,7 @@ Music_output_def::get_global_translator_p () Translator_group * tg = t->instantiate (this); - tg->add_processing (); - tg->do_creation_processing (); + tg->initialize (); return dynamic_cast (tg); } diff --git a/lily/note-column.cc b/lily/note-column.cc index 142b5ea769..81f90310ba 100644 --- a/lily/note-column.cc +++ b/lily/note-column.cc @@ -20,7 +20,7 @@ bool Note_column::rest_b (Grob*me) { - return unsmob_element (me->get_grob_property ("rest")); + return unsmob_grob (me->get_grob_property ("rest")); } int @@ -48,7 +48,7 @@ Item * Note_column::stem_l (Grob*me) { SCM s = me->get_grob_property ("stem"); - return dynamic_cast(unsmob_element (s)); + return dynamic_cast(unsmob_grob (s)); } Slice @@ -61,7 +61,7 @@ Note_column::head_positions_interval(Grob *me) SCM h = me->get_grob_property ("note-heads"); for (; gh_pair_p (h); h = gh_cdr (h)) { - Grob *se = unsmob_element (gh_car (h)); + Grob *se = unsmob_grob (gh_car (h)); int j = int (Staff_symbol_referencer::position_f (se)); iv.unite (Slice (j,j)); @@ -72,7 +72,7 @@ Note_column::head_positions_interval(Grob *me) Direction Note_column::dir (Grob* me) { - Grob *stem = unsmob_element (me->get_grob_property ("stem")); + Grob *stem = unsmob_grob (me->get_grob_property ("stem")); if (stem && Stem::has_interface (stem)) return Stem::get_direction (stem); else if (gh_pair_p (me->get_grob_property ("note-heads"))) @@ -111,7 +111,7 @@ Note_column::add_head (Grob*me,Grob *h) void Note_column::translate_rests (Grob*me,int dy_i) { - Grob * r = unsmob_element (me->get_grob_property ("rest")); + Grob * r = unsmob_grob (me->get_grob_property ("rest")); if (r) { r->translate_axis (dy_i * Staff_symbol_referencer::staff_space (r)/2.0, Y_AXIS); diff --git a/lily/note-head.cc b/lily/note-head.cc index 7c399f9d85..9af3c41f2a 100644 --- a/lily/note-head.cc +++ b/lily/note-head.cc @@ -55,7 +55,7 @@ MAKE_SCHEME_CALLBACK(Note_head,brew_molecule,1); SCM Note_head::brew_molecule (SCM smob) { - Grob *me = unsmob_element (smob); + Grob *me = unsmob_grob (smob); Real inter_f = Staff_symbol_referencer::staff_space (me)/2; diff --git a/lily/note-heads-engraver.cc b/lily/note-heads-engraver.cc index 4b009d6081..b791c222ff 100644 --- a/lily/note-heads-engraver.cc +++ b/lily/note-heads-engraver.cc @@ -25,25 +25,16 @@ class Note_heads_engraver : public Engraver Moment note_end_mom_; public: VIRTUAL_COPY_CONS(Translator); - Note_heads_engraver(); protected: virtual void start_translation_timestep (); virtual bool try_music (Music *req_l) ; virtual void create_grobs (); virtual void acknowledge_grob (Grob_info) ; - void deprecated_process_music(); virtual void stop_translation_timestep(); }; - - - -Note_heads_engraver::Note_heads_engraver() -{ -} - bool Note_heads_engraver::try_music (Music *m) { @@ -62,20 +53,14 @@ Note_heads_engraver::try_music (Music *m) } -void -Note_heads_engraver::create_grobs () -{ - deprecated_process_music (); -} - void Note_heads_engraver::acknowledge_grob (Grob_info) { - //deprecated_process_music (); + //create_grobs (); } void -Note_heads_engraver::deprecated_process_music() +Note_heads_engraver::create_grobs () { if (note_p_arr_.size ()) return ; diff --git a/lily/note-name-engraver.cc b/lily/note-name-engraver.cc index 3a76ba6ae0..ed76699feb 100644 --- a/lily/note-name-engraver.cc +++ b/lily/note-name-engraver.cc @@ -18,7 +18,7 @@ public: Link_array req_l_arr_; Link_array texts_; virtual bool try_music (Music*m); - void deprecated_process_music (); + virtual void create_grobs (); virtual void stop_translation_timestep (); }; @@ -33,9 +33,8 @@ Note_name_engraver::try_music (Music *m) return false; } - void -Note_name_engraver::deprecated_process_music () +Note_name_engraver::create_grobs () { if (texts_.size ()) return; diff --git a/lily/parser.yy b/lily/parser.yy index 6f6b260081..50b08cb8e3 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -604,8 +604,9 @@ music_output_def_body: junk this ? there already is tempo stuff in music. */ - int m = gh_scm2int ( $2->get_mus_property ("metronome-count")); - dynamic_cast ($$)->set_tempo ($2->dur_.length_mom (), m); + int m = gh_scm2int ( $2->get_mus_property ("metronome-count")); + Duration *d = unsmob_duration ($2->get_mus_property ("duration")); + dynamic_cast ($$)->set_tempo (d->length_mom (), m); } | music_output_def_body error { diff --git a/lily/piano-pedal-engraver.cc b/lily/piano-pedal-engraver.cc index dd85bb6370..9d76fb4c5d 100644 --- a/lily/piano-pedal-engraver.cc +++ b/lily/piano-pedal-engraver.cc @@ -31,7 +31,7 @@ public: Piano_pedal_engraver (); ~Piano_pedal_engraver (); protected: - virtual void do_creation_processing (); + virtual void initialize (); virtual bool try_music (Music*); virtual void stop_translation_timestep (); virtual void start_translation_timestep (); @@ -58,7 +58,7 @@ Piano_pedal_engraver::Piano_pedal_engraver () info_list_ = 0; } void -Piano_pedal_engraver::do_creation_processing() +Piano_pedal_engraver::initialize() { info_list_ = new Pedal_info[4]; Pedal_info *p = info_list_; diff --git a/lily/piano-pedal-performer.cc b/lily/piano-pedal-performer.cc index 0617db14f2..f5837a110b 100644 --- a/lily/piano-pedal-performer.cc +++ b/lily/piano-pedal-performer.cc @@ -31,7 +31,7 @@ public: ~Piano_pedal_performer (); protected: - virtual void do_creation_processing (); + virtual void initialize (); virtual bool try_music (Music*); virtual void create_grobs (); virtual void stop_translation_timestep (); @@ -55,7 +55,7 @@ Piano_pedal_performer::~Piano_pedal_performer() } void -Piano_pedal_performer::do_creation_processing () +Piano_pedal_performer::initialize () { info_alist_ = new Pedal_info[4]; Pedal_info *p = info_alist_; diff --git a/lily/property-engraver.cc b/lily/property-engraver.cc index 0ee977d887..e327679c01 100644 --- a/lily/property-engraver.cc +++ b/lily/property-engraver.cc @@ -28,8 +28,8 @@ class Property_engraver : public Engraver protected: virtual void acknowledge_grob (Grob_info ei); - virtual void do_creation_processing (); - virtual void do_removal_processing (); + virtual void initialize (); + virtual void finalize (); public: ~Property_engraver(); Property_engraver(); @@ -43,7 +43,7 @@ Property_engraver::Property_engraver() prop_dict_ = 0; } void -Property_engraver::do_removal_processing() +Property_engraver::finalize() { } @@ -55,7 +55,7 @@ Property_engraver::~Property_engraver () } void -Property_engraver::do_creation_processing () +Property_engraver::initialize () { prop_dict_ = new Scheme_hash_table; @@ -70,9 +70,7 @@ Property_engraver::do_creation_processing () void Property_engraver::acknowledge_grob (Grob_info i) { - ///////// - return; - SCM ifs = i.elem_l_->get_grob_property ("interfaces"); + SCM ifs = i.elem_l_->get_grob_property ("interfaces"); SCM props; for (; gh_pair_p (ifs); ifs = gh_cdr (ifs)) { diff --git a/lily/relative-octave-music.cc b/lily/relative-octave-music.cc index 2c7480bdc9..33a85917bc 100644 --- a/lily/relative-octave-music.cc +++ b/lily/relative-octave-music.cc @@ -13,14 +13,14 @@ Pitch Relative_octave_music::to_relative_octave (Pitch) { - return last_pitch_; + return * unsmob_pitch (get_mus_property ("last-pitch")); } Relative_octave_music::Relative_octave_music(Music*p,Pitch def) : Music_wrapper (p) { - last_pitch_ = element ()->to_relative_octave (def); + set_mus_property ("last-pitch", element ()->to_relative_octave (def).smobbed_copy ()); set_mus_property ("type", ly_symbol2scm ("relative-octave-music")); } diff --git a/lily/repeat-acknowledge-engraver.cc b/lily/repeat-acknowledge-engraver.cc index de7930f01e..2443dfd81a 100644 --- a/lily/repeat-acknowledge-engraver.cc +++ b/lily/repeat-acknowledge-engraver.cc @@ -30,13 +30,13 @@ public: virtual void start_translation_timestep (); virtual void process_music (); - virtual void do_creation_processing (); + virtual void initialize (); bool first_b_; }; void -Repeat_acknowledge_engraver::do_creation_processing () +Repeat_acknowledge_engraver::initialize () { first_b_ = true; daddy_trans_l_->set_property ("repeatCommands", SCM_EOL); diff --git a/lily/rest-collision.cc b/lily/rest-collision.cc index 6252f00866..a8f2b3ea90 100644 --- a/lily/rest-collision.cc +++ b/lily/rest-collision.cc @@ -23,11 +23,11 @@ MAKE_SCHEME_CALLBACK(Rest_collision,force_shift_callback,2); SCM Rest_collision::force_shift_callback (SCM element_smob, SCM axis) { - Grob *them = unsmob_element (element_smob); + Grob *them = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == Y_AXIS); - Grob * rc = unsmob_element (them->get_grob_property ("rest-collision")); + Grob * rc = unsmob_grob (them->get_grob_property ("rest-collision")); if (rc) { @@ -65,7 +65,7 @@ Rest_collision::add_column (Grob*me,Grob *p) static SCM head_characteristic (Grob * col) { - Grob * s = unsmob_element (col->get_grob_property ("rest")); + Grob * s = unsmob_grob (col->get_grob_property ("rest")); if (!s) return SCM_BOOL_F; @@ -89,7 +89,7 @@ Rest_collision::do_shift (Grob *me, SCM elts) for (SCM s = elts; gh_pair_p (s); s = gh_cdr (s)) { - Grob * e = unsmob_element (gh_car (s)); + Grob * e = unsmob_grob (gh_car (s)); if (!e) continue; @@ -98,7 +98,7 @@ Rest_collision::do_shift (Grob *me, SCM elts) else commony= commony->common_refpoint (e, Y_AXIS); - if (unsmob_element (e->get_grob_property ("rest"))) + if (unsmob_grob (e->get_grob_property ("rest"))) rests.push (e); else notes.push (e); @@ -147,7 +147,7 @@ Rest_collision::do_shift (Grob *me, SCM elts) display_count = gh_scm2int (s); for (; i > display_count; i--) { - Grob* r = unsmob_element (rests[i-1]->get_grob_property ("rest")); + Grob* r = unsmob_grob (rests[i-1]->get_grob_property ("rest")); if (r) r->suicide (); rests[i-1]->suicide (); @@ -198,7 +198,7 @@ Rest_collision::do_shift (Grob *me, SCM elts) // try to be opposite of noteheads. Direction dir = - Note_column::dir (notes[0]); - Grob * r = unsmob_element (rcol->get_grob_property ("rest")); + Grob * r = unsmob_grob (rcol->get_grob_property ("rest")); Interval restdim = r->extent (r, Y_AXIS); // ?? if (restdim.empty_b ()) diff --git a/lily/rest-engraver.cc b/lily/rest-engraver.cc index 9487b56ee5..599df04ace 100644 --- a/lily/rest-engraver.cc +++ b/lily/rest-engraver.cc @@ -22,7 +22,8 @@ protected: virtual bool try_music (Music *); virtual void stop_translation_timestep (); virtual void start_translation_timestep (); - void deprecated_process_music (); + virtual void create_grobs (); + public: VIRTUAL_COPY_CONS(Translator); @@ -62,7 +63,7 @@ Rest_engraver::stop_translation_timestep () } void -Rest_engraver::deprecated_process_music () +Rest_engraver::create_grobs () { if (rest_req_l_ && !rest_p_) { diff --git a/lily/rest.cc b/lily/rest.cc index b3e5668d35..149c45ba76 100644 --- a/lily/rest.cc +++ b/lily/rest.cc @@ -19,14 +19,14 @@ MAKE_SCHEME_CALLBACK(Rest,after_line_breaking,1); SCM Rest::after_line_breaking (SCM smob) { - Grob *me = unsmob_element (smob); + Grob *me = unsmob_grob (smob); int bt = gh_scm2int (me->get_grob_property ("duration-log")); if (bt == 0) { me->translate_axis (Staff_symbol_referencer::staff_space (me) , Y_AXIS); } - Grob * d = unsmob_element (me->get_grob_property ("dot")); + Grob * d = unsmob_grob (me->get_grob_property ("dot")); if (d && bt > 4) // UGH. { d->set_grob_property ("staff-position", @@ -42,7 +42,7 @@ MAKE_SCHEME_CALLBACK(Rest,brew_molecule,1); SCM Rest::brew_internal_molecule (SCM smob) { - Grob* me = unsmob_element (smob); + Grob* me = unsmob_grob (smob); bool ledger_b =false; diff --git a/lily/rhythmic-head.cc b/lily/rhythmic-head.cc index 65d762c3ea..d3ac1a4867 100644 --- a/lily/rhythmic-head.cc +++ b/lily/rhythmic-head.cc @@ -18,7 +18,7 @@ Item* Rhythmic_head::dots_l (Grob*me) { SCM s = me->get_grob_property ("dot"); - return dynamic_cast (unsmob_element (s)); + return dynamic_cast (unsmob_grob (s)); } int @@ -33,7 +33,7 @@ Item* Rhythmic_head::stem_l (Grob*me) { SCM s = me->get_grob_property ("stem"); - return dynamic_cast (unsmob_element (s)); + return dynamic_cast (unsmob_grob (s)); } int diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index 4db2759a19..9faf178ff6 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -12,11 +12,11 @@ #include "item.hh" #include "score-engraver.hh" #include "paper-score.hh" -#include "musical-request.hh" #include "paper-column.hh" #include "command-request.hh" #include "paper-def.hh" #include "axis-group-interface.hh" +#include "translator-def.hh" Score_engraver::Score_engraver() @@ -76,8 +76,19 @@ Score_engraver::finish() use start/finish? */ void -Score_engraver::do_creation_processing () +Score_engraver::initialize () { + unsmob_translator_def (definition_)->apply_property_operations (this); + + assert (dynamic_cast (output_def_l_)); + assert (!daddy_trans_l_); + pscore_p_ = new Paper_score; + pscore_p_->paper_l_ = dynamic_cast(output_def_l_); + + SCM props = get_property (ly_symbol2scm ("LineOfScore")); + + pscore_p_->typeset_line (new Line_of_score (props)); + make_columns (Moment (0)); scoreline_l_ = pscore_p_->line_l_; @@ -85,14 +96,14 @@ Score_engraver::do_creation_processing () command_column_l_->set_grob_property ("breakable", SCM_BOOL_T); - Engraver_group_engraver::do_creation_processing(); + Engraver_group_engraver::initialize(); } void -Score_engraver::do_removal_processing() +Score_engraver::finalize() { - Engraver_group_engraver::do_removal_processing(); + Engraver_group_engraver::finalize(); scoreline_l_->set_bound(RIGHT,command_column_l_); command_column_l_->set_grob_property ("breakable", SCM_BOOL_T); @@ -105,7 +116,6 @@ void Score_engraver::process() { process_music(); - announces(); pre_move_processing(); check_removal(); @@ -210,16 +220,6 @@ Score_engraver::set_columns (Paper_column *new_command_l, if (*current[i]) { scoreline_l_->add_column ((*current[i])); -#if 0 - /* - TODO: delay this decision. - */ - if (!Paper_column::used_b (*current[i])) - { - (*current[i])->suicide (); - *current[i] =0; - } -#endif } if (news[i]) *current[i] = news[i]; @@ -285,17 +285,4 @@ Score_engraver::forbid_breaks () ADD_THIS_TRANSLATOR(Score_engraver); -void -Score_engraver::do_add_processing () -{ - Translator_group::do_add_processing (); - assert (dynamic_cast (output_def_l_)); - assert (!daddy_trans_l_); - pscore_p_ = new Paper_score; - pscore_p_->paper_l_ = dynamic_cast(output_def_l_); - - SCM props = get_property (ly_symbol2scm ("LineOfScore")); - - pscore_p_->typeset_line (new Line_of_score (props)); -} diff --git a/lily/score-performer.cc b/lily/score-performer.cc index 3479a17b46..317bc3ac9d 100644 --- a/lily/score-performer.cc +++ b/lily/score-performer.cc @@ -14,11 +14,7 @@ #include "midi-stream.hh" #include "string-convert.hh" #include "debug.hh" -#include "score.hh" -#include "source-file.hh" -#include "source.hh" -#include "audio-staff.hh" - +#include "translator-def.hh" ADD_THIS_TRANSLATOR (Score_performer); @@ -105,10 +101,12 @@ Score_performer::get_output_p () } void -Score_performer::do_add_processing () +Score_performer::initialize () { - Translator_group::do_add_processing (); + unsmob_translator_def (definition_)->apply_property_operations (this); assert (dynamic_cast (output_def_l_)); performance_p_ = new Performance; - performance_p_->midi_l_ = dynamic_cast(output_def_l_); + performance_p_->midi_l_ = dynamic_cast(output_def_l_); + + Translator_group::initialize (); } diff --git a/lily/script-column-engraver.cc b/lily/script-column-engraver.cc index 1eaea34a15..93e25140b8 100644 --- a/lily/script-column-engraver.cc +++ b/lily/script-column-engraver.cc @@ -26,8 +26,8 @@ public: protected: virtual void acknowledge_grob (Grob_info); virtual void create_grobs (); - virtual void stop_translation_timestep (); - virtual void start_translation_timestep (); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); }; diff --git a/lily/script-column.cc b/lily/script-column.cc index f72c122319..da37ed12ff 100644 --- a/lily/script-column.cc +++ b/lily/script-column.cc @@ -38,7 +38,7 @@ MAKE_SCHEME_CALLBACK(Script_column,before_line_breaking,1); SCM Script_column::before_line_breaking (SCM smob) { - Grob* me = unsmob_element (smob); + Grob* me = unsmob_grob (smob); Drul_array > arrs; Link_array staff_sided = Pointer_group_interface__extract_elements (me, (Grob*)0, "scripts"); diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc index 20329c302f..4f01800e38 100644 --- a/lily/script-engraver.cc +++ b/lily/script-engraver.cc @@ -17,12 +17,11 @@ class Script_engraver : public Engraver { Link_array script_req_l_arr_; public: - VIRTUAL_COPY_CONS(Translator); - - Script_engraver(); + VIRTUAL_COPY_CONS (Translator); + protected: virtual bool try_music (Music*); - void deprecated_process_music (); + virtual void initialize (); virtual void stop_translation_timestep (); virtual void start_translation_timestep (); virtual void create_grobs (); @@ -30,9 +29,10 @@ protected: }; -Script_engraver::Script_engraver() +void +Script_engraver::initialize () { - start_translation_timestep(); + script_req_l_arr_.clear(); } bool @@ -53,12 +53,6 @@ Script_engraver::try_music (Music *r_l) void Script_engraver::create_grobs () -{ - deprecated_process_music (); -} - -void -Script_engraver::deprecated_process_music() { for (int i=0; i < script_req_l_arr_.size(); i++) { @@ -181,6 +175,6 @@ Script_engraver::start_translation_timestep() script_req_l_arr_.clear(); } -ADD_THIS_TRANSLATOR(Script_engraver); +ADD_THIS_TRANSLATOR (Script_engraver); diff --git a/lily/script.cc b/lily/script.cc index 7143a308af..c680f73d93 100644 --- a/lily/script.cc +++ b/lily/script.cc @@ -42,7 +42,7 @@ MAKE_SCHEME_CALLBACK(Script,after_line_breaking,1); SCM Script::after_line_breaking (SCM smob) { - Grob * me = unsmob_element (smob); + Grob * me = unsmob_grob (smob); Direction d = Side_position::get_direction (me); Side_position::set_direction (me,d); @@ -55,7 +55,7 @@ MAKE_SCHEME_CALLBACK(Script,brew_molecule,1); SCM Script::brew_molecule (SCM smob) { - Grob *me= unsmob_element (smob); + Grob *me= unsmob_grob (smob); #if 0 Direction dir = DOWN; SCM d = me->get_grob_property ("direction"); diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc index 4ee5b7b075..0610762f2d 100644 --- a/lily/separating-group-spanner.cc +++ b/lily/separating-group-spanner.cc @@ -38,7 +38,7 @@ MAKE_SCHEME_CALLBACK(Separating_group_spanner,set_spacing_rods,1); SCM Separating_group_spanner::set_spacing_rods (SCM smob) { - Grob*me = unsmob_element (smob); + Grob*me = unsmob_grob (smob); for (SCM s = me->get_grob_property ("elements"); gh_pair_p (s) && gh_pair_p (gh_cdr (s)); s = gh_cdr (s)) { @@ -48,8 +48,8 @@ Separating_group_spanner::set_spacing_rods (SCM smob) SCM elt = gh_cadr (s); SCM next_elt = gh_car (s); - Item *l = dynamic_cast (unsmob_element (elt)); - Item *r = dynamic_cast (unsmob_element ( next_elt)); + Item *l = dynamic_cast (unsmob_grob (elt)); + Item *r = dynamic_cast (unsmob_grob ( next_elt)); if (!r || !l) continue; @@ -83,7 +83,7 @@ Separating_group_spanner::set_spacing_rods (SCM smob) */ for (SCM s = me->get_grob_property ("elements"); gh_pair_p (s); s = gh_cdr (s)) { - Item * it =dynamic_cast(unsmob_element (gh_car (s))); + Item * it =dynamic_cast(unsmob_grob (gh_car (s))); if (it && it->broken_b ()) { it->find_prebroken_piece (LEFT) ->suicide (); diff --git a/lily/separating-line-group-engraver.cc b/lily/separating-line-group-engraver.cc index bbbf47e54b..024dd9b5f1 100644 --- a/lily/separating-line-group-engraver.cc +++ b/lily/separating-line-group-engraver.cc @@ -21,8 +21,8 @@ protected: Spanner * sep_span_p_; virtual void acknowledge_grob (Grob_info); - virtual void do_creation_processing (); - virtual void do_removal_processing (); + virtual void initialize (); + virtual void finalize (); virtual void stop_translation_timestep (); public: Separating_line_group_engraver (); @@ -37,18 +37,18 @@ Separating_line_group_engraver::Separating_line_group_engraver () } void -Separating_line_group_engraver::do_creation_processing () +Separating_line_group_engraver::initialize () { sep_span_p_ = new Spanner (get_property ("SeparatingGroupSpanner")); Separating_group_spanner::set_interface (sep_span_p_); announce_grob (sep_span_p_, 0); - sep_span_p_->set_bound (LEFT, unsmob_element (get_property ("currentCommandColumn"))); + sep_span_p_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn"))); } void -Separating_line_group_engraver::do_removal_processing () +Separating_line_group_engraver::finalize () { - sep_span_p_->set_bound (RIGHT, unsmob_element (get_property ("currentCommandColumn"))); + sep_span_p_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn"))); typeset_grob (sep_span_p_); sep_span_p_ =0; } diff --git a/lily/separation-item.cc b/lily/separation-item.cc index 1e48e3fec2..42043f5c14 100644 --- a/lily/separation-item.cc +++ b/lily/separation-item.cc @@ -37,10 +37,10 @@ Separation_item::my_width (Grob *me) for (SCM s = me->get_grob_property ("elements"); gh_pair_p (s); s = gh_cdr (s)) { SCM elt = gh_car (s); - if (!unsmob_element (elt)) + if (!unsmob_grob (elt)) continue; - Item *il = dynamic_cast (unsmob_element (elt)); + Item *il = dynamic_cast (unsmob_grob (elt)); if (pc != il->column_l ()) { /* this shouldn't happen, but let's continue anyway. */ diff --git a/lily/side-position-interface.cc b/lily/side-position-interface.cc index 7c15bdb86e..60fbcd8a69 100644 --- a/lily/side-position-interface.cc +++ b/lily/side-position-interface.cc @@ -38,7 +38,7 @@ Side_position::get_direction (Grob*me) } SCM other_elt = me->get_grob_property ("direction-source"); - Grob * e = unsmob_element(other_elt); + Grob * e = unsmob_grob(other_elt); if (e) { return (Direction)(relative_dir * Side_position::get_direction (e)); @@ -55,14 +55,14 @@ MAKE_SCHEME_CALLBACK(Side_position,side_position,2); SCM Side_position::side_position (SCM element_smob, SCM axis) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); Grob *common = me->parent_l (a); SCM support = me->get_grob_property ("side-support-elements"); for (SCM s = support; s != SCM_EOL; s = gh_cdr (s)) { - Grob * e = unsmob_element (gh_car (s)); + Grob * e = unsmob_grob (gh_car (s)); if (e) common = common->common_refpoint (e, a); } @@ -71,7 +71,7 @@ Side_position::side_position (SCM element_smob, SCM axis) for (SCM s = support; s != SCM_EOL; s = gh_cdr (s)) { - Grob * e = unsmob_element ( gh_car (s)); + Grob * e = unsmob_grob ( gh_car (s)); if (e) { dim.unite (e->extent (common, a)); @@ -111,7 +111,7 @@ MAKE_SCHEME_CALLBACK(Side_position,aligned_on_self,2); SCM Side_position::aligned_on_self (SCM element_smob, SCM axis) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); String s ("self-alignment-"); @@ -132,9 +132,9 @@ Side_position::aligned_on_self (SCM element_smob, SCM axis) return gh_double2scm (- ext.linear_combination (gh_scm2double (align))); } } - else if (unsmob_element (align)) + else if (unsmob_grob (align)) { - return gh_double2scm (- unsmob_element (align)->relative_coordinate (me, a)); + return gh_double2scm (- unsmob_grob (align)->relative_coordinate (me, a)); } return gh_double2scm (0.0); } @@ -160,7 +160,7 @@ MAKE_SCHEME_CALLBACK(Side_position,quantised_position,2); SCM Side_position::quantised_position (SCM element_smob, SCM ) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Direction d = Side_position::get_direction (me); @@ -190,7 +190,7 @@ MAKE_SCHEME_CALLBACK(Side_position,aligned_side,2); SCM Side_position::aligned_side (SCM element_smob, SCM axis) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); Direction d = Side_position::get_direction (me); @@ -216,7 +216,7 @@ MAKE_SCHEME_CALLBACK(Side_position,centered_on_parent,2); SCM Side_position::centered_on_parent (SCM element_smob, SCM axis) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); Grob *him = me->parent_l (a); diff --git a/lily/simple-spacer.cc b/lily/simple-spacer.cc index 320867da3c..dce34304d6 100644 --- a/lily/simple-spacer.cc +++ b/lily/simple-spacer.cc @@ -174,7 +174,7 @@ Simple_spacer::add_columns (Link_array cols) spring_params == SCM_UNDEFINED && gh_pair_p (s); s = gh_cdr (s)) { - Grob *other = unsmob_element (gh_caar (s)); + Grob *other = unsmob_grob (gh_caar (s)); if (other != cols[i+1]) continue; @@ -210,7 +210,7 @@ Simple_spacer::add_columns (Link_array cols) for (SCM s = Spaceable_element::get_minimum_distances (cols[i]); gh_pair_p (s); s = gh_cdr (s)) { - Grob * other = unsmob_element (gh_caar (s)); + Grob * other = unsmob_grob (gh_caar (s)); int oi = cols.find_i (other); if (oi >= 0) { diff --git a/lily/slur-engraver.cc b/lily/slur-engraver.cc index 09cecda14e..0ac37d0d09 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -25,11 +25,10 @@ class Slur_engraver : public Engraver protected: virtual bool try_music (Music*); - void deprecated_process_music (); virtual void acknowledge_grob (Grob_info); virtual void stop_translation_timestep (); virtual void start_translation_timestep (); - virtual void do_removal_processing (); + virtual void finalize (); virtual void create_grobs (); public: @@ -87,12 +86,6 @@ Slur_engraver::try_music (Music *req_l) return false; } -void -Slur_engraver::create_grobs () -{ - deprecated_process_music (); -} - void Slur_engraver::set_melisma (bool m) { @@ -113,7 +106,7 @@ Slur_engraver::acknowledge_grob (Grob_info info) } void -Slur_engraver::do_removal_processing () +Slur_engraver::finalize () { for (int i = 0; i < slur_l_stack_.size (); i++) { @@ -137,7 +130,7 @@ Slur_engraver::do_removal_processing () } void -Slur_engraver::deprecated_process_music () +Slur_engraver::create_grobs () { Link_array start_slur_l_arr; for (int i=0; i< new_slur_req_l_arr_.size (); i++) diff --git a/lily/slur.cc b/lily/slur.cc index 257416602d..3a21afe015 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -111,7 +111,7 @@ MAKE_SCHEME_CALLBACK (Slur, after_line_breaking,1); SCM Slur::after_line_breaking (SCM smob) { - Grob *me = unsmob_element (smob); + Grob *me = unsmob_grob (smob); if (!scm_ilength (me->get_grob_property ("note-columns"))) { me->suicide (); @@ -199,9 +199,9 @@ Real Slur::get_first_notecolumn_y (Grob *me, Direction dir) { Grob *col = dir == LEFT - ? unsmob_element (gh_car (scm_reverse (me->get_grob_property + ? unsmob_grob (gh_car (scm_reverse (me->get_grob_property ("note-columns")))) - : unsmob_element + : unsmob_grob (gh_car (me->get_grob_property ("note-columns"))); Grob *common[] = @@ -369,7 +369,7 @@ Slur::encompass_offset (Grob*me, Grob **common) { Offset o; - Grob* stem_l = unsmob_element (col->get_grob_property ("stem")); + Grob* stem_l = unsmob_grob (col->get_grob_property ("stem")); Direction dir = Directional_element_interface::get (me); @@ -422,7 +422,7 @@ Slur::get_encompass_offset_arr (Grob *me) Link_array encompass_arr; while (gh_pair_p (eltlist)) { - encompass_arr.push (unsmob_element (gh_car (eltlist))); + encompass_arr.push (unsmob_grob (gh_car (eltlist))); eltlist =gh_cdr (eltlist); } encompass_arr.reverse (); @@ -482,7 +482,7 @@ MAKE_SCHEME_CALLBACK(Slur,set_spacing_rods,1); SCM Slur::set_spacing_rods (SCM smob) { - Grob*me = unsmob_element (smob); + Grob*me = unsmob_grob (smob); Rod r; Spanner*sp = dynamic_cast(me); @@ -497,6 +497,21 @@ Slur::set_spacing_rods (SCM smob) } +/* + ugh ? + */ +MAKE_SCHEME_CALLBACK(Slur,height,2); +SCM +Slur::height (SCM smob, SCM ax) +{ + Axis a = (Axis)gh_scm2int (ax); + Grob * me = unsmob_grob (smob); + assert ( a == Y_AXIS); + + SCM mol = me->get_uncached_molecule (); + return ly_interval2scm (unsmob_molecule (mol)->extent (a)); +} + /* Ugh should have dash-length + dash-period */ @@ -504,7 +519,7 @@ MAKE_SCHEME_CALLBACK (Slur, brew_molecule,1); SCM Slur::brew_molecule (SCM smob) { - Grob * me = unsmob_element (smob); + Grob * me = unsmob_grob (smob); if (!scm_ilength (me->get_grob_property ("note-columns"))) { me->suicide (); diff --git a/lily/spacing-engraver.cc b/lily/spacing-engraver.cc index 3c6cbac76d..0950112705 100644 --- a/lily/spacing-engraver.cc +++ b/lily/spacing-engraver.cc @@ -48,8 +48,8 @@ protected: virtual void acknowledge_grob (Grob_info); virtual void start_translation_timestep (); virtual void stop_translation_timestep (); - virtual void do_creation_processing (); - virtual void do_removal_processing (); + virtual void initialize (); + virtual void finalize (); public: Spacing_engraver (); }; @@ -73,18 +73,18 @@ Spacing_engraver::Spacing_engraver() } void -Spacing_engraver::do_creation_processing () +Spacing_engraver::initialize () { spacing_p_ =new Spanner (get_property ("SpacingSpanner")); Spacing_spanner::set_interface (spacing_p_); - spacing_p_->set_bound (LEFT, unsmob_element (get_property ("currentCommandColumn"))); + spacing_p_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn"))); announce_grob (spacing_p_, 0); } void -Spacing_engraver::do_removal_processing () +Spacing_engraver::finalize () { - Grob * p = unsmob_element (get_property ("currentCommandColumn")); + Grob * p = unsmob_grob (get_property ("currentCommandColumn")); spacing_p_->set_bound (RIGHT, p); typeset_grob (spacing_p_); spacing_p_ =0; @@ -136,7 +136,7 @@ Spacing_engraver::stop_translation_timestep () shortest_playing = shortest_playing (unsmob_element (get_property ("currentMusicalColumn"))); + = dynamic_cast (unsmob_grob (get_property ("currentMusicalColumn"))); SCM sh = shortest_playing.smobbed_copy( ); SCM st = starter.smobbed_copy(); diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index 3e2e5c7328..94a2bebf25 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -327,7 +327,7 @@ MAKE_SCHEME_CALLBACK(Spacing_spanner, set_springs,1); SCM Spacing_spanner::set_springs (SCM smob) { - Grob *me = unsmob_element (smob); + Grob *me = unsmob_grob (smob); Link_array all (me->pscore_l_->line_l_->column_l_arr ()) ; int j = 0; diff --git a/lily/span-bar.cc b/lily/span-bar.cc index bd02b8afc6..4d9f53a9e4 100644 --- a/lily/span-bar.cc +++ b/lily/span-bar.cc @@ -29,7 +29,7 @@ MAKE_SCHEME_CALLBACK(Span_bar,width_callback,2); SCM Span_bar::width_callback (SCM element_smob, SCM scm_axis) { - Grob *se = unsmob_element (element_smob); + Grob *se = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (scm_axis); assert (a == X_AXIS); String gl = ly_scm2string (se->get_grob_property ("glyph")); @@ -46,8 +46,8 @@ MAKE_SCHEME_CALLBACK(Span_bar,before_line_breaking,1); SCM Span_bar::before_line_breaking (SCM smob) { - evaluate_empty (unsmob_element (smob)); - evaluate_glyph (unsmob_element (smob)); + evaluate_empty (unsmob_grob (smob)); + evaluate_glyph (unsmob_grob (smob)); /* no need to call Bar::before_line_breaking (), because the info @@ -60,7 +60,7 @@ MAKE_SCHEME_CALLBACK(Span_bar,center_on_spanned_callback,2); SCM Span_bar::center_on_spanned_callback (SCM element_smob, SCM axis) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == Y_AXIS); Interval i (get_spanned_interval (me)); @@ -92,7 +92,7 @@ void Span_bar::evaluate_glyph (Grob*me) { SCM elts = me->get_grob_property ("elements"); - Grob * b = unsmob_element (gh_car (elts)); + Grob * b = unsmob_grob (gh_car (elts)); SCM glsym =ly_symbol2scm ("glyph"); SCM gl =b ->get_grob_property (glsym); if (!gh_string_p (gl)) @@ -132,7 +132,7 @@ MAKE_SCHEME_CALLBACK(Span_bar,get_bar_size,1); SCM Span_bar::get_bar_size (SCM smob) { - Grob* me = unsmob_element (smob); + Grob* me = unsmob_grob (smob); Interval iv (get_spanned_interval (me)); if (iv.empty_b ()) { diff --git a/lily/span-dynamic-performer.cc b/lily/span-dynamic-performer.cc index 9f6d490fee..ff0ea71474 100644 --- a/lily/span-dynamic-performer.cc +++ b/lily/span-dynamic-performer.cc @@ -31,7 +31,6 @@ protected: virtual bool try_music (Music*); virtual void acknowledge_grob (Audio_element_info); virtual void create_grobs (); - void deprecated_process_music (); virtual void stop_translation_timestep (); virtual void start_translation_timestep (); @@ -67,7 +66,7 @@ Span_dynamic_performer::acknowledge_grob (Audio_element_info i) } void -Span_dynamic_performer::deprecated_process_music () +Span_dynamic_performer::create_grobs () { if (span_start_req_l_ || span_req_l_drul_[START]) { @@ -106,26 +105,22 @@ Span_dynamic_performer::deprecated_process_music () Audio_dynamic_tuple a = { audio_p_, now_mom () }; dynamic_tuple_arr_.push (a); } -} -void -Span_dynamic_performer::create_grobs () -{ - deprecated_process_music (); - if (span_req_l_drul_[STOP]) - { - finished_dynamic_tuple_arr_.top ().audio_l_->volume_ = last_volume_; - } + if (span_req_l_drul_[STOP]) + { + finished_dynamic_tuple_arr_.top ().audio_l_->volume_ = last_volume_; + } + if (span_req_l_drul_[START]) { - dynamic_tuple_arr_[0].audio_l_->volume_ = last_volume_; + dynamic_tuple_arr_[0].audio_l_->volume_ = last_volume_; } span_start_req_l_ = 0; span_req_l_drul_[START] = 0; span_req_l_drul_[STOP] = 0; } - + void Span_dynamic_performer::stop_translation_timestep () { diff --git a/lily/spanner.cc b/lily/spanner.cc index 56bce58a58..5b67f00571 100644 --- a/lily/spanner.cc +++ b/lily/spanner.cc @@ -327,8 +327,8 @@ extend_spanner_over_item (Item *it, SCM extremal_pair) if (!it) return; Item * col = it->column_l (); - Item * i1 = dynamic_cast (unsmob_element (gh_car (extremal_pair))); - Item * i2 = dynamic_cast (unsmob_element (gh_cdr (extremal_pair))); + Item * i1 = dynamic_cast (unsmob_grob (gh_car (extremal_pair))); + Item * i2 = dynamic_cast (unsmob_grob (gh_cdr (extremal_pair))); int r = Paper_column::rank_i (col); if (!i1 || r < Paper_column::rank_i (i1->column_l ())) { @@ -348,14 +348,14 @@ extend_spanner_over_elements (SCM value, SCM extremal_pair) extend_spanner_over_elements (gh_car (value), extremal_pair); extend_spanner_over_elements (gh_cdr (value), extremal_pair); } - else if (unsmob_element (value)) + else if (unsmob_grob (value)) { - if (Spanner * sp = dynamic_cast (unsmob_element(value))) + if (Spanner * sp = dynamic_cast (unsmob_grob(value))) { extend_spanner_over_item (sp->get_bound (LEFT), extremal_pair); extend_spanner_over_item (sp->get_bound (RIGHT), extremal_pair); } - else if (Item * it= dynamic_cast (unsmob_element(value))) + else if (Item * it= dynamic_cast (unsmob_grob(value))) extend_spanner_over_item (it, extremal_pair); } } @@ -379,8 +379,8 @@ extend_spanner_over_elements (Grob*s) SCM pair = gh_cons (s1,s2); extend_spanner_over_elements (sp->mutable_property_alist_, pair); - Grob *p1 = unsmob_element (gh_car (pair)); - Grob* p2 = unsmob_element (gh_cdr (pair)); + Grob *p1 = unsmob_grob (gh_car (pair)); + Grob* p2 = unsmob_grob (gh_cdr (pair)); sp->set_bound (LEFT,p1); sp->set_bound (RIGHT, p2); diff --git a/lily/staff-performer.cc b/lily/staff-performer.cc index e4381f941c..baffba0432 100644 --- a/lily/staff-performer.cc +++ b/lily/staff-performer.cc @@ -31,8 +31,8 @@ public: protected: virtual void play_element (Audio_element* p); - virtual void do_removal_processing (); - virtual void do_creation_processing (); + virtual void finalize (); + virtual void initialize (); virtual void create_grobs (); virtual void stop_translation_timestep (); @@ -60,7 +60,7 @@ Staff_performer::~Staff_performer () } void -Staff_performer::do_creation_processing () +Staff_performer::initialize () { audio_staff_p_ = new Audio_staff; announce_element (Audio_element_info (audio_staff_p_, 0)); @@ -71,7 +71,7 @@ Staff_performer::do_creation_processing () tempo_p_ = new Audio_tempo (get_tempo_i ()); announce_element (Audio_element_info (tempo_p_, 0)); - Performer_group_performer::do_creation_processing (); + Performer_group_performer::initialize (); } void @@ -85,7 +85,6 @@ Staff_performer::create_grobs () instrument_p_ = new Audio_instrument (str); announce_element (Audio_element_info (instrument_p_, 0)); } - //Performer_group_performer::deprecated_process_music (); } void @@ -115,9 +114,9 @@ Staff_performer::stop_translation_timestep () } void -Staff_performer::do_removal_processing () +Staff_performer::finalize () { - Performer_group_performer::do_removal_processing (); + Performer_group_performer::finalize (); Performer::play_element (audio_staff_p_); audio_staff_p_ = 0; } diff --git a/lily/staff-symbol-engraver.cc b/lily/staff-symbol-engraver.cc index 1686426734..0f29bdc2e3 100644 --- a/lily/staff-symbol-engraver.cc +++ b/lily/staff-symbol-engraver.cc @@ -26,8 +26,8 @@ public: protected: virtual ~Staff_symbol_engraver(); virtual void acknowledge_grob (Grob_info); - virtual void do_removal_processing(); - virtual void do_creation_processing(); + virtual void finalize(); + virtual void initialize(); }; @@ -42,19 +42,19 @@ Staff_symbol_engraver::Staff_symbol_engraver() } void -Staff_symbol_engraver::do_creation_processing() +Staff_symbol_engraver::initialize() { span_p_ = new Spanner (get_property ("StaffSymbol")); - span_p_->set_bound(LEFT, unsmob_element (get_property ("currentCommandColumn"))); + span_p_->set_bound(LEFT, unsmob_grob (get_property ("currentCommandColumn"))); announce_grob (span_p_, 0); } void -Staff_symbol_engraver::do_removal_processing() +Staff_symbol_engraver::finalize() { - span_p_->set_bound(RIGHT,unsmob_element (get_property ("currentCommandColumn"))); + span_p_->set_bound(RIGHT,unsmob_grob (get_property ("currentCommandColumn"))); typeset_grob (span_p_); span_p_ =0; } diff --git a/lily/staff-symbol-referencer.cc b/lily/staff-symbol-referencer.cc index 9b1ae4ad08..1341bf9a02 100644 --- a/lily/staff-symbol-referencer.cc +++ b/lily/staff-symbol-referencer.cc @@ -15,7 +15,7 @@ bool Staff_symbol_referencer::has_interface (Grob*e) { - return unsmob_element (e->get_grob_property ("staff-symbol")) + return unsmob_grob (e->get_grob_property ("staff-symbol")) || gh_number_p (e->get_grob_property ("staff-position")); } @@ -43,7 +43,7 @@ Grob* Staff_symbol_referencer::staff_symbol_l (Grob*me) { SCM st = me->get_grob_property ("staff-symbol"); - return unsmob_element(st); + return unsmob_grob(st); } Real @@ -90,7 +90,7 @@ MAKE_SCHEME_CALLBACK(Staff_symbol_referencer,callback,2); SCM Staff_symbol_referencer::callback (SCM element_smob, SCM ) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); SCM pos = me->get_grob_property ("staff-position"); diff --git a/lily/staff-symbol.cc b/lily/staff-symbol.cc index 7fa97b3e35..7db3226f6c 100644 --- a/lily/staff-symbol.cc +++ b/lily/staff-symbol.cc @@ -22,7 +22,7 @@ MAKE_SCHEME_CALLBACK(Staff_symbol,brew_molecule,1); SCM Staff_symbol::brew_molecule (SCM smob) { - Grob *me = unsmob_element (smob); + Grob *me = unsmob_grob (smob); Spanner* sp = dynamic_cast (me); Grob * common = sp->get_bound (LEFT)->common_refpoint (sp->get_bound (RIGHT), X_AXIS); diff --git a/lily/stem-tremolo.cc b/lily/stem-tremolo.cc index 70d3b0f782..689d24e71f 100644 --- a/lily/stem-tremolo.cc +++ b/lily/stem-tremolo.cc @@ -42,7 +42,7 @@ MAKE_SCHEME_CALLBACK(Stem_tremolo,dim_callback,2); SCM Stem_tremolo::dim_callback (SCM e, SCM ) { - Grob * se = unsmob_element (e); + Grob * se = unsmob_grob (e); Real space = Staff_symbol_referencer::staff_space (se); return ly_interval2scm ( Interval (-space, space)); @@ -54,8 +54,8 @@ MAKE_SCHEME_CALLBACK(Stem_tremolo,brew_molecule,1); SCM Stem_tremolo::brew_molecule (SCM smob) { - Grob *me= unsmob_element (smob); - Grob * stem = unsmob_element (me->get_grob_property ("stem")); + Grob *me= unsmob_grob (smob); + Grob * stem = unsmob_grob (me->get_grob_property ("stem")); Grob * beam = Stem::beam_l (stem); Real dydx; diff --git a/lily/stem.cc b/lily/stem.cc index 316cebb520..a69f476f93 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -132,7 +132,7 @@ Grob* Stem::support_head (Grob*me) { SCM h = me->get_grob_property ("support-head"); - Grob * nh = unsmob_element (h); + Grob * nh = unsmob_grob (h); if (nh) return nh; else if (heads_i (me) == 1) @@ -141,7 +141,7 @@ Stem::support_head (Grob*me) UGH. */ - return unsmob_element (gh_car (me->get_grob_property ("heads"))); + return unsmob_grob (gh_car (me->get_grob_property ("heads"))); } else return first_head (me); @@ -179,7 +179,7 @@ Stem::extremal_heads (Grob*me) for (SCM s = me->get_grob_property ("heads"); gh_pair_p (s); s = gh_cdr (s)) { - Grob * n = unsmob_element (gh_car (s)); + Grob * n = unsmob_grob (gh_car (s)); int p = int(Staff_symbol_referencer::position_f (n)); @@ -362,7 +362,7 @@ MAKE_SCHEME_CALLBACK(Stem,before_line_breaking,1); SCM Stem::before_line_breaking (SCM smob) { - Grob*me = unsmob_element (smob); + Grob*me = unsmob_grob (smob); stem_end_position (me); // ugh. Trigger direction calc. position_noteheads (me); @@ -427,9 +427,9 @@ Stem::dim_callback (SCM e, SCM ax) { Axis a = (Axis) gh_scm2int (ax); assert (a == X_AXIS); - Grob *se = unsmob_element (e); + Grob *se = unsmob_grob (e); Interval r (0, 0); - if (unsmob_element (se->get_grob_property ("beam")) || abs (flag_i (se)) <= 2) + if (unsmob_grob (se->get_grob_property ("beam")) || abs (flag_i (se)) <= 2) ; // TODO! else { @@ -447,7 +447,7 @@ MAKE_SCHEME_CALLBACK(Stem,brew_molecule,1); SCM Stem::brew_molecule (SCM smob) { - Grob*me = unsmob_element (smob); + Grob*me = unsmob_grob (smob); Molecule mol; Direction d = get_direction (me); @@ -487,7 +487,7 @@ MAKE_SCHEME_CALLBACK(Stem,off_callback,2); SCM Stem::off_callback (SCM element_smob, SCM ) { - Grob *me = unsmob_element (element_smob); + Grob *me = unsmob_grob (element_smob); Real r=0; if (Grob * f = first_head (me)) @@ -510,7 +510,7 @@ Grob* Stem::beam_l (Grob*me) { SCM b= me->get_grob_property ("beam"); - return unsmob_element (b); + return unsmob_grob (b); } diff --git a/lily/sustain-pedal.cc b/lily/sustain-pedal.cc index 91a8308114..c807868387 100644 --- a/lily/sustain-pedal.cc +++ b/lily/sustain-pedal.cc @@ -38,7 +38,7 @@ MAKE_SCHEME_CALLBACK(Sustain_pedal,brew_molecule,1); SCM Sustain_pedal::brew_molecule (SCM smob) { - Grob * e = unsmob_element (smob); + Grob * e = unsmob_grob (smob); Molecule mol; SCM glyph = e->get_grob_property ("text"); diff --git a/lily/system-start-delimiter-engraver.cc b/lily/system-start-delimiter-engraver.cc index 36a9aec7df..169537a5df 100644 --- a/lily/system-start-delimiter-engraver.cc +++ b/lily/system-start-delimiter-engraver.cc @@ -25,8 +25,8 @@ public: protected: Spanner * delim_; virtual void acknowledge_grob (Grob_info); - virtual void do_creation_processing (); - virtual void do_removal_processing (); + virtual void initialize (); + virtual void finalize (); }; ADD_THIS_TRANSLATOR(System_start_delimiter_engraver); @@ -63,20 +63,20 @@ System_start_delimiter_engraver::System_start_delimiter_engraver() } void -System_start_delimiter_engraver::do_creation_processing() +System_start_delimiter_engraver::initialize() { delim_ = new Spanner (get_property ("SystemStartDelimiter")); - delim_->set_bound (LEFT, unsmob_element (get_property ("currentCommandColumn"))); + delim_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn"))); announce_grob (delim_,0); } void -System_start_delimiter_engraver::do_removal_processing () +System_start_delimiter_engraver::finalize () { - delim_->set_bound (RIGHT, unsmob_element (get_property ("currentCommandColumn"))); + delim_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn"))); typeset_grob (delim_); } diff --git a/lily/system-start-delimiter.cc b/lily/system-start-delimiter.cc index f75ec5591c..ebbdab9a96 100644 --- a/lily/system-start-delimiter.cc +++ b/lily/system-start-delimiter.cc @@ -64,7 +64,7 @@ MAKE_SCHEME_CALLBACK(System_start_delimiter,after_line_breaking,1); SCM System_start_delimiter::after_line_breaking (SCM smob) { - try_collapse (unsmob_element (smob)); + try_collapse (unsmob_grob (smob)); return SCM_UNSPECIFIED; } @@ -86,7 +86,7 @@ MAKE_SCHEME_CALLBACK(System_start_delimiter,brew_molecule,1); SCM System_start_delimiter::brew_molecule (SCM smob) { - Grob * me = unsmob_element (smob); + Grob * me = unsmob_grob (smob); Interval ext = ly_scm2interval (Axis_group_interface::group_extent_callback (me->self_scm(), gh_int2scm (Y_AXIS))); Real l = ext.length (); Molecule m; diff --git a/lily/tempo-performer.cc b/lily/tempo-performer.cc index 015914aefb..78492a6dbb 100644 --- a/lily/tempo-performer.cc +++ b/lily/tempo-performer.cc @@ -49,7 +49,9 @@ Tempo_performer::create_grobs () { SCM met = tempo_req_l_->get_mus_property ("metronome-count"); - audio_p_ = new Audio_tempo (tempo_req_l_->dur_.length_mom () / + Duration *d = unsmob_duration (tempo_req_l_->get_mus_property ("tempo")); + + audio_p_ = new Audio_tempo (d->length_mom () / Moment (1, 4) * Moment(gh_scm2int (met))); diff --git a/lily/text-engraver.cc b/lily/text-engraver.cc index 05b078285d..b58467b016 100644 --- a/lily/text-engraver.cc +++ b/lily/text-engraver.cc @@ -30,7 +30,6 @@ protected: virtual void stop_translation_timestep (); virtual void start_translation_timestep (); virtual void create_grobs (); - void deprecated_process_music (); virtual void acknowledge_grob (Grob_info); }; @@ -79,12 +78,6 @@ Text_engraver::acknowledge_grob (Grob_info inf) void Text_engraver::create_grobs () -{ - deprecated_process_music (); -} - -void -Text_engraver::deprecated_process_music () { if (texts_.size ()) return; diff --git a/lily/text-item.cc b/lily/text-item.cc index eb95bbf367..34c710db9d 100644 --- a/lily/text-item.cc +++ b/lily/text-item.cc @@ -180,7 +180,7 @@ MAKE_SCHEME_CALLBACK (Text_item, brew_molecule, 1); SCM Text_item::brew_molecule (SCM smob) { - Grob *me = unsmob_element (smob); + Grob *me = unsmob_grob (smob); SCM text = me->get_grob_property ("text"); diff --git a/lily/text-spanner-engraver.cc b/lily/text-spanner-engraver.cc index 1a8280ab81..e004d14ae2 100644 --- a/lily/text-spanner-engraver.cc +++ b/lily/text-spanner-engraver.cc @@ -26,10 +26,9 @@ public: Text_spanner_engraver (); protected: - virtual void do_removal_processing (); + virtual void finalize (); virtual void acknowledge_grob (Grob_info); virtual bool try_music (Music *); - void deprecated_process_music (); virtual void stop_translation_timestep (); virtual void start_translation_timestep (); virtual void create_grobs (); @@ -86,12 +85,6 @@ Text_spanner_engraver::try_music (Music *m) void Text_spanner_engraver::create_grobs () -{ - deprecated_process_music (); -} - -void -Text_spanner_engraver::deprecated_process_music () { ///// if (req_drul_[STOP]) @@ -104,7 +97,7 @@ Text_spanner_engraver::deprecated_process_music () else { assert (!finished_); - Grob* e = unsmob_element (get_property ("currentMusicalColumn")); + Grob* e = unsmob_grob (get_property ("currentMusicalColumn")); span_->set_bound (RIGHT, e); finished_ = span_; @@ -125,7 +118,7 @@ Text_spanner_engraver::deprecated_process_music () current_req_ = req_drul_[START]; span_ = new Spanner (get_property ("TextSpanner")); Side_position::set_axis (span_, Y_AXIS); - Grob *e = unsmob_element (get_property ("currentMusicalColumn")); + Grob *e = unsmob_grob (get_property ("currentMusicalColumn")); span_->set_bound (LEFT, e); announce_grob (span_, req_drul_[START]); } @@ -160,7 +153,7 @@ Text_spanner_engraver::stop_translation_timestep () } void -Text_spanner_engraver::do_removal_processing () +Text_spanner_engraver::finalize () { typeset_all (); if (span_) diff --git a/lily/text-spanner.cc b/lily/text-spanner.cc index cce4e27b93..e84fee6f47 100644 --- a/lily/text-spanner.cc +++ b/lily/text-spanner.cc @@ -31,7 +31,7 @@ MAKE_SCHEME_CALLBACK (Text_spanner, brew_molecule, 1); SCM Text_spanner::brew_molecule (SCM smob) { - Grob *me= unsmob_element (smob); + Grob *me= unsmob_grob (smob); Spanner *spanner = dynamic_cast (me); Real staff_space = Staff_symbol_referencer::staff_space (me); diff --git a/lily/tie-column.cc b/lily/tie-column.cc index 552c98de70..dcb5e5be8b 100644 --- a/lily/tie-column.cc +++ b/lily/tie-column.cc @@ -119,6 +119,6 @@ MAKE_SCHEME_CALLBACK(Tie_column,after_line_breaking,1); SCM Tie_column::after_line_breaking (SCM smob) { - set_directions (unsmob_element (smob)); + set_directions (unsmob_grob (smob)); return SCM_UNSPECIFIED; } diff --git a/lily/tie-engraver.cc b/lily/tie-engraver.cc index 981e71c028..953bdb0ff3 100644 --- a/lily/tie-engraver.cc +++ b/lily/tie-engraver.cc @@ -178,8 +178,8 @@ Tie_engraver::create_grobs () SCM pair = gh_list_ref (head_list, gh_int2scm (i/2)); Spanner * p = new Spanner (basic); - Tie::set_head (p,LEFT, dynamic_cast (unsmob_element (gh_car (pair)))); - Tie::set_head (p,RIGHT, dynamic_cast (unsmob_element (gh_cdr (pair)))); + Tie::set_head (p,LEFT, dynamic_cast (unsmob_grob (gh_car (pair)))); + Tie::set_head (p,RIGHT, dynamic_cast (unsmob_grob (gh_cdr (pair)))); tie_p_arr_.push (p); announce_grob (p, req_l_); @@ -189,8 +189,8 @@ Tie_engraver::create_grobs () Grob * p = new Spanner (basic); Tie::set_interface (p); - Tie::set_head (p, LEFT, dynamic_cast (unsmob_element (gh_caar (s)))); - Tie::set_head (p, RIGHT, dynamic_cast (unsmob_element (gh_cdar (s)))); + Tie::set_head (p, LEFT, dynamic_cast (unsmob_grob (gh_caar (s)))); + Tie::set_head (p, RIGHT, dynamic_cast (unsmob_grob (gh_cdar (s)))); tie_p_arr_.push (p); announce_grob (p, req_l_); diff --git a/lily/tie-performer.cc b/lily/tie-performer.cc index 6edbf83333..fca448b622 100644 --- a/lily/tie-performer.cc +++ b/lily/tie-performer.cc @@ -40,7 +40,7 @@ class Tie_performer : public Performer { public: VIRTUAL_COPY_CONS(Translator); - + Tie_performer (); private: bool done_; PQueue past_notes_pq_; @@ -50,6 +50,7 @@ private: Link_array tie_p_arr_; protected: + virtual void initialize (); virtual void start_translation_timestep (); virtual void stop_translation_timestep (); virtual void acknowledge_grob (Audio_element_info); @@ -57,8 +58,34 @@ protected: virtual void create_grobs (); }; + +Tie_performer::Tie_performer () +{ + req_l_ = 0; + done_ = false; +} + ADD_THIS_TRANSLATOR (Tie_performer); + +#if 0 +Tie_performer::Tie_performer () +{ + // URG + // if we don't do this, lily dumps core + // which means that ``initialize'' and + // ``start_translation_timestep'' did not happen?! + initialize (); +} +#endif + +void +Tie_performer::initialize () +{ + req_l_ = 0; +} + + bool Tie_performer::try_music (Music *m) { diff --git a/lily/tie.cc b/lily/tie.cc index bf8805d1b7..3b18810532 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -65,7 +65,7 @@ Tie::head (Grob*me, Direction d) SCM c = me->get_grob_property ("heads"); c = index_cell (c, d); - return unsmob_element (c); + return unsmob_grob (c); } Real @@ -110,7 +110,7 @@ Tie::get_default_dir (Grob*me) SCM Tie::get_control_points (SCM smob) { - Spanner*me = dynamic_cast (unsmob_element (smob)); + Spanner*me = dynamic_cast (unsmob_grob (smob)); Direction headdir = CENTER; if (head (me,LEFT)) headdir = LEFT; @@ -286,7 +286,7 @@ MAKE_SCHEME_CALLBACK(Tie,set_spacing_rods,1); SCM Tie::set_spacing_rods (SCM smob) { - Grob*me = unsmob_element (smob); + Grob*me = unsmob_grob (smob); Spanner*sp = dynamic_cast (me); Rod r; @@ -304,7 +304,7 @@ MAKE_SCHEME_CALLBACK(Tie,brew_molecule,1); SCM Tie::brew_molecule (SCM smob) { - Grob*me = unsmob_element (smob); + Grob*me = unsmob_grob (smob); SCM cp = me->get_grob_property ("control-points"); if (cp == SCM_EOL) diff --git a/lily/time-scaled-music.cc b/lily/time-scaled-music.cc index 868cedf3c0..a0d355ef9d 100644 --- a/lily/time-scaled-music.cc +++ b/lily/time-scaled-music.cc @@ -13,11 +13,12 @@ Time_scaled_music::Time_scaled_music (int n, int d,Music *mp) : Music_wrapper (mp) { - num_i_ = n; - den_i_ = d; - compress (Moment (num_i_,den_i_)); + set_mus_property ("numerator", gh_int2scm (n)); + set_mus_property ("denominator", gh_int2scm (d)); set_mus_property ("type", Time_scaled_music_iterator::constructor_cxx_function); + + compress (Moment (n,d)); } diff --git a/lily/time-signature-engraver.cc b/lily/time-signature-engraver.cc index 69646280db..9a4e2b4ee4 100644 --- a/lily/time-signature-engraver.cc +++ b/lily/time-signature-engraver.cc @@ -32,7 +32,7 @@ public: Time_signature_engraver::Time_signature_engraver() { time_signature_p_ =0; - last_time_fraction_ = SCM_EOL; + last_time_fraction_ = SCM_BOOL_F; } void @@ -42,7 +42,7 @@ Time_signature_engraver::create_grobs() not rigorously safe, since the value might get GC'd and reallocated in the same spot */ SCM fr= get_property ("timeSignatureFraction"); - if (last_time_fraction_ != fr) + if (!time_signature_p_ && last_time_fraction_ != fr) { last_time_fraction_ = fr; time_signature_p_ = new Item (get_property ("TimeSignature")); diff --git a/lily/time-signature.cc b/lily/time-signature.cc index 263cccb149..aa65da6e20 100644 --- a/lily/time-signature.cc +++ b/lily/time-signature.cc @@ -21,7 +21,7 @@ MAKE_SCHEME_CALLBACK(Time_signature,brew_molecule,1); SCM Time_signature::brew_molecule (SCM smob) { - Grob * me = unsmob_element (smob); + Grob * me = unsmob_grob (smob); SCM st = me->get_grob_property ("style"); SCM frac = me->get_grob_property ("fraction"); int n = 4; diff --git a/lily/timing-engraver.cc b/lily/timing-engraver.cc index 5134e67233..d246f08f0d 100644 --- a/lily/timing-engraver.cc +++ b/lily/timing-engraver.cc @@ -22,6 +22,7 @@ class Timing_engraver : public Timing_translator, public Engraver protected: virtual void start_translation_timestep (); virtual void stop_translation_timestep (); + virtual void process_music (); public: VIRTUAL_COPY_CONS(Translator); }; @@ -61,4 +62,11 @@ Timing_engraver::stop_translation_timestep () } - +/* + ugh. Translator doesn't do process_music (). + */ +void +Timing_engraver::process_music () +{ + Timing_translator::process_music (); +} diff --git a/lily/timing-translator.cc b/lily/timing-translator.cc index 9efa2fd4b5..16fe82b6e6 100644 --- a/lily/timing-translator.cc +++ b/lily/timing-translator.cc @@ -31,7 +31,7 @@ Timing_translator::try_music (Music*r) } void -Timing_translator::deprecated_process_music() +Timing_translator::process_music() { if (check_ && measure_position ()) { @@ -87,7 +87,7 @@ Timing_translator::stop_translation_timestep() ADD_THIS_TRANSLATOR(Timing_translator); void -Timing_translator::do_creation_processing() +Timing_translator::initialize() { Moment m; daddy_trans_l_->set_property ("timing" , SCM_BOOL_T); diff --git a/lily/translator-group.cc b/lily/translator-group.cc index 57713c5d18..e2fdcdb4de 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -70,8 +70,12 @@ Translator_group::add_translator (SCM list, Translator *t) list = gh_append2 (list, gh_cons (t->self_scm (), SCM_EOL)); t->daddy_trans_l_ = this; t->output_def_l_ = output_def_l_; - t->add_processing (); - t->do_creation_processing (); + if (Translator_group*tg = dynamic_cast (t)) + { + unsmob_translator_def (tg->definition_)->apply_property_operations (tg); + } + + t->initialize (); return list; } void @@ -254,18 +258,6 @@ Translator_group::each (Method_pointer method) } - -void -Translator_group::do_add_processing () -{ - unsmob_translator_def (definition_)->apply_property_operations (this); - for (SCM s = simple_trans_list_; gh_pair_p (s) ; s = gh_cdr (s)) - { - Translator * t = unsmob_translator (gh_car (s)); - t->add_processing (); - } -} - /* PROPERTIES */ @@ -385,13 +377,13 @@ Translator_group::do_announces () } void -Translator_group::do_creation_processing () +Translator_group::initialize () { - each (&Translator::do_creation_processing); + each (&Translator::initialize); } void -Translator_group::do_removal_processing () +Translator_group::finalize () { each (&Translator::removal_processing); } diff --git a/lily/translator.cc b/lily/translator.cc index 485f807eb1..0345c2c370 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -72,16 +72,7 @@ Translator::now_mom () const } -void -Translator::add_processing () -{ - do_add_processing (); -} -void -Translator::do_add_processing () -{ -} void @@ -93,7 +84,7 @@ Translator::post_move_processing () void Translator::removal_processing () { - do_removal_processing (); + finalize (); } @@ -146,12 +137,12 @@ Translator::do_announces () } void -Translator::do_creation_processing () +Translator::initialize () { } void -Translator::do_removal_processing () +Translator::finalize () { } diff --git a/lily/transposed-music.cc b/lily/transposed-music.cc index 74aa3006ec..166f68c968 100644 --- a/lily/transposed-music.cc +++ b/lily/transposed-music.cc @@ -13,7 +13,6 @@ Transposed_music::Transposed_music (Music *p, Pitch pit) : Music_wrapper (p) { - transpose_to_pitch_ = pit; p->transpose (pit); set_mus_property ("type", ly_symbol2scm ("transposed-music")); } diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc index 042541746e..d6bcec2460 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -32,10 +32,9 @@ protected: /// The spanners. Array order is synced with time_scaled_music_arr_ Link_array started_span_p_arr_; - virtual void do_removal_processing (); + virtual void finalize (); virtual void acknowledge_grob (Grob_info); virtual bool try_music (Music*r); - void deprecated_process_music (); virtual void start_translation_timestep (); virtual void create_grobs (); }; @@ -65,12 +64,6 @@ Tuplet_engraver::try_music (Music *r) void Tuplet_engraver::create_grobs () -{ - deprecated_process_music (); -} - -void -Tuplet_engraver::deprecated_process_music () { SCM v = get_property ("tupletInvisible"); if (to_boolean (v)) @@ -88,8 +81,9 @@ Tuplet_engraver::deprecated_process_music () else started_span_p_arr_[i] = glep; - glep->set_grob_property ("text", - ly_str02scm (to_str (time_scaled_music_arr_[i]->den_i_).ch_C())); + + int d = gh_scm2int (time_scaled_music_arr_[i]->get_mus_property ("denominator")); + glep->set_grob_property ("text", ly_str02scm (to_str (d).ch_C())); announce_grob (glep, time_scaled_music_arr_ [i]); } @@ -153,7 +147,7 @@ Tuplet_engraver::start_translation_timestep () } void -Tuplet_engraver::do_removal_processing () +Tuplet_engraver::finalize () { for (int i=0; i < started_span_p_arr_.size (); i++) { diff --git a/lily/tuplet-spanner.cc b/lily/tuplet-spanner.cc index 3e1d173400..b17a053a55 100644 --- a/lily/tuplet-spanner.cc +++ b/lily/tuplet-spanner.cc @@ -38,7 +38,7 @@ MAKE_SCHEME_CALLBACK(Tuplet_spanner,brew_molecule,1); SCM Tuplet_spanner::brew_molecule (SCM smob) { - Grob *me= unsmob_element (smob); + Grob *me= unsmob_grob (smob); Molecule mol; // Default behaviour: number always, bracket when no beam! @@ -193,7 +193,7 @@ MAKE_SCHEME_CALLBACK(Tuplet_spanner,after_line_breaking,1); SCM Tuplet_spanner::after_line_breaking (SCM smob) { - Grob * me = unsmob_element (smob); + Grob * me = unsmob_grob (smob); Link_array column_arr= Pointer_group_interface__extract_elements (me, (Note_column*)0, "columns"); Spanner *sp = dynamic_cast (me); @@ -223,7 +223,7 @@ Tuplet_spanner::after_line_breaking (SCM smob) if (scm_ilength (me->get_grob_property ("beams")) == 1) { SCM bs = me->get_grob_property ("beams"); - Grob *b = unsmob_element (gh_car (bs)); + Grob *b = unsmob_grob (gh_car (bs)); Spanner * beam_l = dynamic_cast (b); if (!sp->broken_b () && sp->get_bound (LEFT)->column_l () == beam_l->get_bound (LEFT)->column_l () @@ -249,7 +249,7 @@ Tuplet_spanner::get_default_dir (Grob*me) d = UP ; for (SCM s = me->get_grob_property ("columns"); gh_pair_p (s); s = gh_cdr (s)) { - Grob * nc = unsmob_element (gh_car (s)); + Grob * nc = unsmob_grob (gh_car (s)); if (Note_column::dir (nc) < 0) { d = DOWN; diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc index 408359e329..442731b5f3 100644 --- a/lily/vertical-align-engraver.cc +++ b/lily/vertical-align-engraver.cc @@ -22,8 +22,8 @@ public: Vertical_align_engraver(); protected: virtual void acknowledge_grob (Grob_info); - virtual void do_creation_processing(); - virtual void do_removal_processing(); + virtual void initialize(); + virtual void finalize(); }; Vertical_align_engraver::Vertical_align_engraver() @@ -32,17 +32,17 @@ Vertical_align_engraver::Vertical_align_engraver() } void -Vertical_align_engraver::do_creation_processing() +Vertical_align_engraver::initialize() { valign_p_ =new Spanner (get_property ("VerticalAlignment")); - valign_p_->set_bound(LEFT,unsmob_element (get_property ("currentCommandColumn"))); + valign_p_->set_bound(LEFT,unsmob_grob (get_property ("currentCommandColumn"))); announce_grob (valign_p_ , 0); } void -Vertical_align_engraver::do_removal_processing() +Vertical_align_engraver::finalize() { - valign_p_->set_bound(RIGHT,unsmob_element (get_property ("currentCommandColumn"))); + valign_p_->set_bound(RIGHT,unsmob_grob (get_property ("currentCommandColumn"))); typeset_grob (valign_p_); valign_p_ =0; } diff --git a/lily/volta-engraver.cc b/lily/volta-engraver.cc index d53dbbedd7..6396ab4275 100644 --- a/lily/volta-engraver.cc +++ b/lily/volta-engraver.cc @@ -28,7 +28,7 @@ protected: virtual void start_translation_timestep (); virtual void acknowledge_grob (Grob_info); - virtual void do_removal_processing (); + virtual void finalize (); virtual void stop_translation_timestep (); void deprecated_process_music (); virtual void create_grobs (); @@ -155,7 +155,7 @@ Volta_engraver::acknowledge_grob (Grob_info i) } void -Volta_engraver::do_removal_processing () +Volta_engraver::finalize () { if (volta_span_p_) { diff --git a/lily/volta-spanner.cc b/lily/volta-spanner.cc index 942dd73a5e..3046205792 100644 --- a/lily/volta-spanner.cc +++ b/lily/volta-spanner.cc @@ -39,7 +39,7 @@ MAKE_SCHEME_CALLBACK(Volta_spanner,brew_molecule,1); SCM Volta_spanner::brew_molecule (SCM smob) { - Grob *me = unsmob_element (smob); + Grob *me = unsmob_grob (smob); Link_array bar_arr = Pointer_group_interface__extract_elements (me, (Item*)0, "bars"); diff --git a/scm/element-descriptions.scm b/scm/element-descriptions.scm index 14b73fd75c..97c1fac4b0 100644 --- a/scm/element-descriptions.scm +++ b/scm/element-descriptions.scm @@ -99,7 +99,7 @@ (breakable . #t ) (molecule-callback . ,Custos::brew_molecule) (visibility-lambda . ,end-of-line-visible) - (style . "vaticana") + (style . vaticana) (Y-offset-callbacks . (,Staff_symbol_referencer::callback)) (meta . ,(element-description "Custos" custos-interface staff-symbol-interface break-aligned-interface) ) )) diff --git a/scm/slur.scm b/scm/slur.scm index 66cb8c2e66..a91bc2f04e 100644 --- a/scm/slur.scm +++ b/scm/slur.scm @@ -117,6 +117,7 @@ (extremity-rules . ,default-slur-extremity-rules) (extremity-offset-alist . ,default-slur-extremity-offset-alist) (de-uglify-parameters . ( 1.5 0.8 -2.0)) + (Y-extent-callback . ,Slur::height) (details . ((height-limit . 2.0) (ratio . 0.333) (force-blowfit . 0.5) (bezier-pct-c0 . -0.2) (bezier-pct-c3 . 0.000006) (bezier-pct-out-max . 0.8) (bezier-pct-in-max . 1.2)