diff options
author | Han-Wen Nienhuys <hanwen@xs4all.nl> | 2000-11-22 22:14:22 +0100 |
---|---|---|
committer | Han-Wen Nienhuys <hanwen@xs4all.nl> | 2000-11-22 22:14:22 +0100 |
commit | 07a5ed85c189a97d04c550679826dfc5eca2eb18 (patch) | |
tree | e5d4685947f6b5c9c9cf6e621dce148fc78fc30c | |
parent | f7abba6f6ea0cbd6e41971f30f2c930e7ce0df42 (diff) |
release: 1.3.110
============
* 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.h
130 files changed, 490 insertions, 463 deletions
@@ -7,16 +7,30 @@ * Cleanup in Auto-beam-engraver (still broken, because timings are off?) -1.3.109.jcn1 -============ - * 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.108.uu1 -=========== +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. @@ -38,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 f3c739c46d..ce76388365 100644 --- a/Documentation/topdocs/index.tely +++ b/Documentation/topdocs/index.tely @@ -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 <a name="download-source"> @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=109 -MY_PATCH_LEVEL=jcn2 +PATCH_LEVEL=110 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. 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 22561d0d24..d5af0fcf66 100644 --- a/lily/auto-beam-engraver.cc +++ b/lily/auto-beam-engraver.cc @@ -33,7 +33,7 @@ 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 (); @@ -181,7 +181,7 @@ Auto_beam_engraver::test_moment (Direction dir, Moment test_mom) void Auto_beam_engraver::consider_begin (Moment test_mom) { - SCM off = to_boolean (get_property ("noAutoBeaming")); + bool off = to_boolean (get_property ("noAutoBeaming")); if (!stem_l_arr_p_ && ! off) { bool b = test_moment (START, test_mom); @@ -310,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 (); @@ -453,8 +453,8 @@ Auto_beam_engraver::create_grobs () } /* - Ugh. - gcc: 2.95.3-2c (latest and greatest from Franz Sirl for ppc) - auto-beam-engraver.cc:459: warning: value computed is not used */ - count_i_++; + 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<Grob> 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 d81996fd61..32bd40368e 100644 --- a/lily/bar-engraver.cc +++ b/lily/bar-engraver.cc @@ -27,7 +27,7 @@ public: void request_bar (String type_str); protected: - virtual void do_removal_processing (); + virtual void finalize (); virtual void stop_translation_timestep(); virtual void create_grobs (); @@ -59,7 +59,7 @@ Bar_engraver::create_bar () } void -Bar_engraver::do_removal_processing () +Bar_engraver::finalize () { typeset_bar (); } diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc index 1b4646f14c..ce129ffd9b 100644 --- a/lily/bar-number-engraver.cc +++ b/lily/bar-number-engraver.cc @@ -26,7 +26,7 @@ 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(); @@ -62,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<Item*> (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 6724ac8b4b..80b812b951 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -44,7 +44,7 @@ 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*); @@ -211,7 +211,7 @@ Beam_engraver::stop_translation_timestep () } void -Beam_engraver::do_removal_processing () +Beam_engraver::finalize () { typeset_beam (); if (beam_p_) 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<Item*> (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.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.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<Item*> (unsmob_element (smob)); + Item* me = dynamic_cast<Item*> (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 6296b225fc..4c9a9e01a1 100644 --- a/lily/chord-tremolo-engraver.cc +++ b/lily/chord-tremolo-engraver.cc @@ -57,7 +57,7 @@ protected: Spanner * finished_beam_p_; protected: - virtual void do_removal_processing(); + virtual void finalize(); virtual bool try_music (Music*); virtual void acknowledge_grob (Grob_info); virtual void stop_translation_timestep(); @@ -111,7 +111,7 @@ Chord_tremolo_engraver::create_grobs () void -Chord_tremolo_engraver::do_removal_processing () +Chord_tremolo_engraver::finalize () { typeset_beam (); if (beam_p_) 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<Item*> (unsmob_element (smob)); + Item * s = dynamic_cast<Item*> (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 <Tempo_req const*> (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<Spanner*>(me); Real line = me->paper_l ()->get_var ("stafflinethickness"); diff --git a/lily/custos-engraver.cc b/lily/custos-engraver.cc index 4f8cbcf5e3..aed720a86f 100644 --- a/lily/custos-engraver.cc +++ b/lily/custos-engraver.cc @@ -28,7 +28,7 @@ public: virtual void acknowledge_grob(Grob_info); virtual void create_grobs (); virtual void stop_translation_timestep (); - virtual void do_removal_processing (); + virtual void finalize (); VIRTUAL_COPY_CONS(Translator); private: @@ -126,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<Grob> 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 278662636b..7b5b536113 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -54,7 +54,7 @@ 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); virtual void stop_translation_timestep (); @@ -205,7 +205,7 @@ Dynamic_engraver::create_grobs () 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); @@ -268,7 +268,7 @@ Dynamic_engraver::create_grobs () } 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]); @@ -286,7 +286,7 @@ Dynamic_engraver::stop_translation_timestep () } void -Dynamic_engraver::do_removal_processing () +Dynamic_engraver::finalize () { typeset_all (); if (line_spanner_) @@ -310,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/extender-engraver.cc b/lily/extender-engraver.cc index c82648d9f2..a365c25d0d 100644 --- a/lily/extender-engraver.cc +++ b/lily/extender-engraver.cc @@ -38,7 +38,7 @@ public: protected: virtual void acknowledge_grob (Grob_info); - virtual void do_removal_processing(); + virtual void finalize(); virtual bool try_music (Music*); virtual void stop_translation_timestep(); virtual void start_translation_timestep (); @@ -91,12 +91,12 @@ 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"))); } } 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<Paper_column*>( unsmob_element (get_property ("currentMusicalColumn"))); + last_musical_col_l_ = dynamic_cast<Paper_column*>( 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<Line_of_score*> (unsmob_element (criterion)); + = dynamic_cast<Line_of_score*> (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<Spanner*> (unsmob_element (slur))->get_bound (to_dir (dir))->self_scm (); + return dynamic_cast<Spanner*> (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 224a517b6e..44eb929805 100644 --- a/lily/hyphen-engraver.cc +++ b/lily/hyphen-engraver.cc @@ -32,7 +32,7 @@ public: protected: virtual void acknowledge_grob (Grob_info); - virtual void do_removal_processing(); + virtual void finalize(); virtual bool try_music (Music*); virtual void stop_translation_timestep(); virtual void start_translation_timestep (); @@ -83,12 +83,12 @@ 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"))); } } 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<Spanner*> (unsmob_element (smob)); + Spanner * sp = dynamic_cast<Spanner*> (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<T*> (unsmob_element (e))); + arr.push (dynamic_cast<T*> (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-engraver.hh b/lily/include/lyric-engraver.hh deleted file mode 100644 index e69de29bb2..0000000000 --- a/lily/include/lyric-engraver.hh +++ /dev/null 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 d55de124be..cdd9143900 100644 --- a/lily/include/timing-translator.hh +++ b/lily/include/timing-translator.hh @@ -25,7 +25,7 @@ public: Music *check_; protected: - virtual void do_creation_processing (); + virtual void initialize (); virtual bool try_music (Music *req_l); virtual void process_music (); virtual void stop_translation_timestep (); 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 f37ef88881..35c4af6a35 100644 --- a/lily/key-engraver.cc +++ b/lily/key-engraver.cc @@ -37,8 +37,8 @@ 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); virtual void stop_translation_timestep(); virtual void start_translation_timestep(); @@ -48,7 +48,7 @@ protected: void -Key_engraver::do_removal_processing () +Key_engraver::finalize () { old_accs_ = SCM_EOL; // unprotect can not be called from dtor. } @@ -180,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<Paper_column*> ( unsmob_element (gh_car (s))); + Paper_column*c = dynamic_cast<Paper_column*> ( 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-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<Spanner*> (unsmob_element (smob)); + Spanner *sp = dynamic_cast<Spanner*> (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 d70766eb9c..2d498222d4 100644 --- a/lily/mark-engraver.cc +++ b/lily/mark-engraver.cc @@ -39,7 +39,7 @@ protected: void create_items(Request*); virtual bool try_music (Music *req_l); virtual void start_translation_timestep (); - virtual void do_creation_processing (); + virtual void initialize (); virtual void create_grobs (); private: @@ -57,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. } diff --git a/lily/multi-measure-rest-engraver.cc b/lily/multi-measure-rest-engraver.cc index f31b58d34f..75f2bc5892 100644 --- a/lily/multi-measure-rest-engraver.cc +++ b/lily/multi-measure-rest-engraver.cc @@ -33,7 +33,7 @@ protected: 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: @@ -173,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<Spanner*> (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<Spanner*> (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 <Global_translator *> (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<Item*>(unsmob_element (s)); + return dynamic_cast<Item*>(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/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<Midi_def*> ($$)->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<Midi_def*> ($$)->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 de081a753d..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; 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.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<Item*> (unsmob_element (s)); + return dynamic_cast<Item*> (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<Item*> (unsmob_element (s)); + return dynamic_cast<Item*> (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<Paper_def *> (output_def_l_)); + assert (!daddy_trans_l_); + pscore_p_ = new Paper_score; + pscore_p_->paper_l_ = dynamic_cast<Paper_def*>(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<Paper_def *> (output_def_l_)); - assert (!daddy_trans_l_); - pscore_p_ = new Paper_score; - pscore_p_->paper_l_ = dynamic_cast<Paper_def*>(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<Midi_def *> (output_def_l_)); performance_p_ = new Performance; - performance_p_->midi_l_ = dynamic_cast<Midi_def*>(output_def_l_); + performance_p_->midi_l_ = dynamic_cast<Midi_def*>(output_def_l_); + + Translator_group::initialize (); } 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<Link_array<Grob> > arrs; Link_array<Grob> staff_sided = Pointer_group_interface__extract_elements (me, (Grob*)0, "scripts"); diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc index 6a1b4ad75e..4f01800e38 100644 --- a/lily/script-engraver.cc +++ b/lily/script-engraver.cc @@ -21,7 +21,7 @@ public: protected: virtual bool try_music (Music*); - virtual void do_creation_processing (); + virtual void initialize (); virtual void stop_translation_timestep (); virtual void start_translation_timestep (); virtual void create_grobs (); @@ -30,7 +30,7 @@ protected: void -Script_engraver::do_creation_processing () +Script_engraver::initialize () { script_req_l_arr_.clear(); } 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<Item*> (unsmob_element (elt)); - Item *r = dynamic_cast<Item*> (unsmob_element ( next_elt)); + Item *l = dynamic_cast<Item*> (unsmob_grob (elt)); + Item *r = dynamic_cast<Item*> (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<Item*>(unsmob_element (gh_car (s))); + Item * it =dynamic_cast<Item*>(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<Item*> (unsmob_element (elt)); + Item *il = dynamic_cast<Item*> (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<Grob> 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<Grob> 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 61f2e3e4b5..0ac37d0d09 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -28,7 +28,7 @@ protected: 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: @@ -106,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++) { 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<Grob> 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<Spanner*>(me); @@ -498,13 +498,28 @@ 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 */ 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 <? starter; Paper_column * sc - = dynamic_cast<Paper_column*> (unsmob_element (get_property ("currentMusicalColumn"))); + = dynamic_cast<Paper_column*> (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<Grob> 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/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<Item*> (unsmob_element (gh_car (extremal_pair))); - Item * i2 = dynamic_cast<Item*> (unsmob_element (gh_cdr (extremal_pair))); + Item * i1 = dynamic_cast<Item*> (unsmob_grob (gh_car (extremal_pair))); + Item * i2 = dynamic_cast<Item*> (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<Spanner*> (unsmob_element(value))) + if (Spanner * sp = dynamic_cast<Spanner*> (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<Item*> (unsmob_element(value))) + else if (Item * it= dynamic_cast<Item*> (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 72c922af9c..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 @@ -114,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<Spanner*> (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-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 4d9f20d2b2..e004d14ae2 100644 --- a/lily/text-spanner-engraver.cc +++ b/lily/text-spanner-engraver.cc @@ -26,7 +26,7 @@ public: Text_spanner_engraver (); protected: - virtual void do_removal_processing (); + virtual void finalize (); virtual void acknowledge_grob (Grob_info); virtual bool try_music (Music *); virtual void stop_translation_timestep (); @@ -97,7 +97,7 @@ Text_spanner_engraver::create_grobs () else { assert (!finished_); - Grob* e = unsmob_element (get_property ("currentMusicalColumn")); + Grob* e = unsmob_grob (get_property ("currentMusicalColumn")); span_->set_bound (RIGHT, e); finished_ = span_; @@ -118,7 +118,7 @@ Text_spanner_engraver::create_grobs () 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]); } @@ -153,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<Spanner*> (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<Item*> (unsmob_element (gh_car (pair)))); - Tie::set_head (p,RIGHT, dynamic_cast<Item*> (unsmob_element (gh_cdr (pair)))); + Tie::set_head (p,LEFT, dynamic_cast<Item*> (unsmob_grob (gh_car (pair)))); + Tie::set_head (p,RIGHT, dynamic_cast<Item*> (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<Item*> (unsmob_element (gh_caar (s)))); - Tie::set_head (p, RIGHT, dynamic_cast<Item*> (unsmob_element (gh_cdar (s)))); + Tie::set_head (p, LEFT, dynamic_cast<Item*> (unsmob_grob (gh_caar (s)))); + Tie::set_head (p, RIGHT, dynamic_cast<Item*> (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 685806ff95..fca448b622 100644 --- a/lily/tie-performer.cc +++ b/lily/tie-performer.cc @@ -39,10 +39,8 @@ inline int compare (CNote_melodic_tuple const &a, CNote_melodic_tuple const &b) class Tie_performer : public Performer { public: - VIRTUAL_COPY_CONS (Translator); - + VIRTUAL_COPY_CONS(Translator); Tie_performer (); - private: bool done_; PQueue<CNote_melodic_tuple> past_notes_pq_; @@ -52,7 +50,7 @@ private: Link_array<Audio_tie> tie_p_arr_; protected: - virtual void do_creation_processing (); + virtual void initialize (); virtual void start_translation_timestep (); virtual void stop_translation_timestep (); virtual void acknowledge_grob (Audio_element_info); @@ -60,23 +58,31 @@ 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 ``do_creation_processing'' and + // which means that ``initialize'' and // ``start_translation_timestep'' did not happen?! - do_creation_processing (); + initialize (); } +#endif void -Tie_performer::do_creation_processing () +Tie_performer::initialize () { req_l_ = 0; - done_ = false; } 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<Spanner*> (unsmob_element (smob)); + Spanner*me = dynamic_cast<Spanner*> (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<Spanner*> (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 b66c23ac3f..16fe82b6e6 100644 --- a/lily/timing-translator.cc +++ b/lily/timing-translator.cc @@ -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<Translator_group*> (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 542b0f7ae4..d6bcec2460 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -32,7 +32,7 @@ protected: /// The spanners. Array order is synced with time_scaled_music_arr_ Link_array<Spanner> started_span_p_arr_; - virtual void do_removal_processing (); + virtual void finalize (); virtual void acknowledge_grob (Grob_info); virtual bool try_music (Music*r); virtual void start_translation_timestep (); @@ -81,8 +81,9 @@ Tuplet_engraver::create_grobs () 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]); } @@ -146,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<Note_column> column_arr= Pointer_group_interface__extract_elements (me, (Note_column*)0, "columns"); Spanner *sp = dynamic_cast<Spanner*> (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<Spanner *> (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<Item> bar_arr = Pointer_group_interface__extract_elements (me, (Item*)0, "bars"); diff --git a/ly/engraver.ly b/ly/engraver.ly index 82de65e7b5..be2d0f15e7 100644 --- a/ly/engraver.ly +++ b/ly/engraver.ly @@ -125,7 +125,7 @@ VoiceContext = \translator { \consists "Tie_engraver"; \consists "Tuplet_engraver"; \consists "Grace_position_engraver"; -% \consists "Skip_req_swallow_translator"; + \consists "Skip_req_swallow_translator"; \accepts Thread; % bug if you leave out this! \accepts Grace; } diff --git a/make/lilypond.spec.in b/make/lilypond.spec.in index f8b2634943..7e653fef03 100644 --- a/make/lilypond.spec.in +++ b/make/lilypond.spec.in @@ -53,6 +53,9 @@ make -C Documentation || true make htmldoc || true %install + + + rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc @@ -62,6 +65,13 @@ make prefix="$RPM_BUILD_ROOT%{_prefix}" install gzip -9fn $RPM_BUILD_ROOT%{_prefix}/info/* || true %endif + + +gzip -9fn $RPM_BUILD_ROOT%{_prefix}/man/man1/* || true + + + + mkdir -p $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d cp buildscripts/out/lilypond-profile $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.sh cp buildscripts/out/lilypond-login $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.csh @@ -107,12 +117,12 @@ fi %ifnos cygwin %{_prefix}/bin/abc2ly %{_prefix}/bin/as2text -%{_prefix}/bin/convert-mudela +%{_prefix}/bin/convert-ly %{_prefix}/bin/etf2ly %{_prefix}/bin/lilypond %{_prefix}/bin/ly2dvi %{_prefix}/bin/midi2ly -%{_prefix}/bin/mudela-book +%{_prefix}/bin/lilypond-book %{_prefix}/bin/musedata2ly %{_prefix}/bin/pmx2ly %else @@ -126,12 +136,12 @@ fi %{_prefix}/man/man1/abc2ly.1.gz %{_prefix}/man/man1/as2text.1.gz -%{_prefix}/man/man1/convert-mudela.1.gz +%{_prefix}/man/man1/convert-ly.1.gz %{_prefix}/man/man1/etf2ly.1.gz %{_prefix}/man/man1/lilypond.1.gz %{_prefix}/man/man1/ly2dvi.1.gz %{_prefix}/man/man1/midi2ly.1.gz -%{_prefix}/man/man1/mudela-book.1.gz +%{_prefix}/man/man1/lilypond-book.1.gz %{_prefix}/man/man1/musedata2ly.1.gz %{_prefix}/man/man1/pmx2ly.1.gz diff --git a/make/out/lilypond.lsm b/make/out/lilypond.lsm index 88a2bc76e3..c284adc40a 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.3.109 -Entered-date: 21NOV00 +Version: 1.3.110 +Entered-date: 22NOV00 Description: Keywords: music notation typesetting midi fonts engraving Author: hanwen@cs.uu.nl (Han-Wen Nienhuys) janneke@gnu.org (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 1000k lilypond-1.3.109.tar.gz + 1000k lilypond-1.3.110.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.3.109.tar.gz + 1000k lilypond-1.3.110.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index 16d75c1faf..992354eab6 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,11 +1,11 @@ %define info yes Name: lilypond -Version: 1.3.109 +Version: 1.3.110 Release: 1 License: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.109.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.110.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond # Icon: lilypond-icon.gif @@ -53,6 +53,9 @@ make -C Documentation || true make htmldoc || true %install + + + rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/tmp/lilypond-rpm-doc @@ -62,6 +65,13 @@ make prefix="$RPM_BUILD_ROOT%{_prefix}" install gzip -9fn $RPM_BUILD_ROOT%{_prefix}/info/* || true %endif + + +gzip -9fn $RPM_BUILD_ROOT%{_prefix}/man/man1/* || true + + + + mkdir -p $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d cp buildscripts/out/lilypond-profile $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.sh cp buildscripts/out/lilypond-login $RPM_BUILD_ROOT%{_prefix}/../etc/profile.d/lilypond.csh @@ -107,12 +117,12 @@ fi %ifnos cygwin %{_prefix}/bin/abc2ly %{_prefix}/bin/as2text -%{_prefix}/bin/convert-mudela +%{_prefix}/bin/convert-ly %{_prefix}/bin/etf2ly %{_prefix}/bin/lilypond %{_prefix}/bin/ly2dvi %{_prefix}/bin/midi2ly -%{_prefix}/bin/mudela-book +%{_prefix}/bin/lilypond-book %{_prefix}/bin/musedata2ly %{_prefix}/bin/pmx2ly %else @@ -126,12 +136,12 @@ fi %{_prefix}/man/man1/abc2ly.1.gz %{_prefix}/man/man1/as2text.1.gz -%{_prefix}/man/man1/convert-mudela.1.gz +%{_prefix}/man/man1/convert-ly.1.gz %{_prefix}/man/man1/etf2ly.1.gz %{_prefix}/man/man1/lilypond.1.gz %{_prefix}/man/man1/ly2dvi.1.gz %{_prefix}/man/man1/midi2ly.1.gz -%{_prefix}/man/man1/mudela-book.1.gz +%{_prefix}/man/man1/lilypond-book.1.gz %{_prefix}/man/man1/musedata2ly.1.gz %{_prefix}/man/man1/pmx2ly.1.gz 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) |