From df4a7c4a55148e065d878dcc2f7e09ac27ea9c32 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Tue, 21 Nov 2000 18:01:53 +0100 Subject: [PATCH] release: 1.3.109 =========== * Bugfix: resurrected point-and-click. * Use scheme object props for storing type predicates and doc-strings Dump global lists of properties into auto-documentation. * Bugfix: extent callback for Rest, so ledger lines don't disappear for rest-collisions. * Removed some hair from chord code * Rewrite of engraver pass scheme: try to make graphical objects in acknowledge_element()/process_acknowledged(), not in process_music() * Remove Translator::status_ and associated code. Removes the need for various XXXX functions as wrapper for do_XXX functions. * Search replace: Score_element -> Grob (Graphical object), {pre,post}_move_processing -> {stop,start}_translation_timestep, do_try_music -> try_music. 1.3.107.j --- CHANGES | 25 +- Documentation/regression-test.tely | 4 +- Documentation/topdocs/index.tely | 11 +- VERSION | 4 +- input/test/lyric-combine.ly | 3 +- lily/a2-engraver.cc | 24 +- lily/align-interface.cc | 44 +- lily/align-note-column-engraver.cc | 28 +- lily/arpeggio-engraver.cc | 24 +- lily/arpeggio.cc | 20 +- lily/auto-beam-engraver.cc | 94 ++- lily/axis-group-engraver.cc | 42 +- lily/axis-group-interface.cc | 46 +- lily/bar-engraver.cc | 26 +- lily/bar-number-engraver.cc | 24 +- lily/bar.cc | 44 +- lily/beam-engraver.cc | 28 +- lily/beam.cc | 138 ++-- lily/break-algorithm.cc | 10 +- lily/break-align-engraver.cc | 34 +- lily/break-align-item.cc | 44 +- lily/breathing-sign-engraver.cc | 18 +- lily/breathing-sign.cc | 6 +- lily/chord-name-engraver.cc | 28 +- lily/chord-name.cc | 18 +- lily/chord-tremolo-engraver.cc | 36 +- lily/chord.cc | 20 +- lily/clef-engraver.cc | 36 +- lily/clef-item.cc | 21 +- lily/collision-engraver.cc | 18 +- lily/collision.cc | 48 +- lily/crescendo.cc | 16 +- lily/cross-staff.cc | 12 +- lily/custos-engraver.cc | 26 +- lily/custos.cc | 12 +- lily/dimension-cache.cc | 2 +- lily/directional-element-interface.cc | 14 +- lily/dot-column-engraver.cc | 16 +- lily/dot-column.cc | 16 +- lily/dots.cc | 8 +- lily/dynamic-engraver.cc | 44 +- lily/dynamic-performer.cc | 12 +- lily/engraver-group-engraver.cc | 54 +- lily/engraver.cc | 36 +- lily/extender-engraver.cc | 28 +- lily/font-interface.cc | 14 +- lily/gdb.cc | 4 +- lily/gourlay-breaking.cc | 8 +- lily/grace-align-item.cc | 14 +- lily/grace-engraver-group.cc | 34 +- lily/grace-performer-group.cc | 4 +- lily/grace-position-engraver.cc | 22 +- lily/grace-position-performer.cc | 12 +- ...e-element-callback.cc => grob-callback.cc} | 6 +- lily/{score-element-info.cc => grob-info.cc} | 10 +- lily/{score-element.cc => grob.cc} | 243 ++++--- lily/group-interface.cc | 14 +- lily/hara-kiri-group-spanner.cc | 20 +- lily/hyphen-engraver.cc | 28 +- lily/hyphen-spanner.cc | 12 +- lily/include/align-interface.hh | 14 +- lily/include/arpeggio.hh | 2 +- lily/include/axis-group-interface.hh | 14 +- lily/include/bar-req-collector-engraver.hh | 4 +- lily/include/bar.hh | 8 +- lily/include/beam.hh | 48 +- lily/include/break-algorithm.hh | 6 +- lily/include/break-align-item.hh | 8 +- lily/include/breathing-sign.hh | 4 +- lily/include/clef.hh | 4 +- lily/include/collision.hh | 8 +- lily/include/column-x-positions.hh | 2 +- lily/include/crescendo.hh | 2 +- lily/include/custos.hh | 2 +- lily/include/dimension-cache-callback.hh | 4 +- lily/include/dimension-cache.hh | 2 +- lily/include/directional-element-interface.hh | 8 +- lily/include/dot-column.hh | 8 +- lily/include/engraver-group-engraver.hh | 12 +- lily/include/engraver.hh | 21 +- lily/include/font-interface.hh | 8 +- lily/include/grace-align-item.hh | 4 +- lily/include/grace-engraver-group.hh | 11 +- lily/include/grace-performer-group.hh | 2 +- .../{score-element-info.hh => grob-info.hh} | 10 +- lily/include/{score-element.hh => grob.hh} | 58 +- lily/include/group-interface.hh | 12 +- lily/include/hara-kiri-group-spanner.hh | 10 +- lily/include/hara-kiri-line-group-engraver.hh | 2 +- lily/include/hyphen-spanner.hh | 2 +- lily/include/item.hh | 10 +- lily/include/key-item.hh | 6 +- lily/include/key-performer.hh | 0 lily/include/lily-guile.hh | 1 + lily/include/lily-proto.hh | 2 +- lily/include/line-group-group-engraver.hh | 2 +- lily/include/line-of-score.hh | 6 +- lily/include/local-key-item.hh | 8 +- lily/include/lyric-engraver.hh | 6 +- lily/include/lyric-extender.hh | 2 +- lily/include/lyric-performer.hh | 0 lily/include/lyric-phrasing-engraver.hh | 30 +- lily/include/multi-measure-rest.hh | 6 +- lily/include/music-iterator-ctor.hh | 2 +- lily/include/note-column.hh | 26 +- lily/include/note-head.hh | 4 +- lily/include/note-performer.hh | 0 lily/include/paper-column.hh | 8 +- lily/include/paper-outputter.hh | 2 +- lily/include/performer-group-performer.hh | 4 +- lily/include/performer.hh | 6 +- lily/include/rest-collision.hh | 8 +- lily/include/rest.hh | 4 +- lily/include/rhythmic-head.hh | 14 +- lily/include/score-engraver.hh | 12 +- lily/include/script-column.hh | 2 +- lily/include/script.hh | 6 +- lily/include/separating-group-spanner.hh | 4 +- lily/include/separation-item.hh | 8 +- lily/include/side-position-interface.hh | 20 +- lily/include/simple-spacer.hh | 2 +- lily/include/slur.hh | 28 +- lily/include/spaceable-element.hh | 12 +- lily/include/spacing-spanner.hh | 12 +- lily/include/span-bar.hh | 12 +- lily/include/span-score-bar-engraver.hh | 2 +- lily/include/spanner.hh | 12 +- lily/include/staff-performer.hh | 0 lily/include/staff-symbol-referencer.hh | 24 +- lily/include/staff-symbol.hh | 10 +- lily/include/stem-tremolo.hh | 6 +- lily/include/stem.hh | 50 +- lily/include/swallow-engraver.hh | 2 +- lily/include/swallow-perf.hh | 2 +- lily/include/system-start-delimiter.hh | 12 +- lily/include/tempo-performer.hh | 0 lily/include/text-item.hh | 10 +- lily/include/text-spanner.hh | 2 +- lily/include/tie-column.hh | 8 +- lily/include/tie-performer.hh | 0 lily/include/tie.hh | 12 +- lily/include/time-signature-performer.hh | 0 lily/include/time-signature.hh | 4 +- lily/include/timing-translator.hh | 6 +- lily/include/translator-group.hh | 6 +- lily/include/translator.hh | 26 +- lily/include/tuplet-spanner.hh | 14 +- lily/include/type-swallow-translator.hh | 2 +- lily/include/volta-spanner.hh | 8 +- lily/instrument-name-engraver.cc | 16 +- lily/item.cc | 22 +- lily/key-engraver.cc | 34 +- lily/key-item.cc | 16 +- lily/key-performer.cc | 12 +- lily/line-group-group-engraver.cc | 12 +- lily/line-of-score.cc | 70 +- lily/local-key-engraver.cc | 26 +- lily/local-key-item.cc | 22 +- lily/lyric-engraver.cc | 12 +- lily/lyric-extender.cc | 8 +- lily/lyric-performer.cc | 12 +- lily/lyric-phrasing-engraver.cc | 16 +- lily/mark-engraver.cc | 36 +- lily/melisma-engraver.cc | 6 +- lily/multi-measure-rest-engraver.cc | 34 +- lily/multi-measure-rest.cc | 18 +- lily/music-iterator-ctor.cc | 2 +- lily/note-column.cc | 52 +- lily/note-head.cc | 10 +- lily/note-heads-engraver.cc | 36 +- lily/note-name-engraver.cc | 14 +- lily/note-performer.cc | 12 +- lily/output-property-engraver.cc | 18 +- lily/paper-column.cc | 14 +- lily/paper-score.cc | 6 +- lily/performer-group-performer.cc | 14 +- lily/performer.cc | 4 +- lily/piano-pedal-engraver.cc | 28 +- lily/piano-pedal-performer.cc | 16 +- lily/pitch-squash-engraver.cc | 6 +- lily/pointer-group-interface.cc | 2 +- lily/property-engraver.cc | 16 +- lily/property-iterator.cc | 9 +- lily/repeat-acknowledge-engraver.cc | 17 +- lily/rest-collision-engraver.cc | 18 +- lily/rest-collision.cc | 53 +- lily/rest-engraver.cc | 26 +- lily/rest.cc | 43 +- lily/rhythmic-column-engraver.cc | 34 +- lily/rhythmic-head.cc | 24 +- lily/score-engraver.cc | 69 +- lily/script-column-engraver.cc | 22 +- lily/script-column.cc | 26 +- lily/script-engraver.cc | 52 +- lily/script.cc | 14 +- lily/separating-group-spanner.cc | 10 +- lily/separating-line-group-engraver.cc | 20 +- lily/separation-item.cc | 10 +- lily/side-position-interface.cc | 66 +- lily/simple-spacer.cc | 6 +- lily/slur-engraver.cc | 42 +- lily/slur.cc | 140 ++-- lily/spaceable-element.cc | 28 +- lily/spacing-engraver.cc | 30 +- lily/spacing-spanner.cc | 56 +- lily/span-arpeggio-engraver.cc | 24 +- lily/span-bar-engraver.cc | 18 +- lily/span-bar.cc | 34 +- lily/span-dynamic-performer.cc | 20 +- lily/spanner.cc | 18 +- lily/staff-performer.cc | 10 +- lily/staff-symbol-engraver.cc | 10 +- lily/staff-symbol-referencer.cc | 60 +- lily/staff-symbol.cc | 16 +- lily/stanza-number-engraver.cc | 14 +- lily/stem-engraver.cc | 34 +- lily/stem-tremolo.cc | 28 +- lily/stem.cc | 154 ++-- lily/sustain-pedal.cc | 6 +- lily/swallow-engraver.cc | 2 +- lily/syllable-group.cc | 20 +- lily/system-start-delimiter-engraver.cc | 12 +- lily/system-start-delimiter.cc | 38 +- lily/tempo-performer.cc | 12 +- lily/text-engraver.cc | 32 +- lily/text-item.cc | 18 +- lily/text-spanner-engraver.cc | 28 +- lily/text-spanner.cc | 22 +- lily/thread-devnull-engraver.cc | 4 +- lily/tie-column.cc | 22 +- lily/tie-engraver.cc | 50 +- lily/tie-performer.cc | 20 +- lily/tie.cc | 46 +- lily/time-signature-engraver.cc | 14 +- lily/time-signature-performer.cc | 8 +- lily/time-signature.cc | 14 +- lily/timing-engraver.cc | 14 +- lily/timing-translator.cc | 6 +- lily/translator-group.cc | 86 +-- lily/translator.cc | 15 +- lily/tuplet-engraver.cc | 26 +- lily/tuplet-spanner.cc | 64 +- lily/type-swallow-translator.cc | 2 +- lily/vertical-align-engraver.cc | 12 +- lily/voice-devnull-engraver.cc | 8 +- lily/volta-engraver.cc | 46 +- lily/volta-spanner.cc | 18 +- ly/engraver.ly | 2 +- make/out/lilypond.lsm | 8 +- make/out/lilypond.spec | 4 +- mutopia/Coriolan/corni-part.ly | 1 + mutopia/Coriolan/corni.ly | 1 + scm/backend-documentation-lib.scm | 75 +- scm/backend-property.scm | 300 ++++++++ scm/beam.scm | 1 - scm/chord-names.scm | 0 scm/documentation-lib.scm | 5 + scm/element-descriptions.scm | 10 +- scm/engraver-documentation-lib.scm | 27 +- scm/generate-documentation.scm | 8 +- scm/interface.scm | 672 +++++++----------- scm/lily.scm | 44 +- scm/translator-description.scm | 504 +++++-------- scm/translator-properties.scm | 289 ++++++++ tex/lily-ps-defs.tex | 2 +- 265 files changed, 3706 insertions(+), 3289 deletions(-) rename lily/{score-element-callback.cc => grob-callback.cc} (83%) rename lily/{score-element-info.cc => grob-info.cc} (66%) rename lily/{score-element.cc => grob.cc} (71%) rename lily/include/{score-element-info.hh => grob-info.hh} (72%) rename lily/include/{score-element.hh => grob.hh} (70%) delete mode 100644 lily/include/key-performer.hh delete mode 100644 lily/include/lyric-performer.hh delete mode 100644 lily/include/note-performer.hh delete mode 100644 lily/include/staff-performer.hh delete mode 100644 lily/include/tempo-performer.hh delete mode 100644 lily/include/tie-performer.hh delete mode 100644 lily/include/time-signature-performer.hh create mode 100644 scm/backend-property.scm delete mode 100644 scm/chord-names.scm create mode 100644 scm/translator-properties.scm diff --git a/CHANGES b/CHANGES index ed602b83f1..07c400599b 100644 --- a/CHANGES +++ b/CHANGES @@ -1,12 +1,25 @@ -1.3.108.jcn5 -============ +1.3.108.uu1 +=========== -* Fixed mark default font. +* Bugfix: resurrected point-and-click. -1.3.108.jcn2 -============ +* Use scheme object props for storing type predicates and doc-strings +Dump global lists of properties into auto-documentation. + +* Bugfix: extent callback for Rest, so ledger lines don't disappear for +rest-collisions. + +* Removed some hair from chord code + +* Rewrite of engraver pass scheme: try to make graphical objects in +acknowledge_element()/process_acknowledged(), not in process_music() + +* Remove Translator::status_ and associated code. Removes the need for +various XXXX functions as wrapper for do_XXX functions. -* Removed some hair from chord code. +* Search replace: Score_element -> Grob (Graphical object), +{pre,post}_move_processing -> {stop,start}_translation_timestep, +do_try_music -> try_music. 1.3.107.jcn3 ============ diff --git a/Documentation/regression-test.tely b/Documentation/regression-test.tely index 75427b745b..a2d0289437 100644 --- a/Documentation/regression-test.tely +++ b/Documentation/regression-test.tely @@ -147,7 +147,7 @@ main note. Grace notes can also be positioned after the main note. Grace notes without beams should have a slash, if @code{flagStyle} is not set. Main note scripts don't end up on the grace note. -@c @lily pondfile{grace.ly} +@lilypondfile{grace.ly} @section Beams, slurs and other spanners @@ -167,7 +167,7 @@ counting from the note head side, should never be lower than the second staff line. This does not hold for grace note beams. Override with @code{noStemExtend}. -@c @lily pondfile{beam-position.ly} +@lilypondfile{beam-position.ly} Slurs should look nice and symmetric. The curvature may increase only to avoid noteheads, and as little as possible. Slurs never diff --git a/Documentation/topdocs/index.tely b/Documentation/topdocs/index.tely index 5082a16de6..50be2f66d7 100644 --- a/Documentation/topdocs/index.tely +++ b/Documentation/topdocs/index.tely @@ -16,8 +16,8 @@ @unnumberedsec What is LilyPond? -LilyPond is a music typesetter. It produces beautiful sheet music using -a high level description file as input. It excels at typesetting +LilyPond is a music typesetting. It produces beautiful sheet music +using a high level description file as input. It excels at typesetting classical music, but you can also print pop-songs. With LilyPond we hope to make music publication software available to anyone on the internet. @@ -61,8 +61,6 @@ If want more information, you can browse the @uref{Documentation/user/out-www/lilypond.html, manual} or other @uref{Documentation/out-www/index.html, documentation}. - - @html @end html @@ -73,9 +71,8 @@ If you are interested in sheet music typeset by LilyPond, have a look at the examples included. We have @uref{short-examples.html,short 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. +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 diff --git a/VERSION b/VERSION index 78cec122d9..b235fa36fa 100644 --- a/VERSION +++ b/VERSION @@ -1,8 +1,8 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=3 -PATCH_LEVEL=108 -MY_PATCH_LEVEL=jcn5 +PATCH_LEVEL=109 +MY_PATCH_LEVEL= # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/input/test/lyric-combine.ly b/input/test/lyric-combine.ly index 723785658f..85ac0efab4 100644 --- a/input/test/lyric-combine.ly +++ b/input/test/lyric-combine.ly @@ -12,8 +12,7 @@ copyright = "public domain"; m =\notes \relative c'' { \property Staff.automaticMelismata = ##t \autoBeamOff - %g4 r8 \times 2/3 { g'8( f )e } r8 \grace { [d16 c b] } e4 - g4 r8 \times 2/3 { g'8( f )e } r8 e4 + g4 r8 \times 2/3 { g'8( f )e } r8 \grace { [d16 c b] } e4 \emptyText d8.^"melisma" \melisma c16 \melismaEnd diff --git a/lily/a2-engraver.cc b/lily/a2-engraver.cc index ce29bf6209..b59595a5aa 100644 --- a/lily/a2-engraver.cc +++ b/lily/a2-engraver.cc @@ -23,10 +23,10 @@ public: protected: void deprecated_process_music (); - virtual void acknowledge_element (Score_element_info); + virtual void acknowledge_grob (Grob_info); - virtual void process_acknowledged (); - virtual void do_pre_move_processing (); + virtual void create_grobs (); + virtual void stop_translation_timestep (); private: Item* text_p_; @@ -60,7 +60,7 @@ A2_engraver::deprecated_process_music () { text_p_ = new Item (get_property ("TextScript")); Side_position::set_axis (text_p_, Y_AXIS); - announce_element (text_p_, 0); + announce_grob (text_p_, 0); Direction dir = UP; SCM text; @@ -85,13 +85,13 @@ A2_engraver::deprecated_process_music () } Side_position::set_direction (text_p_, dir); - text_p_->set_elt_property ("text", text); + text_p_->set_grob_property ("text", text); } } } void -A2_engraver::acknowledge_element (Score_element_info i) +A2_engraver::acknowledge_grob (Grob_info i) { if (!to_boolean (get_property ("combineParts"))) return ; @@ -100,7 +100,7 @@ A2_engraver::acknowledge_element (Score_element_info i) { if (Note_head::has_interface (i.elem_l_)) { - Score_element*t = text_p_; + Grob*t = text_p_; Side_position::add_support (t, i.elem_l_); if (Side_position::get_axis (t) == X_AXIS && !t->parent_l (Y_AXIS)) @@ -151,29 +151,29 @@ A2_engraver::acknowledge_element (Score_element_info i) { if (daddy_trans_l_->id_str_ == "one") { - i.elem_l_->set_elt_property ("direction", gh_int2scm (1)); + i.elem_l_->set_grob_property ("direction", gh_int2scm (1)); } else if (daddy_trans_l_->id_str_ == "two") { - i.elem_l_->set_elt_property ("direction", gh_int2scm (-1)); + i.elem_l_->set_grob_property ("direction", gh_int2scm (-1)); } } } } void -A2_engraver::process_acknowledged () +A2_engraver::create_grobs () { deprecated_process_music (); } void -A2_engraver::do_pre_move_processing () +A2_engraver::stop_translation_timestep () { if (text_p_) { Side_position::add_staff_support (text_p_); - typeset_element (text_p_); + typeset_grob (text_p_); text_p_ = 0; } } diff --git a/lily/align-interface.cc b/lily/align-interface.cc index 7f31bb0314..dfb50d7d26 100644 --- a/lily/align-interface.cc +++ b/lily/align-interface.cc @@ -8,7 +8,7 @@ */ #include "align-interface.hh" -#include "score-element.hh" +#include "grob.hh" #include "group-interface.hh" #include "axis-group-interface.hh" #include "paper-def.hh" @@ -21,10 +21,10 @@ MAKE_SCHEME_CALLBACK(Align_interface,alignment_callback,2); SCM Align_interface::alignment_callback (SCM element_smob, SCM axis) { - Score_element * me = unsmob_element (element_smob); + Grob * me = unsmob_element (element_smob); Axis ax = (Axis )gh_scm2int (axis); - Score_element * par = me->parent_l (ax); - if (par && !to_boolean (par->get_elt_property ("alignment-done"))) + Grob * par = me->parent_l (ax); + if (par && !to_boolean (par->get_grob_property ("alignment-done"))) { Align_interface::do_side_processing (par, ax); } @@ -37,11 +37,11 @@ Align_interface::alignment_callback (SCM element_smob, SCM axis) from the outside by setting minimum-space and extra-space in its children */ void -Align_interface::do_side_processing (Score_element * me, Axis a) +Align_interface::do_side_processing (Grob * me, Axis a) { - me->set_elt_property ("alignment-done", SCM_BOOL_T); + me->set_grob_property ("alignment-done", SCM_BOOL_T); - SCM d = me->get_elt_property ("stacking-dir"); + SCM d = me->get_grob_property ("stacking-dir"); Direction stacking_dir = gh_number_p(d) ? to_dir (d) : CENTER; if (!stacking_dir) stacking_dir = DOWN; @@ -49,18 +49,18 @@ Align_interface::do_side_processing (Score_element * me, Axis a) Array dims; - Link_array elems; - Link_array all_elts - = Pointer_group_interface__extract_elements ( me, (Score_element*) 0, "elements"); + Link_array elems; + Link_array all_elts + = Pointer_group_interface__extract_elements ( me, (Grob*) 0, "elements"); for (int i=0; i < all_elts.size(); i++) { Interval y = all_elts[i]->extent(me, a); if (!y.empty_b()) { - Score_element *e =dynamic_cast(all_elts[i]); + Grob *e =dynamic_cast(all_elts[i]); // todo: fucks up if item both in Halign & Valign. - SCM min_dims = e->remove_elt_property ("minimum-space"); + SCM min_dims = e->remove_grob_property ("minimum-space"); if (gh_pair_p (min_dims) && gh_number_p (gh_car (min_dims)) && gh_number_p (gh_cdr (min_dims))) @@ -69,7 +69,7 @@ Align_interface::do_side_processing (Score_element * me, Axis a) } - SCM extra_dims = e->remove_elt_property ("extra-space"); + SCM extra_dims = e->remove_grob_property ("extra-space"); if (gh_pair_p (extra_dims) && gh_number_p (gh_car (extra_dims)) && gh_number_p (gh_cdr (extra_dims))) @@ -85,7 +85,7 @@ Align_interface::do_side_processing (Score_element * me, Axis a) Interval threshold = Interval (0, Interval::infinity ()); - SCM thr = me->get_elt_property ("threshold"); + SCM thr = me->get_grob_property ("threshold"); if (gh_pair_p (thr)) { Real ss = 1.0; @@ -113,9 +113,9 @@ Align_interface::do_side_processing (Score_element * me, Axis a) Axis -Align_interface::axis (Score_element*me) +Align_interface::axis (Grob*me) { - return Axis (gh_scm2int (gh_car (me->get_elt_property ("axes")))); + return Axis (gh_scm2int (gh_car (me->get_grob_property ("axes")))); } @@ -123,9 +123,9 @@ Align_interface::axis (Score_element*me) should use generic Scm funcs. */ int -Align_interface::get_count (Score_element*me,Score_element*s) +Align_interface::get_count (Grob*me,Grob*s) { - SCM e = me->get_elt_property ("elements"); + SCM e = me->get_grob_property ("elements"); int c =0; while (gh_pair_p (e)) { @@ -138,7 +138,7 @@ Align_interface::get_count (Score_element*me,Score_element*s) } void -Align_interface::add_element (Score_element*me,Score_element* s) +Align_interface::add_element (Grob*me,Grob* s) { s->add_offset_callback (Align_interface::alignment_callback_proc, Align_interface::axis (me)); Axis_group_interface::add_element (me, s); @@ -146,7 +146,7 @@ Align_interface::add_element (Score_element*me,Score_element* s) void -Align_interface::set_interface (Score_element*me) +Align_interface::set_interface (Grob*me) { me->set_interface (ly_symbol2scm ("align-interface")); @@ -154,13 +154,13 @@ Align_interface::set_interface (Score_element*me) } void -Align_interface::set_axis (Score_element*me,Axis a) +Align_interface::set_axis (Grob*me,Axis a) { Axis_group_interface::set_axes (me, a,a ); } bool -Align_interface::has_interface (Score_element*me) +Align_interface::has_interface (Grob*me) { return me && me->has_interface (ly_symbol2scm ("align-interface")); } diff --git a/lily/align-note-column-engraver.cc b/lily/align-note-column-engraver.cc index 23a93a17bd..b3dc85e859 100644 --- a/lily/align-note-column-engraver.cc +++ b/lily/align-note-column-engraver.cc @@ -23,14 +23,14 @@ class Align_note_column_engraver: public Engraver { Item * align_item_p_; - Score_element * now_column_l_; - Score_element * accidental_l_; + Grob * now_column_l_; + Grob * accidental_l_; - virtual void process_acknowledged (); - virtual void do_post_move_processing (); + virtual void create_grobs (); + virtual void start_translation_timestep (); virtual void do_creation_processing (); virtual void do_removal_processing (); - virtual void acknowledge_element (Score_element_info); + virtual void acknowledge_grob (Grob_info); public: VIRTUAL_COPY_CONS(Translator); Align_note_column_engraver (); @@ -52,18 +52,12 @@ Align_note_column_engraver::do_creation_processing () Side_position::set_direction (align_item_p_, LEFT); // needed for setting font size. - announce_element (align_item_p_, 0); + announce_grob (align_item_p_, 0); } void Align_note_column_engraver::do_removal_processing () { - if (!align_item_p_) - { - programming_error ("Align_note_column_engraver:: urg\n"); - return; - } - SCM al = get_property ("graceAlignPosition"); if (isdir_b (al)) { @@ -71,12 +65,12 @@ Align_note_column_engraver::do_removal_processing () Directional_element_interface::set (align_item_p_,d); } - typeset_element (align_item_p_); + typeset_grob (align_item_p_); align_item_p_ =0; } void -Align_note_column_engraver::acknowledge_element (Score_element_info inf) +Align_note_column_engraver::acknowledge_grob (Grob_info inf) { if (Note_column::has_interface(inf.elem_l_)) { @@ -88,7 +82,7 @@ Align_note_column_engraver::acknowledge_element (Score_element_info inf) } } void -Align_note_column_engraver::process_acknowledged () +Align_note_column_engraver::create_grobs () { if (now_column_l_ && accidental_l_) { @@ -112,7 +106,7 @@ Align_note_column_engraver::process_acknowledged () Real extra_space = gh_scm2double(grsp); SCM e = gh_cons (gh_double2scm (-extra_space), gh_double2scm (0.0)); - now_column_l_->set_elt_property ("extra-space", e); + now_column_l_->set_grob_property ("extra-space", e); } } @@ -129,7 +123,7 @@ Align_note_column_engraver::process_acknowledged () } void -Align_note_column_engraver::do_post_move_processing () +Align_note_column_engraver::start_translation_timestep () { now_column_l_ =0; accidental_l_ =0; diff --git a/lily/arpeggio-engraver.cc b/lily/arpeggio-engraver.cc index 7455bf2255..aa83cb68dc 100644 --- a/lily/arpeggio-engraver.cc +++ b/lily/arpeggio-engraver.cc @@ -24,16 +24,16 @@ public: Arpeggio_engraver (); protected: - virtual void acknowledge_element (Score_element_info); - virtual void process_acknowledged (); - virtual void do_pre_move_processing (); - virtual bool do_try_music (Music *); + virtual void acknowledge_grob (Grob_info); + virtual void create_grobs (); + virtual void stop_translation_timestep (); + virtual bool try_music (Music *); private: Item* arpeggio_; Arpeggio_req *arpeggio_req_; - Link_array stems_; - Link_array supports_; + Link_array stems_; + Link_array supports_; }; Arpeggio_engraver::Arpeggio_engraver () @@ -43,7 +43,7 @@ Arpeggio_engraver::Arpeggio_engraver () } bool -Arpeggio_engraver::do_try_music (Music* m) +Arpeggio_engraver::try_music (Music* m) { if (!arpeggio_req_) { @@ -57,7 +57,7 @@ Arpeggio_engraver::do_try_music (Music* m) } void -Arpeggio_engraver::acknowledge_element (Score_element_info info) +Arpeggio_engraver::acknowledge_grob (Grob_info info) { if (arpeggio_req_) { @@ -78,7 +78,7 @@ Arpeggio_engraver::acknowledge_element (Score_element_info info) } void -Arpeggio_engraver::process_acknowledged () +Arpeggio_engraver::create_grobs () { if (!arpeggio_ && !stems_.empty ()) { @@ -93,16 +93,16 @@ Arpeggio_engraver::process_acknowledged () { Side_position::add_support (arpeggio_, supports_[i]); } - announce_element (arpeggio_, arpeggio_req_); + announce_grob (arpeggio_, arpeggio_req_); } } void -Arpeggio_engraver::do_pre_move_processing () +Arpeggio_engraver::stop_translation_timestep () { if (arpeggio_) { - typeset_element (arpeggio_); + typeset_grob (arpeggio_); arpeggio_ = 0; } arpeggio_req_ = 0; diff --git a/lily/arpeggio.cc b/lily/arpeggio.cc index 39cc20ba49..8802cb71f3 100644 --- a/lily/arpeggio.cc +++ b/lily/arpeggio.cc @@ -9,7 +9,7 @@ #include "molecule.hh" #include "paper-def.hh" #include "arpeggio.hh" -#include "score-element.hh" +#include "grob.hh" #include "stem.hh" #include "staff-symbol-referencer.hh" #include "staff-symbol.hh" @@ -17,7 +17,7 @@ #include "font-interface.hh" bool -Arpeggio::has_interface (Score_element* me) +Arpeggio::has_interface (Grob* me) { return me && me->has_interface (ly_symbol2scm ("arpeggio-interface")); } @@ -26,12 +26,12 @@ MAKE_SCHEME_CALLBACK (Arpeggio, brew_molecule, 1); SCM Arpeggio::brew_molecule (SCM smob) { - Score_element *me = unsmob_element (smob); + Grob *me = unsmob_element (smob); - Score_element * common = me; - for (SCM s = me->get_elt_property ("stems"); gh_pair_p (s); s = gh_cdr (s)) + Grob * common = me; + for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = gh_cdr (s)) { - Score_element * stem = unsmob_element (gh_car (s)); + Grob * stem = unsmob_element (gh_car (s)); common = common->common_refpoint (Staff_symbol_referencer::staff_symbol_l (stem), Y_AXIS); } @@ -47,10 +47,10 @@ Arpeggio::brew_molecule (SCM smob) Interval heads; Real my_y = me->relative_coordinate (common, Y_AXIS); - for (SCM s = me->get_elt_property ("stems"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = gh_cdr (s)) { - Score_element * stem = unsmob_element (gh_car (s)); - Score_element * ss = Staff_symbol_referencer::staff_symbol_l (stem); + Grob * stem = unsmob_element (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) { - Score_element * me = unsmob_element (smob); + Grob * me = unsmob_element (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 65ce4f1b5d..ff73ee4c72 100644 --- a/lily/auto-beam-engraver.cc +++ b/lily/auto-beam-engraver.cc @@ -21,6 +21,8 @@ /* TODO: figure what to do in grace? + + TODO: documentme. */ class Auto_beam_engraver : public Engraver { @@ -29,11 +31,11 @@ public: VIRTUAL_COPY_CONS (Translator); protected: - virtual void do_pre_move_processing (); - virtual void do_post_move_processing (); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); virtual void do_removal_processing (); - virtual void acknowledge_element (Score_element_info); - virtual void process_acknowledged (); + virtual void acknowledge_grob (Grob_info); + virtual void create_grobs (); private: void begin_beam (); @@ -41,14 +43,23 @@ private: Spanner* create_beam_p (); void end_beam (); void junk_beam (); - bool same_grace_state_b (Score_element* e); + bool same_grace_state_b (Grob* e); void typeset_beam (); + /* + shortest_mom is the shortest note in the beam. + */ Moment shortest_mom_; Spanner *finished_beam_p_; Link_array* stem_l_arr_p_; - + + + bool first_b_; Moment last_add_mom_; + + /* + Projected ending of the beam we're working on. + */ Moment extend_mom_; Moment beam_start_moment_; Moment beam_start_location_; @@ -62,6 +73,7 @@ ADD_THIS_TRANSLATOR (Auto_beam_engraver); Auto_beam_engraver::Auto_beam_engraver () { + first_b_ = true; stem_l_arr_p_ = 0; shortest_mom_ = Moment (1, 8); finished_beam_p_ = 0; @@ -69,6 +81,9 @@ Auto_beam_engraver::Auto_beam_engraver () grouping_p_ = 0; } +/* + rename me: consider_end_or_begin () ? + */ void Auto_beam_engraver::consider_end_and_begin (Moment test_mom) { @@ -205,12 +220,13 @@ Auto_beam_engraver::create_beam_p () */ if (Stem::beam_l ((*stem_l_arr_p_)[i])) { + scm_unprotect_object (beam_p->self_scm ()); return 0; } Beam::add_stem (beam_p,(*stem_l_arr_p_)[i]); } - announce_element (beam_p, 0); + announce_grob (beam_p, 0); return beam_p; } @@ -265,7 +281,7 @@ Auto_beam_engraver::typeset_beam () { finished_grouping_p_->beamify (); Beam::set_beaming (finished_beam_p_, finished_grouping_p_); - typeset_element (finished_beam_p_); + typeset_grob (finished_beam_p_); finished_beam_p_ = 0; delete finished_grouping_p_; @@ -274,8 +290,9 @@ Auto_beam_engraver::typeset_beam () } void -Auto_beam_engraver::do_post_move_processing () +Auto_beam_engraver::start_translation_timestep () { + first_b_ =true; /* don't beam over skips */ @@ -290,21 +307,9 @@ Auto_beam_engraver::do_post_move_processing () } void -Auto_beam_engraver::do_pre_move_processing () +Auto_beam_engraver::stop_translation_timestep () { - if (stem_l_arr_p_) - { - Moment now = now_mom (); - if ((extend_mom_ < now) - || ((extend_mom_ == now) && (last_add_mom_ != now ))) - { - end_beam (); - } - else if (!stem_l_arr_p_->size ()) - { - junk_beam (); - } - } + typeset_beam (); } @@ -319,15 +324,15 @@ Auto_beam_engraver::do_removal_processing () } bool -Auto_beam_engraver::same_grace_state_b (Score_element* e) +Auto_beam_engraver::same_grace_state_b (Grob* e) { - bool gr = e->get_elt_property ("grace") == SCM_BOOL_T; + bool gr = e->get_grob_property ("grace") == SCM_BOOL_T; SCM wg =get_property ("weAreGraceContext"); return (to_boolean (wg)) == gr; } void -Auto_beam_engraver::acknowledge_element (Score_element_info info) +Auto_beam_engraver::acknowledge_grob (Grob_info info) { if (!same_grace_state_b (info.elem_l_)) return; @@ -389,21 +394,23 @@ Auto_beam_engraver::acknowledge_element (Score_element_info info) if shortest duration would change reconsider ending/starting beam first. */ - Moment mom = unsmob_duration (rhythmic_req->get_mus_property ("duration"))->length_mom (); - consider_end_and_begin (mom); + Moment dur = unsmob_duration (rhythmic_req->get_mus_property ("duration"))->length_mom (); + consider_end_and_begin (dur); if (!stem_l_arr_p_) return; - if (mom < shortest_mom_) + + if (dur < shortest_mom_) { + shortest_mom_ = dur; if (stem_l_arr_p_->size ()) { - shortest_mom_ = mom; + shortest_mom_ = dur; consider_end_and_begin (shortest_mom_); if (!stem_l_arr_p_) return; } - shortest_mom_ = mom; } + Moment now = now_mom (); grouping_p_->add_stem (now - beam_start_moment_ + beam_start_location_, @@ -415,8 +422,27 @@ Auto_beam_engraver::acknowledge_element (Score_element_info info) } void -Auto_beam_engraver::process_acknowledged () +Auto_beam_engraver::create_grobs () { - if (!stem_l_arr_p_) - consider_end_and_begin (shortest_mom_); + if (first_b_) + { + first_b_ = false; + consider_end_and_begin (shortest_mom_); + } + else + { + if (stem_l_arr_p_) + { + Moment now = now_mom (); + if ((extend_mom_ < now) + || ((extend_mom_ == now) && (last_add_mom_ != now ))) + { + end_beam (); + } + else if (!stem_l_arr_p_->size ()) + { + junk_beam (); + } + } + } } diff --git a/lily/axis-group-engraver.cc b/lily/axis-group-engraver.cc index 2b70f62fc9..2c0e62a630 100644 --- a/lily/axis-group-engraver.cc +++ b/lily/axis-group-engraver.cc @@ -20,13 +20,13 @@ class Axis_group_engraver : public Engraver { protected: Spanner *staffline_p_; - Link_array elts_; + Link_array elts_; virtual void do_creation_processing(); virtual void do_removal_processing(); - virtual void acknowledge_element (Score_element_info); - virtual void process_acknowledged (); + virtual void acknowledge_grob (Grob_info); + virtual void create_grobs (); virtual Spanner* get_spanner_p () const; - virtual void add_element (Score_element*) ; + virtual void add_element (Grob*) ; public: VIRTUAL_COPY_CONS(Translator); Axis_group_engraver (); @@ -46,11 +46,11 @@ Axis_group_engraver::do_creation_processing () Axis_group_interface::set_interface (staffline_p_); Axis_group_interface::set_axes (staffline_p_, Y_AXIS, Y_AXIS); - Score_element * it = unsmob_element (get_property ("currentCommandColumn")); + Grob * it = unsmob_element (get_property ("currentCommandColumn")); staffline_p_->set_bound(LEFT,it); - announce_element (staffline_p_, 0); + announce_grob (staffline_p_, 0); } Spanner* @@ -68,31 +68,31 @@ Axis_group_engraver::do_removal_processing () if (gh_pair_p (dims) && gh_number_p (gh_car (dims)) && gh_number_p (gh_cdr (dims))) { - staffline_p_->set_extent_callback (Score_element::preset_extent_proc, Y_AXIS); - staffline_p_->set_elt_property ("extent-Y", dims); + staffline_p_->set_extent_callback (Grob::preset_extent_proc, Y_AXIS); + staffline_p_->set_grob_property ("extent-Y", dims); } dims = get_property ((type + "MinimumVerticalExtent").ch_C()); if (gh_pair_p (dims) && gh_number_p (gh_car (dims)) && gh_number_p (gh_cdr (dims))) - staffline_p_->set_elt_property ("minimum-extent-Y", dims); + staffline_p_->set_grob_property ("minimum-extent-Y", dims); dims = get_property ((type + "ExtraVerticalExtent").ch_C()); if (gh_pair_p (dims) && gh_number_p (gh_car (dims)) && gh_number_p (gh_cdr (dims))) - staffline_p_->set_elt_property ("extra-extent-Y", dims); + staffline_p_->set_grob_property ("extra-extent-Y", dims); - Score_element * it = unsmob_element (get_property ("currentCommandColumn")); + Grob * it = unsmob_element (get_property ("currentCommandColumn")); staffline_p_->set_bound(RIGHT,it); - typeset_element (staffline_p_); + typeset_grob (staffline_p_); staffline_p_ = 0; } void -Axis_group_engraver::acknowledge_element (Score_element_info i) +Axis_group_engraver::acknowledge_grob (Grob_info i) { elts_.push (i.elem_l_); } @@ -102,12 +102,12 @@ Axis_group_engraver::acknowledge_element (Score_element_info i) cyclic parent relationship if we have two Axis_group_engravers in the context. */ void -Axis_group_engraver::process_acknowledged () +Axis_group_engraver::create_grobs () { /* UGH UGH UGH */ for (int i=0; i < elts_.size (); i++) { - Score_element *par = elts_[i]->parent_l (Y_AXIS); + Grob *par = elts_[i]->parent_l (Y_AXIS); if ((!par || !Axis_group_interface::has_interface (par)) && ! elts_[i]->empty_b (Y_AXIS)) @@ -117,7 +117,7 @@ Axis_group_engraver::process_acknowledged () } void -Axis_group_engraver::add_element (Score_element*e) +Axis_group_engraver::add_element (Grob*e) { Axis_group_interface::add_element (staffline_p_, e); } @@ -132,14 +132,14 @@ class Hara_kiri_engraver : public Axis_group_engraver { protected: virtual Spanner*get_spanner_p ()const; - virtual void acknowledge_element (Score_element_info); - virtual void add_element (Score_element *e); + virtual void acknowledge_grob (Grob_info); + virtual void add_element (Grob *e); public: VIRTUAL_COPY_CONS(Translator); }; void -Hara_kiri_engraver::add_element (Score_element*e) +Hara_kiri_engraver::add_element (Grob*e) { Hara_kiri_group_spanner::add_element (staffline_p_, e); } @@ -154,9 +154,9 @@ Hara_kiri_engraver::get_spanner_p () const } void -Hara_kiri_engraver::acknowledge_element (Score_element_info i) +Hara_kiri_engraver::acknowledge_grob (Grob_info i) { - Axis_group_engraver::acknowledge_element (i); + Axis_group_engraver::acknowledge_grob (i); if (Rhythmic_head::has_interface (i.elem_l_) || i.elem_l_->has_interface (ly_symbol2scm ("lyric-syllable-interface"))) { diff --git a/lily/axis-group-interface.cc b/lily/axis-group-interface.cc index dcfc553fa4..4c2b849aea 100644 --- a/lily/axis-group-interface.cc +++ b/lily/axis-group-interface.cc @@ -8,12 +8,12 @@ */ #include "hara-kiri-group-spanner.hh" #include "axis-group-interface.hh" -#include "score-element.hh" +#include "grob.hh" void -Axis_group_interface::add_element (Score_element*me,Score_element *e) +Axis_group_interface::add_element (Grob*me,Grob *e) { - for (SCM ax = me->get_elt_property ("axes"); ax != SCM_EOL ; ax = gh_cdr (ax)) + for (SCM ax = me->get_grob_property ("axes"); ax != SCM_EOL ; ax = gh_cdr (ax)) { Axis a = (Axis) gh_scm2int (gh_car (ax)); @@ -26,7 +26,7 @@ Axis_group_interface::add_element (Score_element*me,Score_element *e) } bool -Axis_group_interface::axis_b (Score_element*me,Axis a ) +Axis_group_interface::axis_b (Grob*me,Axis a ) { /* urg. FIXME, check for Hara_kiri_group_spanner shouldn't be necessary? @@ -38,12 +38,12 @@ Axis_group_interface::axis_b (Score_element*me,Axis a ) } Interval -Axis_group_interface::relative_group_extent (Axis a, Score_element *common, SCM elts) +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)) { - Score_element * se = unsmob_element (gh_car (s)); + Grob * se = unsmob_element (gh_car (s)); Interval dims = se->extent (common, a); if (!dims.empty_b ()) r.unite (dims); @@ -55,19 +55,19 @@ MAKE_SCHEME_CALLBACK(Axis_group_interface,group_extent_callback,2); SCM Axis_group_interface::group_extent_callback (SCM element_smob, SCM scm_axis) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (scm_axis); - Score_element * common =(Score_element*) me; + Grob * common =(Grob*) me; - for (SCM s = me->get_elt_property ("elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = me->get_grob_property ("elements"); gh_pair_p (s); s = gh_cdr (s)) { - Score_element * se = unsmob_element (gh_car (s)); + Grob * se = unsmob_element (gh_car (s)); common = se->common_refpoint (common, a); } Real my_coord = me->relative_coordinate (common, a); - Interval r (relative_group_extent (a, common, me->get_elt_property ("elements"))); + Interval r (relative_group_extent (a, common, me->get_grob_property ("elements"))); return ly_interval2scm (r - my_coord); } @@ -75,13 +75,13 @@ Axis_group_interface::group_extent_callback (SCM element_smob, SCM scm_axis) void -Axis_group_interface::set_axes (Score_element*me,Axis a1, Axis a2) +Axis_group_interface::set_axes (Grob*me,Axis a1, Axis a2) { // set_interface () ? SCM sa1= gh_int2scm (a1); SCM sa2 = gh_int2scm (a2); - SCM axes = me->get_elt_property ("axes"); + SCM axes = me->get_grob_property ("axes"); if (!gh_pair_p (axes) || scm_memq (sa1, axes) == SCM_BOOL_F @@ -90,7 +90,7 @@ Axis_group_interface::set_axes (Score_element*me,Axis a1, Axis a2) SCM ax = gh_cons (sa1, SCM_EOL); if (a1 != a2) ax= gh_cons (sa2, ax); - me->set_elt_property ("axes", ax); + me->set_grob_property ("axes", ax); } if (a1 != X_AXIS && a2 != X_AXIS) @@ -101,24 +101,24 @@ Axis_group_interface::set_axes (Score_element*me,Axis a1, Axis a2) /* why so convoluted ? (fixme/documentme?) */ - if (me->has_extent_callback_b (Score_element::molecule_extent_proc, a1)) + if (me->has_extent_callback_b (Grob::molecule_extent_proc, a1)) me->set_extent_callback (Axis_group_interface::group_extent_callback_proc,a1); - if (me->has_extent_callback_b (Score_element::molecule_extent_proc, a2)) + if (me->has_extent_callback_b (Grob::molecule_extent_proc, a2)) me->set_extent_callback (Axis_group_interface::group_extent_callback_proc,a2); } -Link_array -Axis_group_interface::get_children (Score_element*me) +Link_array +Axis_group_interface::get_children (Grob*me) { - Link_array childs; + Link_array childs; childs.push (me) ; if (!has_interface (me)) return childs; - for (SCM ep = me->get_elt_property ("elements"); gh_pair_p (ep); ep = gh_cdr (ep)) + for (SCM ep = me->get_grob_property ("elements"); gh_pair_p (ep); ep = gh_cdr (ep)) { - Score_element* e = unsmob_element (gh_car (ep)); + Grob* e = unsmob_element (gh_car (ep)); if (e) childs.concat (Axis_group_interface::get_children (e)); } @@ -127,7 +127,7 @@ Axis_group_interface::get_children (Score_element*me) } bool -Axis_group_interface::has_interface (Score_element*me) +Axis_group_interface::has_interface (Grob*me) { return me && me->has_interface (ly_symbol2scm ("axis-group-interface")); } @@ -135,7 +135,7 @@ Axis_group_interface::has_interface (Score_element*me) void -Axis_group_interface::set_interface (Score_element*me) +Axis_group_interface::set_interface (Grob*me) { if (!has_interface (me)) { diff --git a/lily/bar-engraver.cc b/lily/bar-engraver.cc index cba7a83573..4fad1f37c5 100644 --- a/lily/bar-engraver.cc +++ b/lily/bar-engraver.cc @@ -27,11 +27,10 @@ public: void request_bar (String type_str); protected: - virtual void do_creation_processing (); virtual void do_removal_processing (); void deprecated_process_music(); - virtual void do_pre_move_processing(); - virtual void process_acknowledged (); + virtual void stop_translation_timestep(); + virtual void create_grobs (); private: void typeset_bar (); @@ -43,7 +42,6 @@ private: Bar_engraver::Bar_engraver() { bar_p_ =0; - do_post_move_processing(); } void @@ -54,18 +52,13 @@ Bar_engraver::create_bar () bar_p_ = new Item (get_property ("BarLine")); SCM gl = get_property ("whichBar"); - if (scm_equal_p (gl, bar_p_->get_elt_property ("glyph")) != SCM_BOOL_T) - bar_p_->set_elt_property ("glyph", gl); + if (scm_equal_p (gl, bar_p_->get_grob_property ("glyph")) != SCM_BOOL_T) + bar_p_->set_grob_property ("glyph", gl); - announce_element (bar_p_, 0); + announce_grob (bar_p_, 0); } } -void -Bar_engraver::do_creation_processing () -{ -} - void Bar_engraver::do_removal_processing () { @@ -79,15 +72,14 @@ Bar_engraver::do_removal_processing () void Bar_engraver::deprecated_process_music() { - SCM b =get_property ("whichBar"); - if (gh_string_p (b)) + if (!bar_p_ && gh_string_p (get_property ("whichBar"))) { create_bar (); } } void -Bar_engraver::process_acknowledged () +Bar_engraver::create_grobs () { deprecated_process_music (); } @@ -97,7 +89,7 @@ Bar_engraver::typeset_bar () { if (bar_p_) { - typeset_element (bar_p_); + typeset_grob (bar_p_); bar_p_ =0; } } @@ -106,7 +98,7 @@ Bar_engraver::typeset_bar () lines may only be broken if there is a barline in all staffs */ void -Bar_engraver::do_pre_move_processing() +Bar_engraver::stop_translation_timestep() { if (!bar_p_) { diff --git a/lily/bar-number-engraver.cc b/lily/bar-number-engraver.cc index a6bb7e803a..5a32db3481 100644 --- a/lily/bar-number-engraver.cc +++ b/lily/bar-number-engraver.cc @@ -24,10 +24,10 @@ protected: Item* text_p_; protected: - virtual void do_pre_move_processing (); - virtual void acknowledge_element (Score_element_info); + virtual void stop_translation_timestep (); + virtual void acknowledge_grob (Grob_info); virtual void do_creation_processing (); - virtual void process_acknowledged (); + virtual void create_grobs (); void create_items(); void deprecated_process_music (); public: @@ -49,13 +49,13 @@ Bar_number_engraver::deprecated_process_music () create_items (); // guh. - text_p_->set_elt_property ("text", + text_p_->set_grob_property ("text", ly_str02scm (to_str (gh_scm2int (bn)).ch_C())); } } void -Bar_number_engraver::process_acknowledged () +Bar_number_engraver::create_grobs () { deprecated_process_music (); } @@ -80,9 +80,9 @@ Bar_number_engraver::do_creation_processing () void -Bar_number_engraver::acknowledge_element (Score_element_info inf) +Bar_number_engraver::acknowledge_grob (Grob_info inf) { - Score_element * s = inf.elem_l_; + Grob * s = inf.elem_l_; if (Staff_symbol::has_interface (s)) { SCM sts = get_property ("staffsFound"); @@ -92,7 +92,7 @@ Bar_number_engraver::acknowledge_element (Score_element_info inf) } else if (text_p_ && dynamic_cast (s) - && s->get_elt_property ("break-align-symbol") == ly_symbol2scm ("Left_edge_item")) + && s->get_grob_property ("break-align-symbol") == ly_symbol2scm ("Left_edge_item")) { /* By default this would land on the Paper_column -- so why @@ -102,12 +102,12 @@ Bar_number_engraver::acknowledge_element (Score_element_info inf) } void -Bar_number_engraver::do_pre_move_processing () +Bar_number_engraver::stop_translation_timestep () { if (text_p_) { - text_p_->set_elt_property ("side-support-elements", get_property ("staffsFound")); - typeset_element (text_p_); + text_p_->set_grob_property ("side-support-elements", get_property ("staffsFound")); + typeset_grob (text_p_); text_p_ =0; } } @@ -123,6 +123,6 @@ Bar_number_engraver::create_items () text_p_ = new Item (b); Side_position::set_axis(text_p_,Y_AXIS); - announce_element (text_p_, 0); + announce_grob (text_p_, 0); } diff --git a/lily/bar.cc b/lily/bar.cc index fa3862786d..6923ad9180 100644 --- a/lily/bar.cc +++ b/lily/bar.cc @@ -10,7 +10,7 @@ #include "lookup.hh" #include "paper-column.hh" #include "main.hh" -#include "score-element.hh" +#include "grob.hh" #include "bar.hh" #include "string.hh" #include "molecule.hh" @@ -26,10 +26,10 @@ MAKE_SCHEME_CALLBACK(Bar,brew_molecule,1); SCM Bar::brew_molecule (SCM smob) { - Score_element * me = unsmob_element (smob); + Grob * me = unsmob_element (smob); - SCM s = me->get_elt_property ("glyph"); - SCM barsiz_proc = me->get_elt_property ("barsize-procedure"); + SCM s = me->get_grob_property ("glyph"); + SCM barsiz_proc = me->get_grob_property ("barsize-procedure"); if (gh_string_p (s) && gh_procedure_p (barsiz_proc)) { String str =ly_scm2string (s); @@ -45,12 +45,12 @@ Bar::brew_molecule (SCM smob) Molecule -Bar::compound_barline (Score_element*me, String str, Real h) +Bar::compound_barline (Grob*me, String str, Real h) { - Real kern = gh_scm2double (me->get_elt_property ("kern")); - Real thinkern = gh_scm2double (me->get_elt_property ("thin-kern")); - Real hair = gh_scm2double (me->get_elt_property ("hair-thickness")); - Real fatline = gh_scm2double (me->get_elt_property ("thick-thickness")); + Real kern = gh_scm2double (me->get_grob_property ("kern")); + Real thinkern = gh_scm2double (me->get_grob_property ("thin-kern")); + Real hair = gh_scm2double (me->get_grob_property ("hair-thickness")); + Real fatline = gh_scm2double (me->get_grob_property ("thick-thickness")); Real staffline = me->paper_l ()->get_var ("stafflinethickness"); @@ -118,7 +118,7 @@ Bar::compound_barline (Score_element*me, String str, Real h) Molecule -Bar::simple_barline (Score_element*,Real w, Real h) +Bar::simple_barline (Grob*,Real w, Real h) { return Lookup::filledbox (Box (Interval(0,w), Interval(-h/2, h/2))); } @@ -128,28 +128,28 @@ MAKE_SCHEME_CALLBACK(Bar,before_line_breaking ,1); SCM Bar::before_line_breaking (SCM smob) { - Score_element*me=unsmob_element (smob); + Grob*me=unsmob_element (smob); Item * item = dynamic_cast (me); - SCM g = me->get_elt_property ("glyph"); + SCM g = me->get_grob_property ("glyph"); SCM orig = g; Direction bsd = item->break_status_dir (); if (gh_string_p (g) && bsd) { - SCM proc = me->get_elt_property ("break-glyph-function"); + SCM proc = me->get_grob_property ("break-glyph-function"); g = gh_call2 (proc, g, gh_int2scm (bsd)); } if (!gh_string_p (g)) { - me->set_elt_property ("molecule-callback", SCM_BOOL_T); + me->set_grob_property ("molecule-callback", SCM_BOOL_T); me->set_extent_callback (SCM_EOL, X_AXIS); // leave y_extent for spanbar? } if (! gh_equal_p (g, orig)) - me->set_elt_property ("glyph", g); + me->set_grob_property ("glyph", g); /* @@ -162,13 +162,13 @@ Bar::before_line_breaking (SCM smob) */ if (gh_string_p (g)) { - Score_element * col = item->column_l (); - SCM dirlist = col->get_elt_property ("dir-list"); + Grob * col = item->column_l (); + SCM dirlist = col->get_grob_property ("dir-list"); SCM scmdir = gh_int2scm (-1); if (scm_memq (scmdir, dirlist) == SCM_BOOL_F) { dirlist = gh_cons (scmdir, dirlist); - col->set_elt_property ("dir-list", dirlist); + col->set_grob_property ("dir-list", dirlist); } } @@ -176,13 +176,13 @@ Bar::before_line_breaking (SCM smob) } void -Bar::set_interface (Score_element*me) +Bar::set_interface (Grob*me) { me->set_interface (ly_symbol2scm ("bar-line-interface")); } bool -Bar::has_interface (Score_element*m) +Bar::has_interface (Grob*m) { return m && m->has_interface (ly_symbol2scm ("bar-line-interface")); } @@ -192,9 +192,9 @@ MAKE_SCHEME_CALLBACK(Bar,get_staff_bar_size,1); SCM Bar::get_staff_bar_size (SCM smob) { - Score_element*me = unsmob_element (smob); + Grob*me = unsmob_element (smob); Real ss = Staff_symbol_referencer::staff_space (me); - SCM size = me->get_elt_property ("bar-size"); + SCM size = me->get_grob_property ("bar-size"); if (gh_number_p (size)) return gh_double2scm (gh_scm2double(size)*ss); else diff --git a/lily/beam-engraver.cc b/lily/beam-engraver.cc index f9603d6ed8..a49a2bb1f4 100644 --- a/lily/beam-engraver.cc +++ b/lily/beam-engraver.cc @@ -42,12 +42,12 @@ class Beam_engraver : public Engraver void typeset_beam (); void set_melisma (bool); protected: - virtual void do_pre_move_processing (); - virtual void do_post_move_processing (); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); virtual void do_removal_processing (); - virtual void process_acknowledged (); - virtual void acknowledge_element (Score_element_info); - virtual bool do_try_music (Music*); + virtual void create_grobs (); + virtual void acknowledge_grob (Grob_info); + virtual bool try_music (Music*); void deprecated_process_music (); public: Beam_engraver (); @@ -66,7 +66,7 @@ Beam_engraver::Beam_engraver () } bool -Beam_engraver::do_try_music (Music *m) +Beam_engraver::try_music (Music *m) { if (Span_req * c = dynamic_cast(m)) { @@ -168,7 +168,7 @@ Beam_engraver::deprecated_process_music () /* urg, must copy to Auto_beam_engraver too */ - announce_element (beam_p_, reqs_drul_[START]); + announce_grob (beam_p_, reqs_drul_[START]); } reqs_drul_[STOP] = 0; reqs_drul_[START] = 0; @@ -182,7 +182,7 @@ Beam_engraver::typeset_beam () finished_beam_info_p_->beamify (); Beam::set_beaming (finished_beam_p_, finished_beam_info_p_); - typeset_element (finished_beam_p_); + typeset_grob (finished_beam_p_); delete finished_beam_info_p_; finished_beam_info_p_ =0; finished_beam_p_ = 0; @@ -192,7 +192,7 @@ Beam_engraver::typeset_beam () } void -Beam_engraver::do_post_move_processing () +Beam_engraver::start_translation_timestep () { reqs_drul_ [START] =0; if(beam_p_) { @@ -205,7 +205,7 @@ Beam_engraver::do_post_move_processing () } void -Beam_engraver::do_pre_move_processing () +Beam_engraver::stop_translation_timestep () { typeset_beam (); } @@ -229,14 +229,14 @@ Beam_engraver::do_removal_processing () } void -Beam_engraver::process_acknowledged () +Beam_engraver::create_grobs () { deprecated_process_music (); } void -Beam_engraver::acknowledge_element (Score_element_info info) +Beam_engraver::acknowledge_grob (Grob_info info) { if (beam_p_) { @@ -250,7 +250,7 @@ Beam_engraver::acknowledge_element (Score_element_info info) if (Stem::beam_l (stem_l)) return; - bool stem_grace = stem_l->get_elt_property ("grace") == SCM_BOOL_T; + bool stem_grace = stem_l->get_grob_property ("grace") == SCM_BOOL_T; SCM wg =get_property ("weAreGraceContext"); bool wgb= to_boolean (wg); @@ -282,7 +282,7 @@ Beam_engraver::acknowledge_element (Score_element_info info) */ } - stem_l->set_elt_property ("duration-log", + stem_l->set_grob_property ("duration-log", gh_int2scm (durlog)); Moment stem_location = now_mom () - beam_start_mom_ + beam_start_location_; beam_info_p_->add_stem (stem_location, diff --git a/lily/beam.cc b/lily/beam.cc index f94c018083..94dad6e6e5 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -37,25 +37,25 @@ #include "warn.hh" void -Beam::add_stem (Score_element*me, Score_element*s) +Beam::add_stem (Grob*me, Grob*s) { Pointer_group_interface:: add_element(me, "stems", s); s->add_dependency (me); assert (!Stem::beam_l (s)); - s->set_elt_property ("beam", me->self_scm ()); + s->set_grob_property ("beam", me->self_scm ()); add_bound_item (dynamic_cast (me), dynamic_cast (s)); } int -Beam::get_multiplicity (Score_element*me) +Beam::get_multiplicity (Grob*me) { int m = 0; - for (SCM s = me->get_elt_property ("stems"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = me->get_grob_property ("stems"); gh_pair_p (s); s = gh_cdr (s)) { - Score_element * sc = unsmob_element (gh_car (s)); + Grob * sc = unsmob_element (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) { - Score_element * me = unsmob_element (smob); + Grob * me = unsmob_element (smob); // Why? if (visible_stem_count (me) < 2) @@ -94,7 +94,7 @@ Beam::before_line_breaking (SCM smob) } Direction -Beam::get_default_dir (Score_element*me) +Beam::get_default_dir (Grob*me) { Drul_array total; total[UP] = total[DOWN] = 0; @@ -107,7 +107,7 @@ Beam::get_default_dir (Score_element*me) for (int i=0; i get_elt_property ("dir-function"); + SCM func = me->get_grob_property ("dir-function"); SCM s = gh_call2 (func, gh_cons (gh_int2scm (count[UP]), gh_int2scm (count[DOWN])), @@ -133,7 +133,7 @@ Beam::get_default_dir (Score_element*me) /* If dir is not determined: get default */ - return to_dir (me->get_elt_property ("default-neutral-direction")); + return to_dir (me->get_grob_property ("default-neutral-direction")); } @@ -143,7 +143,7 @@ Beam::get_default_dir (Score_element*me) once stem gets cleaned-up. */ void -Beam::set_stem_directions (Score_element*me) +Beam::set_stem_directions (Grob*me) { Link_array stems =Pointer_group_interface__extract_elements (me, (Item*) 0, "stems"); @@ -151,15 +151,15 @@ Beam::set_stem_directions (Score_element*me) for (int i=0; i remove_elt_property ("dir-forced"); + Grob *s = stems[i]; + SCM force = s->remove_grob_property ("dir-forced"); if (!gh_boolean_p (force) || !gh_scm2bool (force)) Directional_element_interface ::set (s,d); } } void -Beam::auto_knees (Score_element*me) +Beam::auto_knees (Grob*me) { if (!auto_knee (me,"auto-interstaff-knee-gap", true)) auto_knee (me, "auto-knee-gap", false); @@ -173,11 +173,11 @@ Beam::auto_knees (Score_element*me) don't set, or unset autoKneeGap/autoInterstaffKneeGap. */ bool -Beam::auto_knee (Score_element*me, String gap_str, bool interstaff_b) +Beam::auto_knee (Grob*me, String gap_str, bool interstaff_b) { bool knee_b = false; int knee_y = 0; - SCM gap = me->get_elt_property (gap_str.ch_C()); + SCM gap = me->get_grob_property (gap_str.ch_C()); Direction d = Directional_element_interface::get (me); Link_array stems= @@ -214,7 +214,7 @@ Beam::auto_knee (Score_element*me, String gap_str, bool interstaff_b) + (int)calc_interstaff_dist (s, dynamic_cast (me)); Directional_element_interface::set (s,y < knee_y ? UP : DOWN); - s->set_elt_property ("dir-forced", SCM_BOOL_T); + s->set_grob_property ("dir-forced", SCM_BOOL_T); } } return knee_b; @@ -227,7 +227,7 @@ Beam::auto_knee (Score_element*me, String gap_str, bool interstaff_b) scmify forced-fraction */ void -Beam::set_stem_shorten (Score_element*m) +Beam::set_stem_shorten (Grob*m) { Spanner*me = dynamic_cast (m); if (!visible_stem_count (me)) @@ -239,7 +239,7 @@ Beam::set_stem_shorten (Score_element*m) int multiplicity = get_multiplicity (me); - SCM shorten = me->get_elt_property ("beamed-stem-shorten"); + SCM shorten = me->get_grob_property ("beamed-stem-shorten"); if (shorten == SCM_EOL) return; @@ -261,8 +261,8 @@ Beam::set_stem_shorten (Score_element*m) Item* s = stems[i]; if (Stem::invisible_b (s)) continue; - if (gh_number_p (s->get_elt_property ("shorten"))) - s->set_elt_property ("shorten", gh_double2scm (shorten_f)); + if (gh_number_p (s->get_grob_property ("shorten"))) + s->set_grob_property ("shorten", gh_double2scm (shorten_f)); } } @@ -274,7 +274,7 @@ MAKE_SCHEME_CALLBACK(Beam,after_line_breaking,1); SCM Beam::after_line_breaking (SCM smob) { - Score_element * me = unsmob_element (smob); + Grob * me = unsmob_element (smob); /* first, calculate y, dy */ Real y, dy; @@ -304,15 +304,15 @@ Beam::after_line_breaking (SCM smob) */ /* check for user-override of dy */ - SCM s = me->remove_elt_property ("height-hs"); + SCM s = me->remove_grob_property ("height-hs"); if (gh_number_p (s)) { dy = gh_scm2double (s) * half_space; } - me->set_elt_property ("height", gh_double2scm (dy)); + me->set_grob_property ("height", gh_double2scm (dy)); /* check for user-override of y */ - s = me->remove_elt_property ("y-position-hs"); + s = me->remove_grob_property ("y-position-hs"); if (gh_number_p (s)) { y = gh_scm2double (s) * half_space; @@ -343,7 +343,7 @@ Beam::after_line_breaking (SCM smob) // UGH. Y is not in staff position unit? // Ik dacht datwe daar juist van weg wilden? set_stem_length (me, y, dy); - me->set_elt_property ("y-position", gh_double2scm (y)); + me->set_grob_property ("y-position", gh_double2scm (y)); return SCM_UNSPECIFIED; } @@ -352,7 +352,7 @@ Beam::after_line_breaking (SCM smob) See Documentation/tex/fonts.doc */ void -Beam::calc_default_position_and_height (Score_element*me,Real* y, Real* dy) +Beam::calc_default_position_and_height (Grob*me,Real* y, Real* dy) { *y = 0; *dy = 0; @@ -390,7 +390,7 @@ Beam::calc_default_position_and_height (Score_element*me,Real* y, Real* dy) } bool -Beam::suspect_slope_b (Score_element*me, Real y, Real dy) +Beam::suspect_slope_b (Grob*me, Real y, Real dy) { /* first, calculate y, dy */ /* @@ -398,8 +398,8 @@ Beam::suspect_slope_b (Score_element*me, Real y, Real dy) */ Real first_ideal = Stem::calc_stem_info (first_visible_stem (me)).idealy_f_; Real last_ideal = Stem::calc_stem_info (last_visible_stem (me)).idealy_f_; - Real lengthened = gh_scm2double (me->get_elt_property ("outer-stem-length-limit")); - Real steep = gh_scm2double (me->get_elt_property ("slope-limit")); + Real lengthened = gh_scm2double (me->get_grob_property ("outer-stem-length-limit")); + Real steep = gh_scm2double (me->get_grob_property ("slope-limit")); // ugh -> use commonx Real dx = last_visible_stem (me)->relative_coordinate (0, X_AXIS) - first_visible_stem (me)->relative_coordinate (0, X_AXIS); @@ -419,9 +419,9 @@ Beam::suspect_slope_b (Score_element*me, Real y, Real dy) corresponds with some tables in [Wanske] */ Real -Beam::calc_slope_damping_f (Score_element*me,Real dy) +Beam::calc_slope_damping_f (Grob*me,Real dy) { - SCM damp = me->get_elt_property ("damping"); + SCM damp = me->get_grob_property ("damping"); int damping = gh_scm2int (damp); if (damping) @@ -437,15 +437,15 @@ Beam::calc_slope_damping_f (Score_element*me,Real dy) } Real -Beam::calc_stem_y_f (Score_element*me,Item* s, Real y, Real dy) +Beam::calc_stem_y_f (Grob*me,Item* s, Real y, Real dy) { int beam_multiplicity = get_multiplicity (me); int stem_multiplicity = (Stem::flag_i (s) - 2) >? 0; - SCM space_proc = me->get_elt_property ("space-function"); + SCM space_proc = me->get_grob_property ("space-function"); SCM space = gh_call1 (space_proc, gh_int2scm (beam_multiplicity)); - Real thick = gh_scm2double (me->get_elt_property ("thickness")) ; + Real thick = gh_scm2double (me->get_grob_property ("thickness")) ; Real interbeam_f = gh_scm2double (space) ; // ugh -> use commonx @@ -476,7 +476,7 @@ Beam::calc_stem_y_f (Score_element*me,Item* s, Real y, Real dy) } Real -Beam::check_stem_length_f (Score_element*me,Real y, Real dy) +Beam::check_stem_length_f (Grob*me,Real y, Real dy) { Real shorten = 0; Real lengthen = 0; @@ -514,7 +514,7 @@ Beam::check_stem_length_f (Score_element*me,Real y, Real dy) stem directions and length should set to relative to the chord's position of the beam. */ void -Beam::set_stem_length (Score_element*me,Real y, Real dy) +Beam::set_stem_length (Grob*me,Real y, Real dy) { Real half_space = Staff_symbol_referencer::staff_space (me)/2; Link_array stems= @@ -543,11 +543,11 @@ Beam::set_stem_length (Score_element*me,Real y, Real dy) + n * staff_space */ Real -Beam::quantise_dy_f (Score_element*me,Real dy) +Beam::quantise_dy_f (Grob*me,Real dy) { Array a; - SCM proc = me->get_elt_property ("height-quants"); + SCM proc = me->get_grob_property ("height-quants"); SCM quants = gh_call2 (proc, me->self_scm (), gh_double2scm (me->paper_l ()->get_var ("stafflinethickness") / 1.0)); @@ -578,7 +578,7 @@ Beam::quantise_dy_f (Score_element*me,Real dy) if extend_b then stems must *not* get shorter */ Real -Beam::quantise_y_f (Score_element*me,Real y, Real dy, int quant_dir) +Beam::quantise_y_f (Grob*me,Real y, Real dy, int quant_dir) { int multiplicity = get_multiplicity (me); @@ -586,7 +586,7 @@ Beam::quantise_y_f (Score_element*me,Real y, Real dy, int quant_dir) Real thick = me->paper_l ()->get_var ("stafflinethickness"); - SCM proc = me->get_elt_property ("vertical-position-quant-function"); + SCM proc = me->get_grob_property ("vertical-position-quant-function"); SCM quants = scm_apply (proc, me->self_scm (), gh_list (gh_int2scm (multiplicity), @@ -614,10 +614,10 @@ Beam::quantise_y_f (Score_element*me,Real y, Real dy, int quant_dir) } void -Beam::set_beaming (Score_element*me,Beaming_info_list *beaming) +Beam::set_beaming (Grob*me,Beaming_info_list *beaming) { - Link_array stems= - Pointer_group_interface__extract_elements (me, (Score_element*)0, "stems"); + Link_array stems= + Pointer_group_interface__extract_elements (me, (Grob*)0, "stems"); Direction d = LEFT; for (int i=0; i < stems.size(); i++) @@ -639,7 +639,7 @@ Beam::set_beaming (Score_element*me,Beaming_info_list *beaming) FIXME: clean me up. */ Molecule -Beam::stem_beams (Score_element*me,Item *here, Item *next, Item *prev) +Beam::stem_beams (Grob*me,Item *here, Item *next, Item *prev) { // ugh -> use commonx if ((next && !(next->relative_coordinate (0, X_AXIS) > here->relative_coordinate (0, X_AXIS))) || @@ -649,10 +649,10 @@ Beam::stem_beams (Score_element*me,Item *here, Item *next, Item *prev) Real staffline_f = me->paper_l ()->get_var ("stafflinethickness"); int multiplicity = get_multiplicity (me); - SCM space_proc = me->get_elt_property ("space-function"); + SCM space_proc = me->get_grob_property ("space-function"); SCM space = gh_call1 (space_proc, gh_int2scm (multiplicity)); - Real thick = gh_scm2double (me->get_elt_property ("thickness")) ; + Real thick = gh_scm2double (me->get_grob_property ("thickness")) ; Real interbeam_f = gh_scm2double (space) ; Real bdy = interbeam_f; @@ -662,7 +662,7 @@ Beam::stem_beams (Score_element*me,Item *here, Item *next, Item *prev) Real dx = visible_stem_count (me) ? last_visible_stem (me)->relative_coordinate (0, X_AXIS) - first_visible_stem (me)->relative_coordinate (0, X_AXIS) : 0.0; - Real dy = gh_scm2double (me->get_elt_property ("height")); + Real dy = gh_scm2double (me->get_grob_property ("height")); Real dydx = dy && dx ? dy/dx : 0; Molecule leftbeams; @@ -674,7 +674,7 @@ Beam::stem_beams (Score_element*me,Item *here, Item *next, Item *prev) else { int t = Stem::type_i (here); - SCM proc = me->get_elt_property ("flag-width-function"); + SCM proc = me->get_grob_property ("flag-width-function"); SCM result = gh_call1 (proc, gh_int2scm (t)); nw_f = gh_scm2double (result); } @@ -716,7 +716,7 @@ Beam::stem_beams (Score_element*me,Item *here, Item *next, Item *prev) int j = 0; Real gap_f = 0; - SCM gap = me->get_elt_property ("gap"); + SCM gap = me->get_grob_property ("gap"); if (gh_number_p (gap)) { int gap_i = gh_scm2int ( (gap)); @@ -766,10 +766,10 @@ MAKE_SCHEME_CALLBACK(Beam,brew_molecule,1); SCM Beam::brew_molecule (SCM smob) { - Score_element * me =unsmob_element (smob); + Grob * me =unsmob_element (smob); Molecule mol; - if (!gh_pair_p (me->get_elt_property ("stems"))) + if (!gh_pair_p (me->get_grob_property ("stems"))) return SCM_EOL; Real x0,dx; Link_arraystems = @@ -787,9 +787,9 @@ Beam::brew_molecule (SCM smob) } - Real dy = gh_scm2double (me->get_elt_property ("height")); + Real dy = gh_scm2double (me->get_grob_property ("height")); Real dydx = dy && dx ? dy/dx : 0; - Real y = gh_scm2double (me->get_elt_property ("y-position")); + Real y = gh_scm2double (me->get_grob_property ("y-position")); for (int j=0; j stems = Pointer_group_interface__extract_elements ( me, (Item*) 0, "stems"); @@ -836,7 +836,7 @@ Beam::forced_stem_count (Score_element*me) use filter and standard list functions. */ int -Beam::visible_stem_count (Score_element*me) +Beam::visible_stem_count (Grob*me) { Link_arraystems = Pointer_group_interface__extract_elements (me, (Item*) 0, "stems"); @@ -850,7 +850,7 @@ Beam::visible_stem_count (Score_element*me) } Item* -Beam::first_visible_stem(Score_element*me) +Beam::first_visible_stem(Grob*me) { Link_arraystems = Pointer_group_interface__extract_elements ( me, (Item*) 0, "stems"); @@ -864,7 +864,7 @@ Beam::first_visible_stem(Score_element*me) } Item* -Beam::last_visible_stem(Score_element*me) +Beam::last_visible_stem(Grob*me) { Link_arraystems = Pointer_group_interface__extract_elements ( me, (Item*) 0, "stems"); @@ -890,16 +890,16 @@ MAKE_SCHEME_CALLBACK(Beam,rest_collision_callback,2); SCM Beam::rest_collision_callback (SCM element_smob, SCM axis) { - Score_element *rest = unsmob_element (element_smob); + Grob *rest = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == Y_AXIS); - Score_element * st = unsmob_element (rest->get_elt_property ("stem")); - Score_element * stem = st; + Grob * st = unsmob_element (rest->get_grob_property ("stem")); + Grob * stem = st; if (!stem) return gh_double2scm (0.0); - Score_element * beam = unsmob_element (stem->get_elt_property ("beam")); + Grob * beam = unsmob_element (stem->get_grob_property ("beam")); if (!beam || !Beam::has_interface (beam) || !Beam::visible_stem_count (beam)) return gh_double2scm (0.0); @@ -909,11 +909,11 @@ Beam::rest_collision_callback (SCM element_smob, SCM axis) // todo: make sure this calced already. - SCM s = beam->get_elt_property ("height"); + SCM s = beam->get_grob_property ("height"); if (gh_number_p (s)) beam_dy = gh_scm2double (s); - s = beam->get_elt_property ("y-position"); + s = beam->get_grob_property ("y-position"); if (gh_number_p (s)) beam_y = gh_scm2double (s); @@ -931,7 +931,7 @@ Beam::rest_collision_callback (SCM element_smob, SCM axis) Real rest_dim = rest->extent (rest, Y_AXIS)[d]*2.0 / staff_space ; // refp?? Real minimum_dist - = gh_scm2double (rest->get_elt_property ("minimum-beam-collision-distance")); + = gh_scm2double (rest->get_grob_property ("minimum-beam-collision-distance")); Real dist = minimum_dist + -d * (beamy - rest_dim) >? 0; @@ -949,18 +949,18 @@ Beam::rest_collision_callback (SCM element_smob, SCM axis) bool -Beam::has_interface (Score_element*me) +Beam::has_interface (Grob*me) { return me->has_interface (ly_symbol2scm ("beam-interface")); } void -Beam::set_interface (Score_element*me) +Beam::set_interface (Grob*me) { /* why the init? No way to tell difference between default and user override. */ - me->set_elt_property ("height", gh_int2scm (0)); // ugh. - me->set_elt_property ("y-position" ,gh_int2scm (0)); + me->set_grob_property ("height", gh_int2scm (0)); // ugh. + me->set_grob_property ("y-position" ,gh_int2scm (0)); me->set_interface (ly_symbol2scm("beam-interface")); } diff --git a/lily/break-algorithm.cc b/lily/break-algorithm.cc index 14ff931c98..92bed86e45 100644 --- a/lily/break-algorithm.cc +++ b/lily/break-algorithm.cc @@ -22,7 +22,7 @@ Array Break_algorithm::find_break_indices () const { - Link_array all = pscore_l_->line_l_->column_l_arr (); + Link_array all = pscore_l_->line_l_->column_l_arr (); Array retval; for (int i=0; i < all.size (); i++) @@ -37,11 +37,11 @@ Break_algorithm::find_break_indices () const } -Link_array +Link_array Break_algorithm::find_breaks () const { - Link_array all = pscore_l_->line_l_->column_l_arr (); - Link_array retval; + Link_array all = pscore_l_->line_l_->column_l_arr (); + Link_array retval; for (int i=0; i < all.size (); i++) if (Item::breakable_b (all[i])) @@ -56,7 +56,7 @@ Break_algorithm::find_breaks () const Simple_spacer* -Break_algorithm::generate_spacing_problem (Link_array curline, Interval line) const +Break_algorithm::generate_spacing_problem (Link_array curline, Interval line) const { Simple_spacer * sp = new Simple_spacer; diff --git a/lily/break-align-engraver.cc b/lily/break-align-engraver.cc index cbc7db0b0d..aee231f3cc 100644 --- a/lily/break-align-engraver.cc +++ b/lily/break-align-engraver.cc @@ -20,8 +20,8 @@ class Break_align_engraver : public Engraver Protected_scm column_alist_; protected: virtual void do_removal_processing (); - virtual void acknowledge_element(Score_element_info i); - virtual void do_pre_move_processing (); + virtual void acknowledge_grob(Grob_info i); + virtual void stop_translation_timestep (); void add_column (SCM); public: @@ -36,9 +36,9 @@ ADD_THIS_TRANSLATOR(Break_align_engraver); void Break_align_engraver::add_column (SCM smob) { - Score_element * e = unsmob_element (smob); + Grob * e = unsmob_element (smob); Break_align_interface::add_element (align_l_,e); - typeset_element (e); + typeset_grob (e); } void @@ -48,7 +48,7 @@ Break_align_engraver::do_removal_processing () } void -Break_align_engraver::do_pre_move_processing () +Break_align_engraver::stop_translation_timestep () { SCM order = get_property ("breakAlignOrder"); for (; gh_pair_p (order); order = gh_cdr (order)) @@ -72,7 +72,7 @@ Break_align_engraver::do_pre_move_processing () if (align_l_) { - typeset_element (align_l_); + typeset_grob (align_l_); align_l_ = 0; } } @@ -85,19 +85,19 @@ Break_align_engraver::Break_align_engraver () } void -Break_align_engraver::acknowledge_element (Score_element_info inf) +Break_align_engraver::acknowledge_grob (Grob_info inf) { if (Item * item_l = dynamic_cast (inf.elem_l_)) { if (item_l->empty_b (X_AXIS) || item_l->parent_l (X_AXIS)) return; - SCM bp=item_l->get_elt_property ("breakable"); + SCM bp=item_l->get_grob_property ("breakable"); bool breakable = (to_boolean (bp)); if (!breakable) return ; - SCM align_name = item_l->get_elt_property ("break-align-symbol"); + SCM align_name = item_l->get_grob_property ("break-align-symbol"); if (!gh_symbol_p (align_name)) return ; @@ -105,7 +105,7 @@ Break_align_engraver::acknowledge_element (Score_element_info inf) { align_l_ = new Item (get_property ("BreakAlignment")); Break_align_interface::set_interface (align_l_); - announce_element (align_l_,0); + announce_grob (align_l_,0); SCM edge_sym = ly_symbol2scm ("Left_edge_item"); Item * edge = new Item (get_property ("LeftEdge")); @@ -114,7 +114,7 @@ Break_align_engraver::acknowledge_element (Score_element_info inf) We must have left-edge in the middle. Instrument-names are left to left-edge, so they don't enter the staff. */ - align_l_->set_elt_property ("self-alignment-X", edge->self_scm ()); + align_l_->set_grob_property ("self-alignment-X", edge->self_scm ()); /* @@ -123,11 +123,11 @@ Break_align_engraver::acknowledge_element (Score_element_info inf) TODO: switch off ignoring empty stuff? */ - edge->set_extent_callback (Score_element::point_dimension_callback_proc, X_AXIS); + edge->set_extent_callback (Grob::point_dimension_callback_proc, X_AXIS); - align_l_->set_elt_property ("self-alignment-X", edge->self_scm ()); + align_l_->set_grob_property ("self-alignment-X", edge->self_scm ()); - announce_element (edge, 0); + announce_grob (edge, 0); column_alist_ = scm_assoc_set_x (column_alist_, edge_sym, edge->self_scm ()); } @@ -137,7 +137,7 @@ Break_align_engraver::acknowledge_element (Score_element_info inf) if (s != SCM_BOOL_F) { - Score_element *e = unsmob_element (gh_cdr(s)); + Grob *e = unsmob_element (gh_cdr(s)); group = dynamic_cast (e); } else @@ -147,9 +147,9 @@ Break_align_engraver::acknowledge_element (Score_element_info inf) Axis_group_interface::set_interface (group); Axis_group_interface::set_axes (group, X_AXIS,X_AXIS); - group->set_elt_property ("break-align-symbol", align_name); + group->set_grob_property ("break-align-symbol", align_name); group->set_parent (align_l_, Y_AXIS); - announce_element (group, 0); + announce_grob (group, 0); column_alist_ = scm_assoc_set_x (column_alist_, align_name, group->self_scm ()); } diff --git a/lily/break-align-item.cc b/lily/break-align-item.cc index 6a9e6eca09..b900f601b7 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) { - Score_element* me = unsmob_element (smob); + Grob* me = unsmob_element (smob); do_alignment (me); return SCM_UNSPECIFIED; } @@ -35,14 +35,14 @@ MAKE_SCHEME_CALLBACK(Break_align_interface,alignment_callback,2); SCM Break_align_interface::alignment_callback (SCM element_smob, SCM axis) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == X_AXIS); - Score_element *par = me->parent_l (a); - if (par && !to_boolean (par->get_elt_property ("break-alignment-done")))\ + Grob *par = me->parent_l (a); + if (par && !to_boolean (par->get_grob_property ("break-alignment-done")))\ { - par->set_elt_property ("break-alignment-done", SCM_BOOL_T); + par->set_grob_property ("break-alignment-done", SCM_BOOL_T); Break_align_interface::do_alignment (par); } @@ -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) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == X_AXIS); @@ -61,34 +61,34 @@ Break_align_interface::self_align_callback (SCM element_smob, SCM axis) Direction bsd = item->break_status_dir(); if (bsd == LEFT) { - me->set_elt_property ("self-alignment-X", gh_int2scm (RIGHT)); + me->set_grob_property ("self-alignment-X", gh_int2scm (RIGHT)); } return Side_position::aligned_on_self (element_smob, axis); } void -Break_align_interface::add_element (Score_element*me, Score_element *toadd) +Break_align_interface::add_element (Grob*me, Grob *toadd) { Axis_group_interface::add_element (me, toadd); } void -Break_align_interface::do_alignment (Score_element *me) +Break_align_interface::do_alignment (Grob *me) { Item * item = dynamic_cast (me); Item *column = item->column_l (); - Link_array elems; - Link_array all_elems - = Pointer_group_interface__extract_elements (me, (Score_element*)0, + Link_array elems; + Link_array all_elems + = Pointer_group_interface__extract_elements (me, (Grob*)0, "elements"); for (int i=0; i < all_elems.size(); i++) { Interval y = all_elems[i]->extent(all_elems[i], X_AXIS); if (!y.empty_b()) - elems.push (dynamic_cast (all_elems[i])); + elems.push (dynamic_cast (all_elems[i])); } if (!elems.size ()) @@ -99,7 +99,7 @@ Break_align_interface::do_alignment (Score_element *me) SCM current_origin = ly_symbol2scm ("none"); for (int i=0; i <= elems.size (); i++) { - Score_element *next_elt = i < elems.size () + Grob *next_elt = i < elems.size () ? elems[i] : 0 ; @@ -107,7 +107,7 @@ Break_align_interface::do_alignment (Score_element *me) if (next_elt) { - next_origin = next_elt->get_elt_property ("break-align-symbol"); + next_origin = next_elt->get_grob_property ("break-align-symbol"); next_origin = gh_symbol_p (next_origin)? next_origin : ly_symbol2scm ("none") @@ -116,7 +116,7 @@ Break_align_interface::do_alignment (Score_element *me) else next_origin = ly_symbol2scm ("begin-of-note"); - SCM alist = me->get_elt_property ("space-alist"); + SCM alist = me->get_grob_property ("space-alist"); SCM e = scm_assoc (scm_listify (current_origin, next_origin, SCM_UNDEFINED), alist); @@ -147,7 +147,7 @@ Break_align_interface::do_alignment (Score_element *me) symbol_list = gh_cdr (scm_reverse (symbol_list)); for (int i=0; i set_elt_property (gh_car (symbol_list), + elems[i]->set_grob_property (gh_car (symbol_list), scm_cons (gh_double2scm (0), gh_double2scm (dists[i+1]))); @@ -156,14 +156,14 @@ Break_align_interface::do_alignment (Score_element *me) // urg - SCM first_pair = elems[0]->get_elt_property ("minimum-space"); + SCM first_pair = elems[0]->get_grob_property ("minimum-space"); if (gh_pair_p (first_pair)) first_pair = first_pair; else first_pair = gh_cons (gh_double2scm (0.0), gh_double2scm (0.0)); scm_set_car_x (first_pair, gh_double2scm (-dists[0])); - elems[0]->set_elt_property ("minimum-space", first_pair); + elems[0]->set_grob_property ("minimum-space", first_pair); /* @@ -204,18 +204,18 @@ Break_align_interface::do_alignment (Score_element *me) The pairs are in the format of an interval (ie. CAR < CDR). */ - column->set_elt_property ("extra-space", + column->set_grob_property ("extra-space", scm_cons (gh_double2scm (pre_space), gh_double2scm (spring_len))); - column->set_elt_property ("stretch-distance", + column->set_grob_property ("stretch-distance", gh_cons (gh_double2scm (-dists[0]), gh_double2scm (stretch_distance))); } void -Break_align_interface::set_interface (Score_element*me) +Break_align_interface::set_interface (Grob*me) { Align_interface::set_interface (me); Align_interface::set_axis (me,X_AXIS); diff --git a/lily/breathing-sign-engraver.cc b/lily/breathing-sign-engraver.cc index dfdc58b950..5a24b9c6c9 100644 --- a/lily/breathing-sign-engraver.cc +++ b/lily/breathing-sign-engraver.cc @@ -28,15 +28,15 @@ public: VIRTUAL_COPY_CONS(Translator); protected: - virtual bool do_try_music (Music *req_l); + virtual bool try_music (Music *req_l); void deprecated_process_music(); - virtual void do_pre_move_processing(); - virtual void do_post_move_processing(); + virtual void stop_translation_timestep(); + virtual void start_translation_timestep(); private: Breathing_sign_req * breathing_sign_req_l_; - Score_element * breathing_sign_p_; + Grob * breathing_sign_p_; }; Breathing_sign_engraver::Breathing_sign_engraver() @@ -46,7 +46,7 @@ Breathing_sign_engraver::Breathing_sign_engraver() } bool -Breathing_sign_engraver::do_try_music (Music*r_l) +Breathing_sign_engraver::try_music (Music*r_l) { if (Breathing_sign_req * b= dynamic_cast (r_l)) { @@ -67,22 +67,22 @@ Breathing_sign_engraver::deprecated_process_music() Breathing_sign::set_interface (breathing_sign_p_); - announce_element (breathing_sign_p_, breathing_sign_req_l_); + announce_grob (breathing_sign_p_, breathing_sign_req_l_); } } void -Breathing_sign_engraver::do_pre_move_processing() +Breathing_sign_engraver::stop_translation_timestep() { if(breathing_sign_p_) { - typeset_element(breathing_sign_p_); + typeset_grob(breathing_sign_p_); breathing_sign_p_ = 0; } } void -Breathing_sign_engraver::do_post_move_processing() +Breathing_sign_engraver::start_translation_timestep() { breathing_sign_req_l_ = 0; } diff --git a/lily/breathing-sign.cc b/lily/breathing-sign.cc index 935151e514..2f131e5be8 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) { - Score_element * me = unsmob_element (smob); + Grob * me = unsmob_element (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 ) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Direction d = Directional_element_interface::get (me); if (!d) @@ -53,7 +53,7 @@ Breathing_sign::offset_callback (SCM element_smob, SCM ) } void -Breathing_sign::set_interface (Score_element *b) +Breathing_sign::set_interface (Grob *b) { Staff_symbol_referencer::set_interface (b); diff --git a/lily/chord-name-engraver.cc b/lily/chord-name-engraver.cc index 5b7e625a4e..7b72e3bc26 100644 --- a/lily/chord-name-engraver.cc +++ b/lily/chord-name-engraver.cc @@ -26,10 +26,10 @@ public: VIRTUAL_COPY_CONS (Translator); protected: - virtual void do_pre_move_processing (); - virtual void acknowledge_element (Score_element_info i); + virtual void stop_translation_timestep (); + virtual void acknowledge_grob (Grob_info i); void deprecated_process_music (); - virtual bool do_try_music (Music *); + virtual bool try_music (Music *); private: void add_note (Note_req *); @@ -67,7 +67,7 @@ Chord_name_engraver::add_note (Note_req* n) } bool -Chord_name_engraver::do_try_music (Music* m) +Chord_name_engraver::try_music (Music* m) { if (Note_req* n = dynamic_cast (m)) { @@ -77,7 +77,7 @@ Chord_name_engraver::do_try_music (Music* m) return false; } -/* Uh, if we do acknowledge_element, shouldn't we postpone +/* Uh, if we do acknowledge_grob, shouldn't we postpone deprecated_process_music until do_process_acknowlegded? Sigh, I can *never* remember how this works, can't we @@ -86,9 +86,9 @@ Chord_name_engraver::do_try_music (Music* m) do_creation0 post_move1 - do_try_music2 - deprecated_process_music3 (or is it acknowledge_element3 ?) - acknowledge_element4 + try_music2 + deprecated_process_music3 (or is it acknowledge_grob3 ?) + acknowledge_grob4 do_pre_move9 @@ -96,7 +96,7 @@ Chord_name_engraver::do_try_music (Music* m) and what was the deal with this ``do'' prefix again? */ void -Chord_name_engraver::acknowledge_element (Score_element_info i) +Chord_name_engraver::acknowledge_grob (Grob_info i) { if (Note_req* n = dynamic_cast (i.req_l_)) add_note (n); @@ -121,21 +121,21 @@ Chord_name_engraver::deprecated_process_music () #endif chord_name_p_ = new Item (get_property ("ChordName")); - chord_name_p_->set_elt_property ("chord", chord_); - announce_element (chord_name_p_, 0); + chord_name_p_->set_grob_property ("chord", chord_); + announce_grob (chord_name_p_, 0); SCM s = get_property ("drarnChords"); //FIXME! if (to_boolean (s) && last_chord_ != SCM_EOL && gh_equal_p (chord_, last_chord_)) - chord_name_p_->set_elt_property ("begin-of-line-visible", SCM_BOOL_T); + chord_name_p_->set_grob_property ("begin-of-line-visible", SCM_BOOL_T); } } void -Chord_name_engraver::do_pre_move_processing () +Chord_name_engraver::stop_translation_timestep () { if (chord_name_p_) { - typeset_element (chord_name_p_); + typeset_grob (chord_name_p_); } chord_name_p_ = 0; diff --git a/lily/chord-name.cc b/lily/chord-name.cc index 24e2ced509..804b3fb2c8 100644 --- a/lily/chord-name.cc +++ b/lily/chord-name.cc @@ -10,7 +10,7 @@ #include "molecule.hh" #include "paper-def.hh" #include "font-interface.hh" -#include "score-element.hh" +#include "grob.hh" #include "paper-column.hh" #include "line-of-score.hh" #include "staff-symbol-referencer.hh" @@ -23,7 +23,7 @@ Chord_name::after_line_breaking (SCM smob) Item* me = dynamic_cast (unsmob_element (smob)); assert (me); - SCM s = me->get_elt_property ("begin-of-line-visible"); + SCM s = me->get_grob_property ("begin-of-line-visible"); if (to_boolean (s)) { if (Paper_column::rank_i (me->column_l ()) - @@ -42,20 +42,20 @@ MAKE_SCHEME_CALLBACK (Chord_name,brew_molecule,1); SCM Chord_name::brew_molecule (SCM smob) { - Score_element *me = unsmob_element (smob); - SCM style = me->get_elt_property ("style"); + Grob *me = unsmob_element (smob); + SCM style = me->get_grob_property ("style"); - if (!gh_string_p (style)) - style = ly_str02scm ("banter"); + if (!gh_symbol_p (style)) + style = ly_symbol2scm ("banter"); - SCM chord = me-> get_elt_property ("chord"); - SCM func = me->get_elt_property (ly_symbol2scm ("chord-name-function")); + SCM chord = me-> get_grob_property ("chord"); + SCM func = me->get_grob_property (ly_symbol2scm ("chord-name-function")); SCM text = gh_call2 (func, style, chord); SCM properties = Font_interface::font_alist_chain (me); Molecule mol = Text_item::text2molecule (me, text, properties); - SCM space = me->get_elt_property ("word-space"); + SCM space = me->get_grob_property ("word-space"); if (gh_number_p (space)) { Molecule m; diff --git a/lily/chord-tremolo-engraver.cc b/lily/chord-tremolo-engraver.cc index 8570ff263d..a71c7f1041 100644 --- a/lily/chord-tremolo-engraver.cc +++ b/lily/chord-tremolo-engraver.cc @@ -59,11 +59,11 @@ protected: protected: virtual void do_removal_processing(); void deprecated_process_music(); - virtual bool do_try_music (Music*); - virtual void acknowledge_element (Score_element_info); - virtual void do_pre_move_processing(); - virtual void do_post_move_processing(); - virtual void process_acknowledged (); + virtual bool try_music (Music*); + virtual void acknowledge_grob (Grob_info); + virtual void stop_translation_timestep(); + virtual void start_translation_timestep(); + virtual void create_grobs (); }; Chord_tremolo_engraver::Chord_tremolo_engraver() @@ -74,7 +74,7 @@ Chord_tremolo_engraver::Chord_tremolo_engraver() } bool -Chord_tremolo_engraver::do_try_music (Music * m) +Chord_tremolo_engraver::try_music (Music * m) { Repeated_music * rp = dynamic_cast (m); if (rp @@ -94,7 +94,7 @@ Chord_tremolo_engraver::do_try_music (Music * m) } void -Chord_tremolo_engraver::process_acknowledged () +Chord_tremolo_engraver::create_grobs () { deprecated_process_music (); } @@ -106,13 +106,13 @@ Chord_tremolo_engraver::deprecated_process_music () { beam_p_ = new Spanner (get_property ("Beam")); Beam::set_interface (beam_p_); - beam_p_->set_elt_property ("chord-tremolo", SCM_BOOL_T); + beam_p_->set_grob_property ("chord-tremolo", SCM_BOOL_T); SCM smp = get_property ("measurePosition"); Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0); beam_start_location_ = mp; - announce_element (beam_p_, repeat_); + announce_grob (beam_p_, repeat_); } } @@ -138,20 +138,20 @@ Chord_tremolo_engraver::typeset_beam () { if (finished_beam_p_) { - typeset_element (finished_beam_p_); + typeset_grob (finished_beam_p_); finished_beam_p_ = 0; } } void -Chord_tremolo_engraver::acknowledge_element (Score_element_info info) +Chord_tremolo_engraver::acknowledge_grob (Grob_info info) { if (beam_p_) { if (Stem::has_interface (info.elem_l_)) { - Score_element * s = info.elem_l_; + Grob * s = info.elem_l_; int f = Stem::flag_i (s); f = (f > 2) ? f - 2 : 1; Stem::set_beaming (s, f, LEFT); @@ -168,13 +168,13 @@ Chord_tremolo_engraver::acknowledge_element (Score_element_info info) don't understand this comment. --hwn. */ - SCM d = s->get_elt_property ("direction"); + SCM d = s->get_grob_property ("direction"); if (Stem::type_i (s ) != 1) { int gap_i =Stem::flag_i (s ) - ((Stem::type_i (s ) >? 2) - 2); - beam_p_->set_elt_property ("beam-gap", gh_int2scm(gap_i)); + beam_p_->set_grob_property ("beam-gap", gh_int2scm(gap_i)); } - s->set_elt_property ("direction", d); + s->set_grob_property ("direction", d); if (dynamic_cast (info.req_l_)) { @@ -191,14 +191,14 @@ Chord_tremolo_engraver::acknowledge_element (Score_element_info info) } if (Note_head::has_interface (info.elem_l_)) { - info.elem_l_->set_elt_property ("duration-log", gh_int2scm (intlog2 (note_head_i_))); + info.elem_l_->set_grob_property ("duration-log", gh_int2scm (intlog2 (note_head_i_))); } } } void -Chord_tremolo_engraver::do_post_move_processing () +Chord_tremolo_engraver::start_translation_timestep () { if (beam_p_ && stop_mom_ == now_mom ()) { @@ -211,7 +211,7 @@ Chord_tremolo_engraver::do_post_move_processing () void -Chord_tremolo_engraver::do_pre_move_processing () +Chord_tremolo_engraver::stop_translation_timestep () { typeset_beam (); } diff --git a/lily/chord.cc b/lily/chord.cc index ad26aed4cf..3454f47a77 100644 --- a/lily/chord.cc +++ b/lily/chord.cc @@ -35,7 +35,7 @@ ly_unique (SCM list) /* Hmm, rewrite this using ly_split_list? */ SCM -ly_delete1 (SCM s, SCM list) +ly_remove_member (SCM s, SCM list) { SCM removed = SCM_EOL; for (SCM i = list; gh_pair_p (i); i = gh_cdr (i)) @@ -282,16 +282,16 @@ Chord::add_below_tonic (SCM pitch, SCM pitches) -/***** - Parser stuff - - Construct from parser output: - - PITCHES is the plain chord, it does not include bass or inversion - - Part of Chord:: namespace for now, because we do lots of - chord-manipulating stuff. */ +/* + Parser stuff + + Construct from parser output: + PITCHES is the plain chord, it does not include bass or inversion + + Part of Chord:: namespace for now, because we do lots of + chord-manipulating stuff. +*/ SCM Chord::tonic_add_sub_to_pitches (SCM tonic, SCM add, SCM sub) { diff --git a/lily/clef-engraver.cc b/lily/clef-engraver.cc index 6a962c52a8..b0e1408229 100644 --- a/lily/clef-engraver.cc +++ b/lily/clef-engraver.cc @@ -34,11 +34,11 @@ public: protected: void deprecated_process_music (); - virtual void do_pre_move_processing (); + virtual void stop_translation_timestep (); virtual void do_creation_processing (); - virtual void do_post_move_processing (); - virtual void process_acknowledged (); - virtual void acknowledge_element (Score_element_info); + virtual void start_translation_timestep (); + virtual void create_grobs (); + virtual void acknowledge_grob (Grob_info); private: Item * clef_p_; @@ -112,7 +112,7 @@ Clef_engraver::set_glyph () ie. a breakpoint) */ void -Clef_engraver::acknowledge_element (Score_element_info info) +Clef_engraver::acknowledge_grob (Grob_info info) { deprecated_process_music (); Item * item =dynamic_cast (info.elem_l_); @@ -140,7 +140,7 @@ Clef_engraver::acknowledge_element (Score_element_info info) to know c0-pos for this. (?) */ - item->set_elt_property ("c0-position", get_property ("centralCPosition")); + item->set_grob_property ("c0-position", get_property ("centralCPosition")); } } } @@ -158,7 +158,7 @@ Clef_engraver::create_clef () if (!clef_p_) { Item *c= new Item (get_property ("Clef")); - announce_element (c, 0); + announce_grob (c, 0); Staff_symbol_referencer::set_interface (c); @@ -177,14 +177,14 @@ Clef_engraver::create_clef () g->set_parent (clef_p_, Y_AXIS); g->set_parent (clef_p_, X_AXIS); - g->set_elt_property ("direction", gh_int2scm (sign (gh_scm2int (oct)))); + g->set_grob_property ("direction", gh_int2scm (sign (gh_scm2int (oct)))); octavate_p_ = g; - announce_element (octavate_p_, 0); + announce_grob (octavate_p_, 0); } } void -Clef_engraver::process_acknowledged () +Clef_engraver::create_grobs () { deprecated_process_music (); } @@ -206,40 +206,40 @@ Clef_engraver::deprecated_process_music () create_clef (); - clef_p_->set_elt_property ("non-default", SCM_BOOL_T); + clef_p_->set_grob_property ("non-default", SCM_BOOL_T); } } void -Clef_engraver::do_pre_move_processing () +Clef_engraver::stop_translation_timestep () { if (clef_p_) { SCM vis = 0; - if (to_boolean (clef_p_->get_elt_property ("non-default"))) + if (to_boolean (clef_p_->get_grob_property ("non-default"))) { vis = get_property ("explicitClefVisibility"); } if (vis) { - clef_p_->set_elt_property ("visibility-lambda", vis); + clef_p_->set_grob_property ("visibility-lambda", vis); if (octavate_p_) - octavate_p_->set_elt_property ("visibility-lambda", vis); + octavate_p_->set_grob_property ("visibility-lambda", vis); } - typeset_element (clef_p_); + typeset_grob (clef_p_); clef_p_ =0; if (octavate_p_) - typeset_element (octavate_p_); + typeset_grob (octavate_p_); octavate_p_ = 0; } } void -Clef_engraver::do_post_move_processing () +Clef_engraver::start_translation_timestep () { } diff --git a/lily/clef-item.cc b/lily/clef-item.cc index 2ef28ba767..528fc7dbf7 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -22,23 +22,18 @@ Clef::before_line_breaking (SCM smob) { Item * s = dynamic_cast (unsmob_element (smob)); - SCM style_sym =s->get_elt_property ("style"); - String style; - if (gh_string_p (style_sym)) - style = ly_scm2string (style_sym); - - SCM glyph = s->get_elt_property ("glyph"); + SCM glyph = s->get_grob_property ("glyph"); if (gh_string_p (glyph)) { String str = ly_scm2string (glyph); - if (to_boolean (s->get_elt_property ("non-default")) && + if (to_boolean (s->get_grob_property ("non-default")) && s->break_status_dir() != RIGHT && - to_boolean (s->get_elt_property ("full-size-change"))) + to_boolean (s->get_grob_property ("full-size-change"))) { str += "_change"; - s->set_elt_property ("glyph", ly_str02scm (str.ch_C())); + s->set_grob_property ("glyph", ly_str02scm (str.ch_C())); } } else @@ -51,14 +46,14 @@ Clef::before_line_breaking (SCM smob) } bool -Clef::has_interface (Score_element* me) +Clef::has_interface (Grob* me) { return me->has_interface (ly_symbol2scm ("clef-interface")); } void -Clef::set_interface (Score_element* me) +Clef::set_interface (Grob* me) { me->set_interface (ly_symbol2scm ("clef-interface")); } @@ -67,8 +62,8 @@ MAKE_SCHEME_CALLBACK(Clef,brew_molecule,1) SCM Clef::brew_molecule (SCM smob) { - Score_element * sc = unsmob_element (smob); - SCM glyph = sc->get_elt_property ("glyph"); + Grob * sc = unsmob_element (smob); + SCM glyph = sc->get_grob_property ("glyph"); if (gh_string_p (glyph)) { return Font_interface::get_default_font (sc)->find_by_name (String (ly_scm2string (glyph))).smobbed_copy (); diff --git a/lily/collision-engraver.cc b/lily/collision-engraver.cc index e97ecccb0c..7f361c5d8e 100644 --- a/lily/collision-engraver.cc +++ b/lily/collision-engraver.cc @@ -17,12 +17,12 @@ a collision object. */ class Collision_engraver : public Engraver { Item * col_p_; - Link_array note_column_l_arr_; + Link_array note_column_l_arr_; protected: - virtual void acknowledge_element (Score_element_info); - virtual void process_acknowledged (); - virtual void do_pre_move_processing(); + virtual void acknowledge_grob (Grob_info); + virtual void create_grobs (); + virtual void stop_translation_timestep(); public: VIRTUAL_COPY_CONS(Translator); Collision_engraver(); @@ -30,7 +30,7 @@ public: void -Collision_engraver::process_acknowledged () +Collision_engraver::create_grobs () { if (col_p_ || note_column_l_arr_.size () < 2) return ; @@ -40,7 +40,7 @@ Collision_engraver::process_acknowledged () Axis_group_interface::set_interface (col_p_); Axis_group_interface::set_axes (col_p_, X_AXIS, Y_AXIS); - announce_element (col_p_,0); + announce_grob (col_p_,0); } for (int i=0; i< note_column_l_arr_.size (); i++) @@ -48,7 +48,7 @@ Collision_engraver::process_acknowledged () } void -Collision_engraver::acknowledge_element (Score_element_info i) +Collision_engraver::acknowledge_grob (Grob_info i) { if (Note_column::has_interface (i.elem_l_)) { @@ -61,11 +61,11 @@ Collision_engraver::acknowledge_element (Score_element_info i) } void -Collision_engraver::do_pre_move_processing() +Collision_engraver::stop_translation_timestep() { if (col_p_) { - typeset_element (col_p_); + typeset_grob (col_p_); col_p_ =0; } note_column_l_arr_.clear (); diff --git a/lily/collision.cc b/lily/collision.cc index 5bfac10d1c..8bd1bc186c 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) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == X_AXIS); @@ -26,9 +26,9 @@ Collision::force_shift_callback (SCM element_smob, SCM axis) /* ugh. the way DONE is done is not clean */ - if (!unsmob_element (me->get_elt_property ("done"))) + if (!unsmob_element (me->get_grob_property ("done"))) { - me->set_elt_property ("done", me->self_scm ()); + me->set_grob_property ("done", me->self_scm ()); do_shifts (me); } @@ -39,19 +39,19 @@ Collision::force_shift_callback (SCM element_smob, SCM axis) TODO: make callback of this. */ void -Collision::do_shifts(Score_element* me) +Collision::do_shifts(Grob* me) { SCM autos (automatic_shift (me)); SCM hand (forced_shift (me)); - Link_array done; + Link_array done; Real wid - = gh_scm2double (me->get_elt_property ("note-width")); + = gh_scm2double (me->get_grob_property ("note-width")); for (; gh_pair_p (hand); hand =gh_cdr (hand)) { - Score_element * s = unsmob_element (gh_caar (hand)); + Grob * s = unsmob_element (gh_caar (hand)); Real amount = gh_scm2double (gh_cdar (hand)); s->translate_axis (amount *wid, X_AXIS); @@ -59,7 +59,7 @@ Collision::do_shifts(Score_element* me) } for (; gh_pair_p (autos); autos =gh_cdr (autos)) { - Score_element * s = unsmob_element (gh_caar (autos)); + Grob * s = unsmob_element (gh_caar (autos)); Real amount = gh_scm2double (gh_cdar (autos)); if (!done.find_l (s)) @@ -73,18 +73,18 @@ Collision::do_shifts(Score_element* me) This should be put into Scheme. */ SCM -Collision::automatic_shift (Score_element *me) +Collision::automatic_shift (Grob *me) { - Drul_array > clash_groups; + Drul_array > clash_groups; Drul_array > shifts; SCM tups = SCM_EOL; - SCM s = me->get_elt_property ("elements"); + SCM s = me->get_grob_property ("elements"); for (; gh_pair_p (s); s = gh_cdr (s)) { SCM car = gh_car (s); - Score_element * se = unsmob_element (car); + Grob * se = unsmob_element (car); if (Note_column::has_interface (se)) clash_groups[Note_column::dir (se)].push (se); } @@ -94,14 +94,14 @@ Collision::automatic_shift (Score_element *me) do { Array & shift (shifts[d]); - Link_array & clashes (clash_groups[d]); + Link_array & clashes (clash_groups[d]); clashes.sort (Note_column::shift_compare); for (int i=0; i < clashes.size (); i++) { SCM sh - = clashes[i]->get_elt_property ("horizontal-shift"); + = clashes[i]->get_grob_property ("horizontal-shift"); if (gh_number_p (sh)) shift.push (gh_scm2int (sh)); @@ -155,15 +155,15 @@ Collision::automatic_shift (Score_element *me) all of them again. */ if (extents[UP].size () && extents[DOWN].size ()) { - Score_element *cu_l =clash_groups[UP][0]; - Score_element *cd_l =clash_groups[DOWN][0]; + Grob *cu_l =clash_groups[UP][0]; + Grob *cd_l =clash_groups[DOWN][0]; /* TODO. */ - Score_element * nu_l= Note_column::first_head(cu_l); - Score_element * nd_l = Note_column::first_head(cd_l); + Grob * nu_l= Note_column::first_head(cu_l); + Grob * nd_l = Note_column::first_head(cd_l); int downpos = Note_column::head_positions_interval (cd_l)[BIGGER]; int uppos = Note_column::head_positions_interval (cu_l)[SMALLER]; @@ -173,7 +173,7 @@ Collision::automatic_shift (Score_element *me) && Rhythmic_head::balltype_i (nu_l) == Rhythmic_head::balltype_i (nd_l); - if (!to_boolean (me->get_elt_property ("merge-differently-dotted"))) + if (!to_boolean (me->get_grob_property ("merge-differently-dotted"))) merge = merge && Rhythmic_head::dot_count (nu_l) == Rhythmic_head::dot_count (nd_l); /* @@ -202,16 +202,16 @@ Collision::automatic_shift (Score_element *me) SCM -Collision::forced_shift (Score_element *me) +Collision::forced_shift (Grob *me) { SCM tups = SCM_EOL; - SCM s = me->get_elt_property ("elements"); + SCM s = me->get_grob_property ("elements"); for (; gh_pair_p (s); s = gh_cdr (s)) { - Score_element * se = unsmob_element (gh_car (s)); + Grob * se = unsmob_element (gh_car (s)); - SCM force = se->remove_elt_property ("force-hshift"); + SCM force = se->remove_grob_property ("force-hshift"); if (gh_number_p (force)) { tups = gh_cons (gh_cons (se->self_scm (), force), @@ -225,7 +225,7 @@ Collision::forced_shift (Score_element *me) void -Collision::add_column (Score_element*me,Score_element* ncol_l) +Collision::add_column (Grob*me,Grob* ncol_l) { ncol_l->add_offset_callback (Collision::force_shift_callback_proc, X_AXIS); Axis_group_interface::add_element (me, ncol_l); diff --git a/lily/crescendo.cc b/lily/crescendo.cc index 32c9d07f28..c578c323c3 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -20,14 +20,14 @@ MAKE_SCHEME_CALLBACK (Hairpin, brew_molecule, 1); SCM Hairpin::brew_molecule (SCM smob) { - Score_element *me= unsmob_element (smob); + Grob *me= unsmob_element (smob); Spanner *span = dynamic_cast(me); Real line = me->paper_l ()->get_var ("stafflinethickness"); Real broken_left = span->get_broken_left_end_align (); - SCM s = me->get_elt_property("grow-direction"); + SCM s = me->get_grob_property("grow-direction"); if (!isdir_b (s)) { me->suicide (); @@ -35,7 +35,7 @@ Hairpin::brew_molecule (SCM smob) } Direction grow_dir = to_dir (s); - Real padding = gh_scm2double (me->get_elt_property ("padding")); + Real padding = gh_scm2double (me->get_grob_property ("padding")); Real width = span->spanner_length (); width -= span->get_broken_left_end_align (); @@ -56,7 +56,11 @@ Hairpin::brew_molecule (SCM smob) if (!broken [d]) { - Real r = b->extent (b, X_AXIS)[-d] + padding; + + Interval e =b->extent (b, X_AXIS); + Real r = 0.0; + if (!e.empty_b ()) + r = e[-d] + padding; width += d * r; extra_off[d] = r; } @@ -64,8 +68,8 @@ Hairpin::brew_molecule (SCM smob) while (flip (&d) != LEFT); bool continued = broken[Direction (-grow_dir)]; - Real height = gh_scm2double (me->get_elt_property ("height")); - Real thick = line * gh_scm2double (me->get_elt_property ("thickness")); + Real height = gh_scm2double (me->get_grob_property ("height")); + Real thick = line * gh_scm2double (me->get_grob_property ("thickness")); const char* type = (grow_dir < 0) ? "decrescendo" : "crescendo"; SCM hairpin = gh_list (ly_symbol2scm (type), diff --git a/lily/cross-staff.cc b/lily/cross-staff.cc index d8a535af1b..c45395ae5a 100644 --- a/lily/cross-staff.cc +++ b/lily/cross-staff.cc @@ -11,12 +11,12 @@ Real calc_interstaff_dist (Item *item, Spanner *span) { Real interstaff = 0.0; - Score_element *common = item->common_refpoint (span, Y_AXIS); + Grob *common = item->common_refpoint (span, Y_AXIS); if (Align_interface::has_interface (common) && Align_interface::axis(common) == Y_AXIS) { - SCM threshold = common->get_elt_property ("threshold"); + SCM threshold = common->get_grob_property ("threshold"); if (!gh_pair_p (threshold) || !scm_equal_p (gh_car (threshold), gh_cdr (threshold))) warning (_ ("minVerticalAlign != maxVerticalAlign: cross staff spanners may be broken")); @@ -27,18 +27,18 @@ calc_interstaff_dist (Item *item, Spanner *span) if (gh_pair_p (threshold)) interstaff = gh_scm2double (gh_car (threshold)) * interstaff; - Score_element * span_refpoint = span; + Grob * span_refpoint = span; while (span_refpoint->parent_l (Y_AXIS) != common) span_refpoint = span_refpoint->parent_l (Y_AXIS); - Score_element * note_refpoint = item; + Grob * note_refpoint = item; while (note_refpoint->parent_l (Y_AXIS) != common) note_refpoint = note_refpoint->parent_l (Y_AXIS); int span_prio = - Align_interface::get_count (common,(Score_element*) dynamic_cast (span_refpoint)); + Align_interface::get_count (common,(Grob*) dynamic_cast (span_refpoint)); int item_prio = - Align_interface::get_count (common,(Score_element*) dynamic_cast (note_refpoint)); + Align_interface::get_count (common,(Grob*) dynamic_cast (note_refpoint)); /* our staff is lower -> interstaff *= -1 diff --git a/lily/custos-engraver.cc b/lily/custos-engraver.cc index 018d772de0..63ae946016 100644 --- a/lily/custos-engraver.cc +++ b/lily/custos-engraver.cc @@ -24,18 +24,18 @@ class Custos_engraver : public Engraver { public: Custos_engraver(); - virtual void do_post_move_processing(); - virtual void acknowledge_element(Score_element_info); + virtual void start_translation_timestep(); + virtual void acknowledge_grob(Grob_info); void deprecated_process_music (); - virtual void process_acknowledged (); - virtual void do_pre_move_processing (); + virtual void create_grobs (); + virtual void stop_translation_timestep (); virtual void do_removal_processing (); VIRTUAL_COPY_CONS(Translator); private: Item * create_custos(); bool custos_permitted; - Link_array custos_arr_; + Link_array custos_arr_; Array pitches_; }; @@ -46,7 +46,7 @@ Custos_engraver::Custos_engraver () void -Custos_engraver::do_pre_move_processing() +Custos_engraver::stop_translation_timestep() { /* delay typeset until we're at the next moment, so we can silence custodes at the end of the piece. @@ -54,11 +54,11 @@ Custos_engraver::do_pre_move_processing() } void -Custos_engraver::do_post_move_processing () +Custos_engraver::start_translation_timestep () { for (int i = custos_arr_.size (); i--;) { - typeset_element (custos_arr_[i]); + typeset_grob (custos_arr_[i]); } custos_arr_.clear (); pitches_.clear (); @@ -78,7 +78,7 @@ Custos_engraver::deprecated_process_music () } void -Custos_engraver::acknowledge_element (Score_element_info info) +Custos_engraver::acknowledge_grob (Grob_info info) { Item *item = dynamic_cast (info.elem_l_); if (item) @@ -104,7 +104,7 @@ Custos_engraver::acknowledge_element (Score_element_info info) } void -Custos_engraver::process_acknowledged () +Custos_engraver::create_grobs () { deprecated_process_music (); @@ -114,7 +114,7 @@ Custos_engraver::process_acknowledged () { Item *c = create_custos (); - c->set_elt_property ("staff-position", + c->set_grob_property ("staff-position", gh_int2scm (pitches_[i].steps ())); } @@ -129,7 +129,7 @@ Custos_engraver::create_custos() SCM basicProperties = get_property ("Custos"); Item* custos = new Item (basicProperties); - announce_element (custos, 0); + announce_grob (custos, 0); custos_arr_.push (custos); return custos; @@ -141,7 +141,7 @@ Custos_engraver::do_removal_processing () for (int i = custos_arr_.size (); i--;) { custos_arr_[i]->suicide (); - typeset_element (custos_arr_[i]); + typeset_grob (custos_arr_[i]); } custos_arr_.clear (); } diff --git a/lily/custos.cc b/lily/custos.cc index 91d726e2f7..e718085906 100644 --- a/lily/custos.cc +++ b/lily/custos.cc @@ -70,7 +70,7 @@ * * (3) The thickness of the ledger line is fixed (limitation). */ -Molecule create_ledger_line (Interval x_extent, Score_element *me) +Molecule 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 +105,7 @@ Molecule create_ledger_line (Interval x_extent, Score_element *me) return line; } -void add_streepjes(Score_element* me, +void add_streepjes(Grob* me, int pos, int interspaces, Molecule* custos_p_) @@ -140,11 +140,11 @@ SCM Custos::brew_molecule (SCM smob) { Item *me = (Item *)unsmob_element (smob); - SCM scm_style = me->get_elt_property ("style"); + SCM scm_style = me->get_grob_property ("style"); - if (gh_string_p (scm_style)) + if (gh_symbol_p (scm_style)) { - String style = ly_scm2string (scm_style); + String style = ly_scm2string (scm_symbol_to_string (scm_style)); String idx = "custodes-"; int interspaces = Staff_symbol_referencer::line_count (me)-1; @@ -173,7 +173,7 @@ Custos::brew_molecule (SCM smob) } bool -Custos::has_interface (Score_element*m) +Custos::has_interface (Grob*m) { return m && m->has_interface (ly_symbol2scm ("custos-interface")); } diff --git a/lily/dimension-cache.cc b/lily/dimension-cache.cc index da14511f52..879f9f028b 100644 --- a/lily/dimension-cache.cc +++ b/lily/dimension-cache.cc @@ -9,7 +9,7 @@ #include "warn.hh" #include "dimension-cache.hh" #include "parray.hh" -#include "score-element.hh" +#include "grob.hh" Dimension_cache::Dimension_cache (Dimension_cache const &d) diff --git a/lily/directional-element-interface.cc b/lily/directional-element-interface.cc index 0b08777be9..7075e2e44f 100644 --- a/lily/directional-element-interface.cc +++ b/lily/directional-element-interface.cc @@ -21,16 +21,16 @@ ADD_SCM_INIT_FUNC(Directional, init_functions); bool -Directional_element_interface::has_interface (Score_element*me) +Directional_element_interface::has_interface (Grob*me) { - return isdir_b (me->get_elt_property (direction_sym)); + return isdir_b (me->get_grob_property (direction_sym)); } Direction -Directional_element_interface::get (Score_element*me) +Directional_element_interface::get (Grob*me) { // return dir_; - SCM d= me->get_elt_property (direction_sym); + SCM d= me->get_grob_property (direction_sym); if (!isdir_b(d)) return CENTER; @@ -38,10 +38,10 @@ Directional_element_interface::get (Score_element*me) } void -Directional_element_interface::set (Score_element*me, Direction d) +Directional_element_interface::set (Grob*me, Direction d) { SCM sd = gh_int2scm (d); - if (me->get_elt_property (direction_sym) != sd) - me->set_elt_property (direction_sym, sd); + if (me->get_grob_property (direction_sym) != sd) + me->set_grob_property (direction_sym, sd); } diff --git a/lily/dot-column-engraver.cc b/lily/dot-column-engraver.cc index ff462d7332..fa74004768 100644 --- a/lily/dot-column-engraver.cc +++ b/lily/dot-column-engraver.cc @@ -15,15 +15,15 @@ class Dot_column_engraver : public Engraver { - Score_element *dotcol_p_ ; + Grob *dotcol_p_ ; Link_array head_l_arr_; public: VIRTUAL_COPY_CONS(Translator); Dot_column_engraver(); protected: - virtual void acknowledge_element (Score_element_info); - virtual void do_pre_move_processing (); + virtual void acknowledge_grob (Grob_info); + virtual void stop_translation_timestep (); }; @@ -33,20 +33,20 @@ Dot_column_engraver::Dot_column_engraver () } void -Dot_column_engraver::do_pre_move_processing () +Dot_column_engraver::stop_translation_timestep () { if (dotcol_p_) { - typeset_element (dotcol_p_); + typeset_grob (dotcol_p_); dotcol_p_ =0; } head_l_arr_.clear (); } void -Dot_column_engraver::acknowledge_element (Score_element_info info) +Dot_column_engraver::acknowledge_grob (Grob_info info) { - Score_element *d = unsmob_element (info.elem_l_->get_elt_property ("dot")); + Grob *d = unsmob_element (info.elem_l_->get_grob_property ("dot")); if (d) { if (!dotcol_p_) @@ -56,7 +56,7 @@ Dot_column_engraver::acknowledge_element (Score_element_info info) Dot_column::set_interface (dotcol_p_); Side_position::set_axis (dotcol_p_, X_AXIS); Side_position::set_direction (dotcol_p_, RIGHT); - announce_element (dotcol_p_, 0); + announce_grob (dotcol_p_, 0); } Dot_column::add_head (dotcol_p_, info.elem_l_); diff --git a/lily/dot-column.cc b/lily/dot-column.cc index a9838ae13b..8c4e900eb3 100644 --- a/lily/dot-column.cc +++ b/lily/dot-column.cc @@ -20,7 +20,7 @@ void -Dot_column::set_interface (Score_element* me) +Dot_column::set_interface (Grob* me) { Directional_element_interface::set (me, RIGHT); @@ -50,11 +50,11 @@ MAKE_SCHEME_CALLBACK(Dot_column,force_shift_callback,2); SCM Dot_column::force_shift_callback (SCM element_smob, SCM axis) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == Y_AXIS); me = me->parent_l (X_AXIS); - SCM dots = me->get_elt_property ("dots"); + SCM dots = me->get_grob_property ("dots"); do_shifts (dots); return gh_double2scm (0.0); } @@ -62,7 +62,7 @@ Dot_column::force_shift_callback (SCM element_smob, SCM axis) SCM Dot_column::do_shifts (SCM l) { - Link_array dots; + Link_array dots; while (gh_pair_p (l)) { dots.push (unsmob_element (gh_car (l))); @@ -104,7 +104,7 @@ Dot_column::do_shifts (SCM l) for (int i=0; i < dots.size (); pos += 2, i++) { - Score_element * d = dots[i]; + Grob * d = dots[i]; Staff_symbol_referencer::set_position (d,pos); } @@ -112,16 +112,16 @@ Dot_column::do_shifts (SCM l) } bool -Dot_column::has_interface (Score_element*m) +Dot_column::has_interface (Grob*m) { return m && m->has_interface (ly_symbol2scm ("dot-column-interface")); } void -Dot_column::add_head (Score_element * me, Score_element *rh) +Dot_column::add_head (Grob * me, Grob *rh) { - Score_element * d = unsmob_element (rh->get_elt_property ("dot")); + Grob * d = unsmob_element (rh->get_grob_property ("dot")); if (d) { Side_position::add_support (me,rh); diff --git a/lily/dots.cc b/lily/dots.cc index 31facd5fbd..1a695c1a12 100644 --- a/lily/dots.cc +++ b/lily/dots.cc @@ -20,11 +20,11 @@ MAKE_SCHEME_CALLBACK(Dots,quantised_position_callback,2); SCM Dots::quantised_position_callback (SCM element_smob, SCM axis) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == Y_AXIS); - SCM d= me->get_elt_property ("dot-count"); + SCM d= me->get_grob_property ("dot-count"); if (gh_number_p (d) && gh_scm2int (d)) { if (!Directional_element_interface::get (me)) @@ -42,10 +42,10 @@ MAKE_SCHEME_CALLBACK(Dots,brew_molecule,1); SCM Dots::brew_molecule (SCM d) { - Score_element *sc = unsmob_element (d); + Grob *sc = unsmob_element (d); Molecule mol; - SCM c = sc->get_elt_property ("dot-count"); + SCM c = sc->get_grob_property ("dot-count"); if (gh_number_p (c)) { diff --git a/lily/dynamic-engraver.cc b/lily/dynamic-engraver.cc index e9141a840e..881eb90e57 100644 --- a/lily/dynamic-engraver.cc +++ b/lily/dynamic-engraver.cc @@ -45,7 +45,7 @@ class Dynamic_engraver : public Engraver Spanner* finished_line_spanner_; Link_array pending_column_arr_; - Link_array pending_element_arr_; + Link_array pending_element_arr_; void typeset_all (); @@ -55,12 +55,12 @@ public: protected: virtual void do_removal_processing (); - virtual void acknowledge_element (Score_element_info); - virtual bool do_try_music (Music *req_l); + virtual void acknowledge_grob (Grob_info); + virtual bool try_music (Music *req_l); void deprecated_process_music (); - virtual void do_pre_move_processing (); - virtual void process_acknowledged (); - virtual void do_post_move_processing (); + virtual void stop_translation_timestep (); + virtual void create_grobs (); + virtual void start_translation_timestep (); }; ADD_THIS_TRANSLATOR (Dynamic_engraver); @@ -81,7 +81,7 @@ Dynamic_engraver::Dynamic_engraver () } void -Dynamic_engraver::do_post_move_processing () +Dynamic_engraver::start_translation_timestep () { script_req_l_ = 0; accepted_spanreqs_drul_[START] = 0; @@ -89,7 +89,7 @@ Dynamic_engraver::do_post_move_processing () } bool -Dynamic_engraver::do_try_music (Music * m) +Dynamic_engraver::try_music (Music * m) { if (dynamic_cast (m) && m->get_mus_property ("text-type") == ly_symbol2scm ("dynamic")) @@ -138,7 +138,7 @@ Dynamic_engraver::deprecated_process_music () Music * rq = accepted_spanreqs_drul_[START]; if (script_req_l_) rq = script_req_l_ ; - announce_element (line_spanner_, rq); + announce_grob (line_spanner_, rq); } @@ -186,14 +186,14 @@ Dynamic_engraver::deprecated_process_music () if (script_req_l_) { script_p_ = new Item (get_property ("DynamicText")); - script_p_->set_elt_property ("text", + script_p_->set_grob_property ("text", script_req_l_->get_mus_property ("text")); if (Direction d = script_req_l_->get_direction ()) Directional_element_interface::set (line_spanner_, d); Axis_group_interface::add_element (line_spanner_, script_p_); - announce_element (script_p_, script_req_l_); + announce_grob (script_p_, script_req_l_); } if (accepted_spanreqs_drul_[STOP]) @@ -206,7 +206,7 @@ Dynamic_engraver::deprecated_process_music () else { assert (!finished_cresc_p_); - Score_element* cc = unsmob_element (get_property ("currentMusicalColumn")); + Grob* cc = unsmob_element (get_property ("currentMusicalColumn")); cresc_p_->set_bound (RIGHT, cc); @@ -242,7 +242,7 @@ Dynamic_engraver::deprecated_process_music () if (!gh_string_p (s) || ly_scm2string (s) == "hairpin") { cresc_p_ = new Spanner (get_property ("Crescendo")); - cresc_p_->set_elt_property ("grow-direction", + cresc_p_->set_grob_property ("grow-direction", gh_int2scm ((start_type == "crescendo") ? BIGGER : SMALLER)); @@ -255,13 +255,13 @@ Dynamic_engraver::deprecated_process_music () else { cresc_p_ = new Spanner (get_property ("TextSpanner")); - cresc_p_->set_elt_property ("type", s); + cresc_p_->set_grob_property ("type", s); daddy_trans_l_->set_property (start_type + "Spanner", SCM_UNDEFINED); s = get_property ((start_type + "Text").ch_C()); if (gh_string_p (s)) { - cresc_p_->set_elt_property ("edge-text", + cresc_p_->set_grob_property ("edge-text", gh_cons (s, ly_str02scm (""))); daddy_trans_l_->set_property (start_type + "Text", SCM_UNDEFINED); @@ -272,7 +272,7 @@ Dynamic_engraver::deprecated_process_music () : unsmob_element (get_property ("currentMusicalColumn"))); Axis_group_interface::add_element (line_spanner_, cresc_p_); - announce_element (cresc_p_, accepted_spanreqs_drul_[START]); + announce_grob (cresc_p_, accepted_spanreqs_drul_[START]); } } script_req_l_ = 0; @@ -281,13 +281,13 @@ Dynamic_engraver::deprecated_process_music () } void -Dynamic_engraver::do_pre_move_processing () +Dynamic_engraver::stop_translation_timestep () { typeset_all (); } void -Dynamic_engraver::process_acknowledged () +Dynamic_engraver::create_grobs () { deprecated_process_music (); } @@ -319,26 +319,26 @@ Dynamic_engraver::typeset_all () ? script_p_ : unsmob_element (get_property ("currentMusicalColumn"))); - typeset_element (finished_cresc_p_); + typeset_grob (finished_cresc_p_); finished_cresc_p_ =0; } if (script_p_) { - typeset_element (script_p_); + typeset_grob (script_p_); script_p_ = 0; } if (finished_line_spanner_) { Side_position::add_staff_support (finished_line_spanner_); extend_spanner_over_elements (finished_line_spanner_); - typeset_element (finished_line_spanner_); + typeset_grob (finished_line_spanner_); finished_line_spanner_ = 0; } } void -Dynamic_engraver::acknowledge_element (Score_element_info i) +Dynamic_engraver::acknowledge_grob (Grob_info i) { if (Note_column::has_interface (i.elem_l_)) { diff --git a/lily/dynamic-performer.cc b/lily/dynamic-performer.cc index 262185b93a..552a769826 100644 --- a/lily/dynamic-performer.cc +++ b/lily/dynamic-performer.cc @@ -28,10 +28,10 @@ public: ~Dynamic_performer (); protected: - virtual bool do_try_music (Music* req_l); + virtual bool try_music (Music* req_l); void deprecated_process_music (); - virtual void do_pre_move_processing (); - virtual void process_acknowledged (); + virtual void stop_translation_timestep (); + virtual void create_grobs (); private: Music* script_req_l_; @@ -120,13 +120,13 @@ Dynamic_performer::deprecated_process_music () } void -Dynamic_performer::process_acknowledged () +Dynamic_performer::create_grobs () { deprecated_process_music (); } void -Dynamic_performer::do_pre_move_processing () +Dynamic_performer::stop_translation_timestep () { if (audio_p_) { @@ -136,7 +136,7 @@ Dynamic_performer::do_pre_move_processing () } bool -Dynamic_performer::do_try_music (Music* r) +Dynamic_performer::try_music (Music* r) { if (!script_req_l_) { diff --git a/lily/engraver-group-engraver.cc b/lily/engraver-group-engraver.cc index c6734e481f..33067abcaf 100644 --- a/lily/engraver-group-engraver.cc +++ b/lily/engraver-group-engraver.cc @@ -11,21 +11,21 @@ #include "engraver.hh" #include "debug.hh" #include "paper-score.hh" -#include "score-element.hh" +#include "grob.hh" ADD_THIS_TRANSLATOR(Engraver_group_engraver); void -Engraver_group_engraver::announce_element (Score_element_info info) +Engraver_group_engraver::announce_grob (Grob_info info) { announce_info_arr_.push (info); - Engraver::announce_element (info); + Engraver::announce_grob (info); } void -Engraver_group_engraver::process_acknowledged () +Engraver_group_engraver::create_grobs () { for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr ( p)) @@ -33,22 +33,22 @@ Engraver_group_engraver::process_acknowledged () Translator * t = unsmob_translator (gh_car (p)); Engraver * eng = dynamic_cast (t); if (eng) - eng->process_acknowledged (); + eng->create_grobs (); } } void -Engraver_group_engraver::acknowledge_elements () +Engraver_group_engraver::acknowledge_grobs () { for (int j =0; j < announce_info_arr_.size(); j++) { - Score_element_info info = announce_info_arr_[j]; + Grob_info info = announce_info_arr_[j]; for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr (p)) { Translator * t = unsmob_translator (gh_car (p)); Engraver * eng = dynamic_cast (t); if (eng && eng!= info.origin_trans_l_) - eng->acknowledge_element (info); + eng->acknowledge_grob (info); } } } @@ -62,27 +62,41 @@ Engraver_group_engraver::do_announces() dynamic_cast (t)->do_announces (); } - process_acknowledged (); + create_grobs (); - // debug - int i = 0; - while (announce_info_arr_.size () && i++ < 5) + while (announce_info_arr_.size ()) { - acknowledge_elements (); + acknowledge_grobs (); announce_info_arr_.clear (); - process_acknowledged (); + create_grobs (); } +} + +#include - if (announce_info_arr_.size ()) +/* + order is : top to bottom (as opposed to do_announces) + */ +void +Engraver_group_engraver::process_music () +{ + for (SCM p = simple_trans_list_; gh_pair_p (p); p =gh_cdr ( p)) { - printf ("do_announces: elt: %s\n", - announce_info_arr_[0].elem_l_->name ().ch_C ()); - announce_info_arr_.clear (); + Translator * t = unsmob_translator (gh_car (p)); + Engraver * eng = dynamic_cast (t); + + if (eng) + eng->process_music (); + } + for (SCM p = trans_group_list_; gh_pair_p (p); p =gh_cdr ( p)) + { + Translator * t = unsmob_translator (gh_car (p)); + Engraver*eng = dynamic_cast (t); + if (eng) + eng->process_music (); } } - - diff --git a/lily/engraver.cc b/lily/engraver.cc index 60a72fa594..0d3f2a67f8 100644 --- a/lily/engraver.cc +++ b/lily/engraver.cc @@ -6,51 +6,41 @@ (c) 1997--2000 Han-Wen Nienhuys */ -#include "music-list.hh" -#include "musical-request.hh" +#include "music.hh" #include "engraver.hh" #include "engraver-group-engraver.hh" -#include "debug.hh" -#include "paper-def.hh" -#include "score-element.hh" -#include "group-interface.hh" +#include "grob.hh" void -Engraver::announce_element (Score_element_info inf) +Engraver::announce_grob (Grob_info inf) { - daddy_grav_l()->announce_element (inf); + daddy_grav_l()->announce_grob (inf); } void -Engraver::announce_element (Score_element* e, Music *m) +Engraver::announce_grob (Grob* e, Music *m) { if (m && m->origin ()->location_str ().length_i ()) { - e->set_elt_property ("origin", m->get_mus_property ("origin")); + e->set_grob_property ("origin", m->get_mus_property ("origin")); } - Score_element_info i (e, m); + Grob_info i (e, m); if (!i.origin_trans_l_) i.origin_trans_l_ = this; - daddy_grav_l()->announce_element (i); + daddy_grav_l()->announce_grob (i); } void -Engraver::typeset_element (Score_element*p) +Engraver::typeset_grob (Grob*p) { - daddy_grav_l()->typeset_element (p); + daddy_grav_l()->typeset_grob (p); } -Paper_def* -Engraver::paper_l () const -{ - return dynamic_cast(output_def_l_); -} - Engraver_group_engraver* Engraver::daddy_grav_l () const { @@ -58,3 +48,9 @@ Engraver::daddy_grav_l () const ? dynamic_cast (daddy_trans_l_) : 0; } + +void +Engraver::process_music () +{ + +} diff --git a/lily/extender-engraver.cc b/lily/extender-engraver.cc index bf1fa72fe0..8128598f6b 100644 --- a/lily/extender-engraver.cc +++ b/lily/extender-engraver.cc @@ -28,8 +28,8 @@ then. */ class Extender_engraver : public Engraver { - Score_element *last_lyric_l_; - Score_element *current_lyric_l_; + Grob *last_lyric_l_; + Grob *current_lyric_l_; Extender_req* req_l_; Spanner* extender_p_; public: @@ -37,13 +37,13 @@ public: VIRTUAL_COPY_CONS (Translator); protected: - virtual void acknowledge_element (Score_element_info); + virtual void acknowledge_grob (Grob_info); virtual void do_removal_processing(); void deprecated_process_music(); - virtual bool do_try_music (Music*); - virtual void do_pre_move_processing(); - virtual void do_post_move_processing (); - virtual void process_acknowledged (); + virtual bool try_music (Music*); + virtual void stop_translation_timestep(); + virtual void start_translation_timestep (); + virtual void create_grobs (); private: }; @@ -60,7 +60,7 @@ Extender_engraver::Extender_engraver () } void -Extender_engraver::acknowledge_element (Score_element_info i) +Extender_engraver::acknowledge_grob (Grob_info i) { // -> text_item if (i.elem_l_->has_interface (ly_symbol2scm("text-item-interface"))) @@ -78,7 +78,7 @@ Extender_engraver::acknowledge_element (Score_element_info i) bool -Extender_engraver::do_try_music (Music* r) +Extender_engraver::try_music (Music* r) { if (Extender_req* p = dynamic_cast (r)) { @@ -102,7 +102,7 @@ Extender_engraver::do_removal_processing () } void -Extender_engraver::process_acknowledged () +Extender_engraver::create_grobs () { deprecated_process_music (); } @@ -122,17 +122,17 @@ Extender_engraver::deprecated_process_music () Lyric_extender (extender_p_).set_textitem (LEFT, last_lyric_l_); - announce_element (extender_p_, req_l_); + announce_grob (extender_p_, req_l_); } } void -Extender_engraver::do_pre_move_processing () +Extender_engraver::stop_translation_timestep () { if (extender_p_) { - typeset_element (extender_p_); + typeset_grob (extender_p_); extender_p_ = 0; } @@ -144,7 +144,7 @@ Extender_engraver::do_pre_move_processing () } void -Extender_engraver::do_post_move_processing () +Extender_engraver::start_translation_timestep () { req_l_ = 0; } diff --git a/lily/font-interface.cc b/lily/font-interface.cc index 452a956ee6..1e7b6d34f2 100644 --- a/lily/font-interface.cc +++ b/lily/font-interface.cc @@ -10,13 +10,13 @@ #include "all-font-metrics.hh" #include "font-metric.hh" #include "font-interface.hh" -#include "score-element.hh" +#include "grob.hh" #include "paper-def.hh" #include "warn.hh" SCM -Font_interface::font_alist_chain (Score_element *me) +Font_interface::font_alist_chain (Grob *me) { SCM defaults = gh_cdr (scm_assoc (ly_symbol2scm ("font-defaults"), me->paper_l ()->style_sheet_ )); @@ -33,19 +33,19 @@ Font_interface::font_alist_chain (Score_element *me) todo: split up this func, reuse in text_item? */ Font_metric * -Font_interface::get_default_font (Score_element*me) +Font_interface::get_default_font (Grob*me) { - Font_metric * fm = unsmob_metrics (me->get_elt_property ("font")); + Font_metric * fm = unsmob_metrics (me->get_grob_property ("font")); if (fm) return fm; fm = get_font (me, font_alist_chain (me)); - me->set_elt_property ("font", fm->self_scm ()); + me->set_grob_property ("font", fm->self_scm ()); return fm; } Font_metric * -Font_interface::get_font (Score_element *me, SCM chain) +Font_interface::get_font (Grob *me, SCM chain) { SCM ss = me->paper_l ()->style_sheet_; @@ -64,7 +64,7 @@ Font_interface::get_font (Score_element *me, SCM chain) } SCM -Font_interface::add_style (Score_element* me, SCM style, SCM chain) +Font_interface::add_style (Grob* me, SCM style, SCM chain) { assert (gh_symbol_p (style)); diff --git a/lily/gdb.cc b/lily/gdb.cc index 9404eb1c69..3c1700b863 100644 --- a/lily/gdb.cc +++ b/lily/gdb.cc @@ -3,12 +3,12 @@ // thanks to GDBs wonderful casting abilities, we need these: Item* -to_item (Score_element* g) +to_item (Grob* g) { return dynamic_cast(g); } Spanner* -to_spanner (Score_element*g) +to_spanner (Grob*g) { return dynamic_cast(g); } diff --git a/lily/gourlay-breaking.cc b/lily/gourlay-breaking.cc index b442cca427..c05731f149 100644 --- a/lily/gourlay-breaking.cc +++ b/lily/gourlay-breaking.cc @@ -54,7 +54,7 @@ Array Gourlay_breaking::do_solve () const { Array optimal_paths; - Link_array all = + Link_array all = pscore_l_->line_l_->column_l_arr (); Array breaks = find_break_indices (); @@ -80,7 +80,7 @@ Gourlay_breaking::do_solve () const for (int start_idx = break_idx; start_idx--;) { - Link_array line = all.slice (breaks[start_idx], breaks[break_idx]+1); + Link_array line = all.slice (breaks[start_idx], breaks[break_idx]+1); line[0] = dynamic_cast (line[0]) ->find_prebroken_piece (RIGHT); line.top () = dynamic_cast (line.top ())->find_prebroken_piece (LEFT); @@ -177,10 +177,10 @@ Gourlay_breaking::combine_demerits (Column_x_positions const &prev, Column_x_positions const &this_one) const { Real break_penalties = 0.0; - Score_element * pc = this_one.cols_.top (); + Grob * pc = this_one.cols_.top (); if (pc->original_l_) { - SCM pen = pc->get_elt_property ("penalty"); + SCM pen = pc->get_grob_property ("penalty"); if (gh_number_p (pen)) { break_penalties += gh_scm2double (pen); diff --git a/lily/grace-align-item.cc b/lily/grace-align-item.cc index 8adf61ba58..f671784ac9 100644 --- a/lily/grace-align-item.cc +++ b/lily/grace-align-item.cc @@ -17,22 +17,22 @@ MAKE_SCHEME_CALLBACK(Grace_align_item,before_line_breaking,1); SCM Grace_align_item::before_line_breaking (SCM smob) { - Score_element*me = unsmob_element (smob); + Grob*me = unsmob_element (smob); - SCM space = me->get_elt_property ("horizontal-space"); - me->set_elt_property ("threshold", + SCM space = me->get_grob_property ("horizontal-space"); + me->set_grob_property ("threshold", gh_cons (space, gh_double2scm (infinity_f))); - dynamic_cast(me)->column_l ()->set_elt_property ("contains-grace", SCM_BOOL_T); + dynamic_cast(me)->column_l ()->set_grob_property ("contains-grace", SCM_BOOL_T); return SCM_UNSPECIFIED; } void -Grace_align_item::set_interface (Score_element*me) +Grace_align_item::set_interface (Grob*me) { me->set_interface (ly_symbol2scm ("grace-align-interface")); - me->set_elt_property ("stacking-dir", gh_int2scm (RIGHT)); + me->set_grob_property ("stacking-dir", gh_int2scm (RIGHT)); Align_interface::set_interface(me); Align_interface::set_axis (me,X_AXIS); } @@ -40,7 +40,7 @@ Grace_align_item::set_interface (Score_element*me) bool -Grace_align_item::has_interface (Score_element*m) +Grace_align_item::has_interface (Grob*m) { return m&& m->has_interface (ly_symbol2scm ("grace-align-interface")); } diff --git a/lily/grace-engraver-group.cc b/lily/grace-engraver-group.cc index 3a91da262d..1d62fabcde 100644 --- a/lily/grace-engraver-group.cc +++ b/lily/grace-engraver-group.cc @@ -9,9 +9,8 @@ #include "grace-engraver-group.hh" #include "lily-guile.hh" -#include "score-element.hh" +#include "grob.hh" #include "musical-request.hh" -#include "warn.hh" void Grace_engraver_group::start () @@ -27,12 +26,12 @@ Grace_engraver_group::finish () removal_processing (); // ugr. We'd want to have this done by our parents. for (int i=0; i < announce_to_top_.size (); i++) { - Engraver::announce_element (announce_to_top_[i]); + Engraver::announce_grob (announce_to_top_[i]); } for (int i=0; i < typeset_us_.size (); i++) { - Engraver::typeset_element (typeset_us_[i]); + Engraver::typeset_grob (typeset_us_[i]); } typeset_us_.clear (); calling_self_b_ = false; @@ -45,22 +44,18 @@ Grace_engraver_group::do_removal_processing () } void -Grace_engraver_group::announce_element (Score_element_info inf) +Grace_engraver_group::announce_grob (Grob_info inf) { announce_info_arr_.push (inf); // do not propagate to top announce_to_top_.push (inf); - inf.elem_l_->set_elt_property ("grace", SCM_BOOL_T); + inf.elem_l_->set_grob_property ("grace", SCM_BOOL_T); } void -Grace_engraver_group::typeset_element (Score_element*e) +Grace_engraver_group::typeset_grob (Grob*e) { - if (!e) - programming_error ("Grace_engraver_group: empty elt\n"); - else - typeset_us_.push (e); } @@ -74,13 +69,7 @@ void Grace_engraver_group::process () { calling_self_b_ = true; - - //process_music (); -- used to do implicit creation processing () - // possibly post_move_processing ()? - do_creation_processing (); - post_move_processing (); - - + //process_music (); announces(); pre_move_processing(); check_removal(); @@ -103,7 +92,7 @@ ADD_THIS_TRANSLATOR(Grace_engraver_group); don't let the commands trickle up. */ bool -Grace_engraver_group::do_try_music (Music *m) +Grace_engraver_group::try_music (Music *m) { bool hebbes_b = try_music_on_nongroup_children (m); @@ -128,3 +117,10 @@ Grace_engraver_group::pass_to_top_b (Music *m) const return false; } +void +Grace_engraver_group::do_creation_processing () +{ + calling_self_b_ = true; + Engraver_group_engraver::do_creation_processing (); + calling_self_b_ = false; +} diff --git a/lily/grace-performer-group.cc b/lily/grace-performer-group.cc index fde743bef0..9791c35e05 100644 --- a/lily/grace-performer-group.cc +++ b/lily/grace-performer-group.cc @@ -51,7 +51,7 @@ Grace_performer_group::announce_element (Audio_element_info info) // do not propagate to top announce_to_top_.push (info); - //inf.elem_l_->set_elt_property ("grace", SCM_BOOL_T); + //inf.elem_l_->set_grob_property ("grace", SCM_BOOL_T); info.elem_l_->grace_b_ = true; } @@ -93,7 +93,7 @@ Grace_performer_group::each (Method_pointer method) don't let the commands trickle up. */ bool -Grace_performer_group::do_try_music (Music *m) +Grace_performer_group::try_music (Music *m) { return try_music_on_nongroup_children (m); } diff --git a/lily/grace-position-engraver.cc b/lily/grace-position-engraver.cc index 6de4b273ec..45778f0350 100644 --- a/lily/grace-position-engraver.cc +++ b/lily/grace-position-engraver.cc @@ -22,10 +22,10 @@ class Grace_position_engraver:public Engraver Paper_column *last_musical_col_l_; protected: VIRTUAL_COPY_CONS(Translator); - virtual void acknowledge_element (Score_element_info); - virtual void process_acknowledged (); - virtual void do_post_move_processing (); - virtual void do_pre_move_processing (); + virtual void acknowledge_grob (Grob_info); + virtual void create_grobs (); + virtual void start_translation_timestep (); + virtual void stop_translation_timestep (); Item*align_l_; Link_array support_; public: @@ -40,7 +40,7 @@ Grace_position_engraver::Grace_position_engraver () } void -Grace_position_engraver::acknowledge_element (Score_element_info i) +Grace_position_engraver::acknowledge_grob (Grob_info i) { Item *item = dynamic_cast (i.elem_l_); if (item && Grace_align_item::has_interface (i.elem_l_)) @@ -49,12 +49,12 @@ Grace_position_engraver::acknowledge_element (Score_element_info i) } else if (item && Note_head::has_interface (i.elem_l_)) { - if (!to_boolean (item->get_elt_property ("grace"))) + if (!to_boolean (item->get_grob_property ("grace"))) support_.push (item); } else if (item && Local_key_item::has_interface (i.elem_l_)) { - if (!to_boolean (item->get_elt_property ("grace"))) + if (!to_boolean (item->get_grob_property ("grace"))) support_.push (item); else if (align_l_) item->add_dependency (align_l_); @@ -62,7 +62,7 @@ Grace_position_engraver::acknowledge_element (Score_element_info i) } void -Grace_position_engraver::process_acknowledged () +Grace_position_engraver::create_grobs () { if (align_l_) { @@ -73,7 +73,7 @@ Grace_position_engraver::process_acknowledged () } void -Grace_position_engraver::do_pre_move_processing () +Grace_position_engraver::stop_translation_timestep () { if (align_l_ && !Side_position::supported_b (align_l_)) { @@ -87,7 +87,7 @@ Grace_position_engraver::do_pre_move_processing () */ - Score_element * elt = align_l_->parent_l (X_AXIS); + Grob * elt = align_l_->parent_l (X_AXIS); if (elt) return; @@ -101,7 +101,7 @@ Grace_position_engraver::do_pre_move_processing () } void -Grace_position_engraver::do_post_move_processing () +Grace_position_engraver::start_translation_timestep () { support_.clear (); align_l_ =0; diff --git a/lily/grace-position-performer.cc b/lily/grace-position-performer.cc index 0259587934..6b3b59016b 100644 --- a/lily/grace-position-performer.cc +++ b/lily/grace-position-performer.cc @@ -21,9 +21,9 @@ protected: Link_array notes_; VIRTUAL_COPY_CONS (Translator); - virtual void acknowledge_element (Audio_element_info); - virtual void process_acknowledged (); - virtual void do_post_move_processing (); + virtual void acknowledge_grob (Audio_element_info); + virtual void create_grobs (); + virtual void start_translation_timestep (); Global_translator* global_translator_l (); }; @@ -34,7 +34,7 @@ Grace_position_performer::Grace_position_performer () } void -Grace_position_performer::acknowledge_element (Audio_element_info i) +Grace_position_performer::acknowledge_grob (Audio_element_info i) { if (Audio_note * n = dynamic_cast (i.elem_l_)) { @@ -46,7 +46,7 @@ Grace_position_performer::acknowledge_element (Audio_element_info i) } void -Grace_position_performer::process_acknowledged () +Grace_position_performer::create_grobs () { if (graces_.size ()) { @@ -116,7 +116,7 @@ Grace_position_performer::global_translator_l () void -Grace_position_performer::do_post_move_processing () +Grace_position_performer::start_translation_timestep () { graces_.clear (); notes_.clear (); diff --git a/lily/score-element-callback.cc b/lily/grob-callback.cc similarity index 83% rename from lily/score-element-callback.cc rename to lily/grob-callback.cc index 00cd9f7a38..d9625b34f1 100644 --- a/lily/score-element-callback.cc +++ b/lily/grob-callback.cc @@ -1,6 +1,6 @@ #if 0 /* - score-element-callback.cc -- implement Callback smob. + grob-callback.cc -- implement Callback smob. source file of the GNU LilyPond music typesetter @@ -8,7 +8,7 @@ */ -#include "score-element-callback.hh" +#include "grob-callback.hh" static SCM callback_tag; @@ -41,7 +41,7 @@ void start_callback_smobs() SCM -smobify_callback (Score_element_callback cb ) +smobify_callback (Grob_callback cb ) { SCM z; diff --git a/lily/score-element-info.cc b/lily/grob-info.cc similarity index 66% rename from lily/score-element-info.cc rename to lily/grob-info.cc index c437a655d5..ac0076dc8f 100644 --- a/lily/score-element-info.cc +++ b/lily/grob-info.cc @@ -1,17 +1,17 @@ /* - score-element-info.cc -- implement Score_element_info + grob-info.cc -- implement Grob_info source file of the GNU LilyPond music typesetter (c) 1997--2000 Han-Wen Nienhuys */ -#include "score-element-info.hh" +#include "grob-info.hh" #include "request.hh" #include "translator.hh" #include "translator-group.hh" -Score_element_info::Score_element_info (Score_element*s_l, Music *r_l) +Grob_info::Grob_info (Grob*s_l, Music *r_l) { elem_l_ = s_l; req_l_ = r_l; @@ -19,7 +19,7 @@ Score_element_info::Score_element_info (Score_element*s_l, Music *r_l) } -Score_element_info::Score_element_info() +Grob_info::Grob_info() { elem_l_ = 0; req_l_ = 0; @@ -28,7 +28,7 @@ Score_element_info::Score_element_info() Link_array -Score_element_info::origin_trans_l_arr (Translator* end) const +Grob_info::origin_trans_l_arr (Translator* end) const { Translator * t = origin_trans_l_; Link_array r; diff --git a/lily/score-element.cc b/lily/grob.cc similarity index 71% rename from lily/score-element.cc rename to lily/grob.cc index 5928d8b874..c36942d55f 100644 --- a/lily/score-element.cc +++ b/lily/grob.cc @@ -1,5 +1,5 @@ /* - score-elem.cc -- implement Score_element + score-elem.cc -- implement Grob source file of the GNU LilyPond music typesetter @@ -17,7 +17,7 @@ #include "paper-score.hh" #include "paper-def.hh" #include "molecule.hh" -#include "score-element.hh" +#include "grob.hh" #include "debug.hh" #include "spanner.hh" #include "line-of-score.hh" @@ -42,7 +42,7 @@ remove dynamic_cast and put this code into respective #define INFINITY_MSG "Infinity or NaN encountered" -Score_element::Score_element(SCM basicprops) +Grob::Grob(SCM basicprops) { /* fixme: default should be no callback. @@ -60,7 +60,7 @@ Score_element::Score_element(SCM basicprops) char const*enames[] = {"X-extent-callback", "Y-extent-callback"}; for (int a = X_AXIS; a <= Y_AXIS; a++){ - SCM l = get_elt_property (onames[a]); + SCM l = get_grob_property (onames[a]); if (scm_ilength (l) >=0) { @@ -72,7 +72,7 @@ Score_element::Score_element(SCM basicprops) programming_error ("[XY]-offset-callbacks must be a list"); } - SCM cb = get_elt_property (enames[a]); + SCM cb = get_grob_property (enames[a]); /* Should change default to be empty? @@ -83,17 +83,17 @@ Score_element::Score_element(SCM basicprops) dim_cache_[a].dimension_ = cb; } - SCM meta = get_elt_property ("meta"); + SCM meta = get_grob_property ("meta"); SCM ifs = scm_assoc (ly_symbol2scm ("interfaces"), meta); - set_elt_property ("interfaces",gh_cdr (ifs)); + set_grob_property ("interfaces",gh_cdr (ifs)); } -Score_element::Score_element (Score_element const&s) +Grob::Grob (Grob const&s) : dim_cache_ (s.dim_cache_) { - original_l_ =(Score_element*) &s; + original_l_ =(Grob*) &s; immutable_property_alist_ = s.immutable_property_alist_; mutable_property_alist_ = SCM_EOL; @@ -103,7 +103,7 @@ Score_element::Score_element (Score_element const&s) smobify_self (); } -Score_element::~Score_element() +Grob::~Grob() { /* do nothing scm-ish and no unprotecting here. @@ -112,14 +112,14 @@ Score_element::~Score_element() SCM -Score_element::get_elt_property (const char *nm) const +Grob::get_grob_property (const char *nm) const { SCM sym = ly_symbol2scm (nm); - return get_elt_property (sym); + return get_grob_property (sym); } SCM -Score_element::get_elt_property (SCM sym) const +Grob::get_grob_property (SCM sym) const { SCM s = scm_sloppy_assq(sym, mutable_property_alist_); if (s != SCM_BOOL_F) @@ -135,19 +135,19 @@ Score_element::get_elt_property (SCM sym) const `basic' property. */ SCM -Score_element::remove_elt_property (const char* key) +Grob::remove_grob_property (const char* key) { - SCM val = get_elt_property (key); + SCM val = get_grob_property (key); if (val != SCM_EOL) - set_elt_property (key, SCM_EOL); + set_grob_property (key, SCM_EOL); return val; } void -Score_element::set_elt_property (const char* k, SCM v) +Grob::set_grob_property (const char* k, SCM v) { SCM s = ly_symbol2scm (k); - set_elt_property (s, v); + set_grob_property (s, v); } /* @@ -156,30 +156,30 @@ Score_element::set_elt_property (const char* k, SCM v) Line_of_score::rank : int ) */ void -Score_element::set_immutable_elt_property (const char*k, SCM v) +Grob::set_immutable_grob_property (const char*k, SCM v) { SCM s = ly_symbol2scm (k); - set_immutable_elt_property (s, v); + set_immutable_grob_property (s, v); } void -Score_element::set_immutable_elt_property (SCM s, SCM v) +Grob::set_immutable_grob_property (SCM s, SCM v) { immutable_property_alist_ = gh_cons (gh_cons (s,v), mutable_property_alist_); mutable_property_alist_ = scm_assq_remove_x (mutable_property_alist_, s); } void -Score_element::set_elt_property (SCM s, SCM v) +Grob::set_grob_property (SCM s, SCM v) { mutable_property_alist_ = scm_assq_set_x (mutable_property_alist_, s, v); } -MAKE_SCHEME_CALLBACK(Score_element,molecule_extent,2); +MAKE_SCHEME_CALLBACK(Grob,molecule_extent,2); SCM -Score_element::molecule_extent (SCM element_smob, SCM scm_axis) +Grob::molecule_extent (SCM element_smob, SCM scm_axis) { - Score_element *s = unsmob_element (element_smob); + Grob *s = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (scm_axis); Molecule *m = s->get_molecule (); @@ -189,15 +189,15 @@ Score_element::molecule_extent (SCM element_smob, SCM scm_axis) return ly_interval2scm ( e); } -MAKE_SCHEME_CALLBACK(Score_element,preset_extent,2); +MAKE_SCHEME_CALLBACK(Grob,preset_extent,2); SCM -Score_element::preset_extent (SCM element_smob, SCM scm_axis) +Grob::preset_extent (SCM element_smob, SCM scm_axis) { - Score_element *s = unsmob_element (element_smob); + Grob *s = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (scm_axis); - SCM ext = s->get_elt_property ((a == X_AXIS) + SCM ext = s->get_grob_property ((a == X_AXIS) ? "extent-X" : "extent-Y"); @@ -214,13 +214,13 @@ Score_element::preset_extent (SCM element_smob, SCM scm_axis) Paper_def* -Score_element::paper_l () const +Grob::paper_l () const { return pscore_l_ ? pscore_l_->paper_l_ : 0; } void -Score_element::calculate_dependencies (int final, int busy, SCM funcname) +Grob::calculate_dependencies (int final, int busy, SCM funcname) { assert (status_i_ >=0); @@ -235,7 +235,7 @@ Score_element::calculate_dependencies (int final, int busy, SCM funcname) status_i_= busy; - for (SCM d= get_elt_property ("dependencies"); gh_pair_p (d); d = gh_cdr (d)) + for (SCM d= get_grob_property ("dependencies"); gh_pair_p (d); d = gh_cdr (d)) { unsmob_element (gh_car (d)) ->calculate_dependencies (final, busy, funcname); @@ -243,7 +243,7 @@ Score_element::calculate_dependencies (int final, int busy, SCM funcname) // ughugh. String s = ly_symbol2string (funcname); - SCM proc = get_elt_property (s.ch_C()); + SCM proc = get_grob_property (s.ch_C()); if (gh_procedure_p (proc)) gh_call1 (proc, this->self_scm ()); @@ -252,43 +252,50 @@ Score_element::calculate_dependencies (int final, int busy, SCM funcname) } Molecule * -Score_element::get_molecule () const +Grob::get_molecule () const { - SCM mol = get_elt_property ("molecule"); + SCM mol = get_grob_property ("molecule"); if (unsmob_molecule (mol)) return unsmob_molecule (mol); - SCM proc = get_elt_property ("molecule-callback"); + SCM proc = get_grob_property ("molecule-callback"); mol = SCM_EOL; if (gh_procedure_p (proc)) mol = gh_apply (proc, gh_list (this->self_scm (), SCM_UNDEFINED)); - /* - TODO: add option for not copying origin info. - */ - SCM origin =get_elt_property ("origin"); - if (!unsmob_input (origin)) - origin =ly_symbol2scm ("no-origin"); + Molecule *m = unsmob_molecule (mol); - if (gh_pair_p (mol)) + if (unsmob_molecule (mol)) { + /* + TODO: add option for not copying origin info. + */ + SCM origin =get_grob_property ("origin"); + if (!unsmob_input (origin)) + origin =ly_symbol2scm ("no-origin"); + + // ugr. - mol = gh_cons (gh_list (origin, gh_car (mol), SCM_UNDEFINED), gh_cdr (mol)); + + mol = Molecule (m->extent_box (), + gh_list (origin, m->get_expr (), SCM_UNDEFINED) + ). smobbed_copy (); + + m = unsmob_molecule (mol); } - Molecule *m = unsmob_molecule (mol); /* transparent retains dimensions of element. */ - if (m && to_boolean (get_elt_property ("transparent"))) + if (m && to_boolean (get_grob_property ("transparent"))) mol = Molecule (m->extent_box (), SCM_EOL).smobbed_copy (); - Score_element *me = (Score_element*)this; - me->set_elt_property ("molecule", mol); + Grob *me = (Grob*)this; + me->set_grob_property ("molecule", mol); m = unsmob_molecule (mol); return m; @@ -301,7 +308,7 @@ Score_element::get_molecule () const */ void -Score_element::do_break_processing() +Grob::do_break_processing() { } @@ -311,13 +318,13 @@ Score_element::do_break_processing() Line_of_score * -Score_element::line_l() const +Grob::line_l() const { return 0; } void -Score_element::add_dependency (Score_element*e) +Grob::add_dependency (Grob*e) { if (e) { @@ -337,10 +344,10 @@ Score_element::add_dependency (Score_element*e) representing the break direction. Do not modify SRC. */ SCM -Score_element::handle_broken_smobs (SCM src, SCM criterion) +Grob::handle_broken_smobs (SCM src, SCM criterion) { again: - Score_element *sc = unsmob_element (src); + Grob *sc = unsmob_element (src); if (sc) { if (gh_number_p (criterion)) @@ -410,7 +417,7 @@ Score_element::handle_broken_smobs (SCM src, SCM criterion) } void -Score_element::handle_broken_dependencies() +Grob::handle_broken_dependencies() { Spanner * s= dynamic_cast (this); if (original_l_ && s) @@ -420,7 +427,7 @@ Score_element::handle_broken_dependencies() { for (int i = 0; i< s->broken_into_l_arr_ .size (); i++) { - Score_element * sc = s->broken_into_l_arr_[i]; + Grob * sc = s->broken_into_l_arr_[i]; Line_of_score * l = sc->line_l (); sc->mutable_property_alist_ = handle_broken_smobs (mutable_property_alist_, @@ -462,7 +469,7 @@ Score_element::handle_broken_dependencies() like {broken_into_{drul,array}, original} */ void -Score_element::suicide () +Grob::suicide () { mutable_property_alist_ = SCM_EOL; immutable_property_alist_ = SCM_EOL; @@ -478,18 +485,18 @@ Score_element::suicide () } void -Score_element::handle_prebroken_dependencies() +Grob::handle_prebroken_dependencies() { } -Score_element* -Score_element::find_broken_piece (Line_of_score*) const +Grob* +Grob::find_broken_piece (Line_of_score*) const { return 0; } void -Score_element::translate_axis (Real y, Axis a) +Grob::translate_axis (Real y, Axis a) { if (isinf (y) || isnan (y)) programming_error (_(INFINITY_MSG)); @@ -500,7 +507,7 @@ Score_element::translate_axis (Real y, Axis a) } Real -Score_element::relative_coordinate (Score_element const*refp, Axis a) const +Grob::relative_coordinate (Grob const*refp, Axis a) const { if (refp == this) return 0.0; @@ -517,9 +524,9 @@ Score_element::relative_coordinate (Score_element const*refp, Axis a) const } Real -Score_element::get_offset (Axis a) const +Grob::get_offset (Axis a) const { - Score_element *me = (Score_element*) this; + Grob *me = (Grob*) this; while (dim_cache_[a].offsets_left_) { int l = --me->dim_cache_[a].offsets_left_; @@ -538,15 +545,15 @@ Score_element::get_offset (Axis a) const } -MAKE_SCHEME_CALLBACK(Score_element,point_dimension_callback,2); +MAKE_SCHEME_CALLBACK(Grob,point_dimension_callback,2); SCM -Score_element::point_dimension_callback (SCM , SCM ) +Grob::point_dimension_callback (SCM , SCM ) { return ly_interval2scm ( Interval (0,0)); } bool -Score_element::empty_b (Axis a)const +Grob::empty_b (Axis a)const { return ! (gh_pair_p (dim_cache_[a].dimension_ ) || gh_procedure_p (dim_cache_[a].dimension_ )); @@ -555,12 +562,12 @@ Score_element::empty_b (Axis a)const /* TODO: add - Score_element *refpoint + Grob *refpoint to arguments? */ Interval -Score_element::extent (Score_element * refp, Axis a) const +Grob::extent (Grob * refp, Axis a) const { Real x = relative_coordinate (refp, a); @@ -584,7 +591,7 @@ Score_element::extent (Score_element * refp, Axis a) const ext = ly_scm2interval (d->dimension_); - SCM extra = get_elt_property (a == X_AXIS + SCM extra = get_grob_property (a == X_AXIS ? "extra-extent-X" : "extra-extent-Y"); @@ -597,7 +604,7 @@ Score_element::extent (Score_element * refp, Axis a) const ext[SMALLER] += gh_scm2double (gh_car (extra)); } - extra = get_elt_property (a == X_AXIS + extra = get_grob_property (a == X_AXIS ? "minimum-extent-X" : "minimum-extent-Y"); if (gh_pair_p (extra)) @@ -612,35 +619,35 @@ Score_element::extent (Score_element * refp, Axis a) const } -Score_element* -Score_element::parent_l (Axis a) const +Grob* +Grob::parent_l (Axis a) const { return dim_cache_[a].parent_l_; } -Score_element * -Score_element::common_refpoint (Score_element const* s, Axis a) const +Grob * +Grob::common_refpoint (Grob const* s, Axis a) const { /* I don't like the quadratic aspect of this code, but I see no other way. The largest chain of parents might be 10 high or so, so it shouldn't be a real issue. */ - for (Score_element const *c = this; c; c = c->dim_cache_[a].parent_l_) - for (Score_element const * d = s; d; d = d->dim_cache_[a].parent_l_) + for (Grob const *c = this; c; c = c->dim_cache_[a].parent_l_) + for (Grob const * d = s; d; d = d->dim_cache_[a].parent_l_) if (d == c) - return (Score_element*)d; + return (Grob*)d; return 0; } -Score_element * -Score_element::common_refpoint (SCM elist, Axis a) const +Grob * +Grob::common_refpoint (SCM elist, Axis a) const { - Score_element * common = (Score_element*) this; + Grob * common = (Grob*) this; for (; gh_pair_p (elist); elist = gh_cdr (elist)) { - Score_element * s = unsmob_element (gh_car (elist)); + Grob * s = unsmob_element (gh_car (elist)); if (s) common = common->common_refpoint (s, a); } @@ -649,16 +656,16 @@ Score_element::common_refpoint (SCM elist, Axis a) const } String -Score_element::name () const +Grob::name () const { - SCM meta = get_elt_property ("meta"); + SCM meta = get_grob_property ("meta"); SCM nm = scm_assoc (ly_symbol2scm ("name"), meta); nm = (gh_pair_p (nm)) ? gh_cdr (nm) : SCM_EOL; return gh_string_p (nm) ?ly_scm2string (nm) : classname (this); } void -Score_element::add_offset_callback (SCM cb, Axis a) +Grob::add_offset_callback (SCM cb, Axis a) { if (!has_offset_callback_b (cb, a)) { @@ -668,52 +675,52 @@ Score_element::add_offset_callback (SCM cb, Axis a) } bool -Score_element::has_extent_callback_b (SCM cb, Axis a)const +Grob::has_extent_callback_b (SCM cb, Axis a)const { return scm_equal_p (cb, dim_cache_[a].dimension_); } bool -Score_element::has_extent_callback_b (Axis a) const +Grob::has_extent_callback_b (Axis a) const { return gh_procedure_p (dim_cache_[a].dimension_); } bool -Score_element::has_offset_callback_b (SCM cb, Axis a)const +Grob::has_offset_callback_b (SCM cb, Axis a)const { return scm_memq (cb, dim_cache_[a].offset_callbacks_) != SCM_BOOL_F; } void -Score_element::set_extent_callback (SCM dc, Axis a) +Grob::set_extent_callback (SCM dc, Axis a) { dim_cache_[a].dimension_ =dc; } void -Score_element::set_parent (Score_element *g, Axis a) +Grob::set_parent (Grob *g, Axis a) { dim_cache_[a].parent_l_ = g; } -MAKE_SCHEME_CALLBACK(Score_element,fixup_refpoint,1); +MAKE_SCHEME_CALLBACK(Grob,fixup_refpoint,1); SCM -Score_element::fixup_refpoint (SCM smob) +Grob::fixup_refpoint (SCM smob) { - Score_element *me = unsmob_element (smob); + Grob *me = unsmob_element (smob); for (int a = X_AXIS; a < NO_AXES; a ++) { Axis ax = (Axis)a; - Score_element * parent = me->parent_l (ax); + Grob * parent = me->parent_l (ax); if (!parent) continue; if (parent->line_l () != me->line_l () && me->line_l ()) { - Score_element * newparent = parent->find_broken_piece (me->line_l ()); + Grob * newparent = parent->find_broken_piece (me->line_l ()); me->set_parent (newparent, ax); } @@ -742,14 +749,14 @@ Score_element::fixup_refpoint (SCM smob) ****************************************************/ -IMPLEMENT_UNSMOB(Score_element, element); -IMPLEMENT_SMOBS(Score_element); -IMPLEMENT_DEFAULT_EQUAL_P(Score_element); +IMPLEMENT_UNSMOB(Grob, element); +IMPLEMENT_SMOBS(Grob); +IMPLEMENT_DEFAULT_EQUAL_P(Grob); SCM -Score_element::mark_smob (SCM ses) +Grob::mark_smob (SCM ses) { - Score_element * s = (Score_element*) SCM_CELL_WORD_1(ses); + Grob * s = (Grob*) SCM_CELL_WORD_1(ses); scm_gc_mark (s->immutable_property_alist_); scm_gc_mark (s->mutable_property_alist_); @@ -770,11 +777,11 @@ Score_element::mark_smob (SCM ses) } int -Score_element::print_smob (SCM s, SCM port, scm_print_state *) +Grob::print_smob (SCM s, SCM port, scm_print_state *) { - Score_element *sc = (Score_element *) gh_cdr (s); + Grob *sc = (Grob *) gh_cdr (s); - scm_puts ("#name ().ch_C(), port); /* @@ -785,16 +792,16 @@ Score_element::print_smob (SCM s, SCM port, scm_print_state *) } SCM -Score_element::do_derived_mark () +Grob::do_derived_mark () { return SCM_EOL; } SCM -ly_set_elt_property (SCM elt, SCM sym, SCM val) +ly_set_grob_property (SCM elt, SCM sym, SCM val) { - Score_element * sc = unsmob_element (elt); + Grob * sc = unsmob_element (elt); if (!gh_symbol_p (sym)) { @@ -805,7 +812,7 @@ ly_set_elt_property (SCM elt, SCM sym, SCM val) if (sc) { - sc->set_elt_property (sym, val); + sc->set_grob_property (sym, val); } else { @@ -818,13 +825,13 @@ ly_set_elt_property (SCM elt, SCM sym, SCM val) SCM -ly_get_elt_property (SCM elt, SCM sym) +ly_get_grob_property (SCM elt, SCM sym) { - Score_element * sc = unsmob_element (elt); + Grob * sc = unsmob_element (elt); if (sc) { - return sc->get_elt_property (sym); + return sc->get_grob_property (sym); } else { @@ -836,7 +843,7 @@ ly_get_elt_property (SCM elt, SCM sym) void -Score_element::discretionary_processing() +Grob::discretionary_processing() { } @@ -856,31 +863,31 @@ init_functions () { interfaces_sym = scm_permanent_object (ly_symbol2scm ("interfaces")); - scm_make_gsubr ("ly-get-elt-property", 2, 0, 0, (Scheme_function_unknown)ly_get_elt_property); - scm_make_gsubr ("ly-set-elt-property", 3, 0, 0, (Scheme_function_unknown)ly_set_elt_property); + scm_make_gsubr ("ly-get-elt-property", 2, 0, 0, (Scheme_function_unknown)ly_get_grob_property); + scm_make_gsubr ("ly-set-elt-property", 3, 0, 0, (Scheme_function_unknown)ly_set_grob_property); scm_make_gsubr ("ly-get-spanner-bound", 2 , 0, 0, (Scheme_function_unknown) spanner_get_bound); } bool -Score_element::has_interface (SCM k) +Grob::has_interface (SCM k) { - SCM ifs = get_elt_property (interfaces_sym); + SCM ifs = get_grob_property (interfaces_sym); return scm_memq (k, ifs) != SCM_BOOL_F; } void -Score_element::set_interface (SCM k) +Grob::set_interface (SCM k) { if (has_interface (k)) return ; else { - set_elt_property (interfaces_sym, - gh_cons (k, get_elt_property (interfaces_sym))); + set_grob_property (interfaces_sym, + gh_cons (k, get_grob_property (interfaces_sym))); } } ADD_SCM_INIT_FUNC(scoreelt, init_functions); -IMPLEMENT_TYPE_P(Score_element, "ly-element?"); +IMPLEMENT_TYPE_P(Grob, "ly-grob?"); diff --git a/lily/group-interface.cc b/lily/group-interface.cc index f7ec3d8fd6..313820a0b5 100644 --- a/lily/group-interface.cc +++ b/lily/group-interface.cc @@ -7,26 +7,26 @@ */ #include "group-interface.hh" -#include "score-element.hh" +#include "grob.hh" void -Group_interface::add_thing (Score_element*me, String name, SCM s) +Group_interface::add_thing (Grob*me, String name, SCM s) { - me->set_elt_property (name.ch_C (), - gh_cons (s, me->get_elt_property (name.ch_C()))); + me->set_grob_property (name.ch_C (), + gh_cons (s, me->get_grob_property (name.ch_C()))); } int -Group_interface::count (Score_element *me, String name) +Group_interface::count (Grob *me, String name) { - return scm_ilength (me->get_elt_property (name.ch_C())); + return scm_ilength (me->get_grob_property (name.ch_C())); } void -Pointer_group_interface::add_element (Score_element*me, String name, Score_element*p) +Pointer_group_interface::add_element (Grob*me, String name, Grob*p) { Group_interface::add_thing (me, name, p->self_scm()); } diff --git a/lily/hara-kiri-group-spanner.cc b/lily/hara-kiri-group-spanner.cc index 2db1040937..3c75ae45a3 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) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (scm_axis); assert (a == Y_AXIS); @@ -28,13 +28,13 @@ Hara_kiri_group_spanner::y_extent (SCM element_smob, SCM scm_axis) void -Hara_kiri_group_spanner::consider_suicide(Score_element*me) +Hara_kiri_group_spanner::consider_suicide(Grob*me) { - SCM worth = me->get_elt_property ("items-worth-living"); + SCM worth = me->get_grob_property ("items-worth-living"); if (gh_pair_p (worth)) return ; - Link_array childs = Axis_group_interface::get_children (me); + Link_array childs = Axis_group_interface::get_children (me); for (int i = 0; i < childs.size (); i++) childs[i]->suicide (); @@ -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) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (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) { - Score_element *daughter = unsmob_element (element_smob); + Grob *daughter = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == Y_AXIS); force_hara_kiri_callback (daughter->parent_l (a)->self_scm (), axis); @@ -75,7 +75,7 @@ Hara_kiri_group_spanner::force_hara_kiri_in_parent_callback (SCM element_smob, S } void -Hara_kiri_group_spanner::add_element (Score_element * me, Score_element *e) +Hara_kiri_group_spanner::add_element (Grob * me, Grob *e) { // e->add_offset_callback (force_hara_kiri_in_parent_callback, Y_AXIS); Axis_group_interface::add_element (me, e); @@ -83,20 +83,20 @@ Hara_kiri_group_spanner::add_element (Score_element * me, Score_element *e) void -Hara_kiri_group_spanner::set_interface (Score_element*me) +Hara_kiri_group_spanner::set_interface (Grob*me) { me->set_interface (ly_symbol2scm ("hara-kiri-group-interface")); } bool -Hara_kiri_group_spanner::has_interface (Score_element*me) +Hara_kiri_group_spanner::has_interface (Grob*me) { return me->has_interface (ly_symbol2scm ("hara-kiri-group-interface")); } void -Hara_kiri_group_spanner::add_interesting_item (Score_element* me,Score_element* n) +Hara_kiri_group_spanner::add_interesting_item (Grob* me,Grob* n) { me->add_dependency (n); Pointer_group_interface::add_element (me, "items-worth-living",n); diff --git a/lily/hyphen-engraver.cc b/lily/hyphen-engraver.cc index 709339b8a1..ebb56587ba 100644 --- a/lily/hyphen-engraver.cc +++ b/lily/hyphen-engraver.cc @@ -22,8 +22,8 @@ then. */ class Hyphen_engraver : public Engraver { - Score_element *last_lyric_l_; - Score_element *current_lyric_l_; + Grob *last_lyric_l_; + Grob *current_lyric_l_; Hyphen_req* req_l_; Spanner* hyphen_p_; public: @@ -31,13 +31,13 @@ public: VIRTUAL_COPY_CONS (Translator); protected: - virtual void acknowledge_element (Score_element_info); + virtual void acknowledge_grob (Grob_info); virtual void do_removal_processing(); void deprecated_process_music(); - virtual bool do_try_music (Music*); - virtual void do_pre_move_processing(); - virtual void do_post_move_processing (); - virtual void process_acknowledged (); + virtual bool try_music (Music*); + virtual void stop_translation_timestep(); + virtual void start_translation_timestep (); + virtual void create_grobs (); private: }; @@ -53,7 +53,7 @@ Hyphen_engraver::Hyphen_engraver () } void -Hyphen_engraver::acknowledge_element (Score_element_info i) +Hyphen_engraver::acknowledge_grob (Grob_info i) { // -> text-item if (i.elem_l_->has_interface (ly_symbol2scm ("lyric-syllable-interface"))) @@ -70,7 +70,7 @@ Hyphen_engraver::acknowledge_element (Score_element_info i) bool -Hyphen_engraver::do_try_music (Music* r) +Hyphen_engraver::try_music (Music* r) { if (Hyphen_req* p = dynamic_cast (r)) { @@ -94,7 +94,7 @@ Hyphen_engraver::do_removal_processing () } void -Hyphen_engraver::process_acknowledged () +Hyphen_engraver::create_grobs () { deprecated_process_music (); } @@ -113,17 +113,17 @@ Hyphen_engraver::deprecated_process_music () hyphen_p_ = new Spanner (get_property ("LyricHyphen")); Hyphen_spanner (hyphen_p_).set_textitem (LEFT, last_lyric_l_); - announce_element (hyphen_p_, req_l_); + announce_grob (hyphen_p_, req_l_); } } void -Hyphen_engraver::do_pre_move_processing () +Hyphen_engraver::stop_translation_timestep () { if (hyphen_p_) { - typeset_element (hyphen_p_); + typeset_grob (hyphen_p_); hyphen_p_ = 0; } @@ -135,7 +135,7 @@ Hyphen_engraver::do_pre_move_processing () } void -Hyphen_engraver::do_post_move_processing () +Hyphen_engraver::start_translation_timestep () { req_l_ = 0; } diff --git a/lily/hyphen-spanner.cc b/lily/hyphen-spanner.cc index aa0673eb71..b4a8e1738a 100644 --- a/lily/hyphen-spanner.cc +++ b/lily/hyphen-spanner.cc @@ -26,7 +26,7 @@ Hyphen_spanner::brew_molecule (SCM smob) { Spanner * sp = dynamic_cast (unsmob_element (smob)); - Score_element * common = sp; + Grob * common = sp; Direction d = LEFT; do { @@ -42,11 +42,11 @@ Hyphen_spanner::brew_molecule (SCM smob) while (flip (&d) != LEFT); Real lt = sp->paper_l ()->get_var ("stafflinethickness"); - Real th = gh_scm2double (sp->get_elt_property ("thickness")) * lt ; - Real h = gh_scm2double (sp->get_elt_property ("height")); - Real l = gh_scm2double (sp->get_elt_property ("minimum-length")); + Real th = gh_scm2double (sp->get_grob_property ("thickness")) * lt ; + Real h = gh_scm2double (sp->get_grob_property ("height")); + Real l = gh_scm2double (sp->get_grob_property ("minimum-length")); // The hyphen can exist in the word space of the left lyric ... - SCM space = sp->get_bound (LEFT)->get_elt_property ("word-space"); + SCM space = sp->get_bound (LEFT)->get_grob_property ("word-space"); if (gh_number_p (space)) { bounds[LEFT] -= gh_scm2double (space); @@ -87,7 +87,7 @@ Hyphen_spanner::brew_molecule (SCM smob) } void -Hyphen_spanner::set_textitem (Direction d, Score_element* b) +Hyphen_spanner::set_textitem (Direction d, Grob* b) { elt_l_->set_bound (d, b); elt_l_->add_dependency (b); diff --git a/lily/include/align-interface.hh b/lily/include/align-interface.hh index 904f20202a..058d4c7a14 100644 --- a/lily/include/align-interface.hh +++ b/lily/include/align-interface.hh @@ -16,13 +16,13 @@ struct Align_interface { DECLARE_SCHEME_CALLBACK(alignment_callback, (SCM element, SCM axis)); - static void do_side_processing (Score_element*,Axis a); - static void set_axis (Score_element*,Axis); - static Axis axis (Score_element*) ; - static void add_element (Score_element*,Score_element*); - static int get_count (Score_element*,Score_element*); - static void set_interface (Score_element*); - static bool has_interface (Score_element*); + static void do_side_processing (Grob*,Axis a); + static void set_axis (Grob*,Axis); + static Axis axis (Grob*) ; + static void add_element (Grob*,Grob*); + static int get_count (Grob*,Grob*); + static void set_interface (Grob*); + static bool has_interface (Grob*); DECLARE_SCHEME_CALLBACK(center_on_element, (SCM element, SCM axis)); }; diff --git a/lily/include/arpeggio.hh b/lily/include/arpeggio.hh index d912c49615..628d100c29 100644 --- a/lily/include/arpeggio.hh +++ b/lily/include/arpeggio.hh @@ -17,7 +17,7 @@ class Arpeggio public: DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM)); DECLARE_SCHEME_CALLBACK(width_callback, (SCM,SCM)); - static bool has_interface (Score_element*); + static bool has_interface (Grob*); }; #endif /* ARPEGGIO_HH */ diff --git a/lily/include/axis-group-interface.hh b/lily/include/axis-group-interface.hh index 62b6581078..9c2097b345 100644 --- a/lily/include/axis-group-interface.hh +++ b/lily/include/axis-group-interface.hh @@ -18,14 +18,14 @@ struct Axis_group_interface { DECLARE_SCHEME_CALLBACK(group_extent_callback, (SCM smob, SCM axis)); - static Interval relative_group_extent (Axis, Score_element * common, SCM list); + static Interval relative_group_extent (Axis, Grob * common, SCM list); - static void add_element (Score_element* me, Score_element*); - static void set_axes (Score_element*,Axis,Axis); - static bool axis_b (Score_element*,Axis); - static Link_array get_children (Score_element*); - static bool has_interface (Score_element*); - static void set_interface (Score_element*); + static void add_element (Grob* me, Grob*); + static void set_axes (Grob*,Axis,Axis); + static bool axis_b (Grob*,Axis); + static Link_array get_children (Grob*); + static bool has_interface (Grob*); + static void set_interface (Grob*); }; diff --git a/lily/include/bar-req-collector-engraver.hh b/lily/include/bar-req-collector-engraver.hh index e80065e459..61affaa054 100644 --- a/lily/include/bar-req-collector-engraver.hh +++ b/lily/include/bar-req-collector-engraver.hh @@ -16,8 +16,8 @@ class Bar_req_collect_engraver : public Engraver Bar_req* bar_req_l_; public: VIRTUAL_COPY_CONS(Translator); - void do_post_move_processing (); - bool do_try_music (Music *); + void start_translation_timestep (); + bool try_music (Music *); }; diff --git a/lily/include/bar.hh b/lily/include/bar.hh index 663b233e89..ffc4e4ad45 100644 --- a/lily/include/bar.hh +++ b/lily/include/bar.hh @@ -16,10 +16,10 @@ class Bar { public: - static bool has_interface (Score_element*); - static void set_interface (Score_element*); - static Molecule compound_barline (Score_element*, String, Real height) ; - static Molecule simple_barline (Score_element*, Real wid, Real height) ; + static bool has_interface (Grob*); + static void set_interface (Grob*); + static Molecule compound_barline (Grob*, String, Real height) ; + static Molecule simple_barline (Grob*, Real wid, Real height) ; DECLARE_SCHEME_CALLBACK(get_staff_bar_size, (SCM )); DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); DECLARE_SCHEME_CALLBACK(before_line_breaking, (SCM )); diff --git a/lily/include/beam.hh b/lily/include/beam.hh index ba926a0972..4f01a16982 100644 --- a/lily/include/beam.hh +++ b/lily/include/beam.hh @@ -15,37 +15,37 @@ class Beam { public: - static int visible_stem_count (Score_element*); - static Item* first_visible_stem (Score_element*); - static Item* last_visible_stem (Score_element*); - static bool has_interface (Score_element*); - static void set_interface (Score_element*); + static int visible_stem_count (Grob*); + static Item* first_visible_stem (Grob*); + static Item* last_visible_stem (Grob*); + static bool has_interface (Grob*); + static void set_interface (Grob*); DECLARE_SCHEME_CALLBACK(rest_collision_callback, (SCM element, SCM axis)); Beam (SCM); - static void add_stem (Score_element*,Score_element*); - static void set_beaming (Score_element*,Beaming_info_list *); - static void set_stemlens (Score_element*); - static int get_multiplicity (Score_element*me); + static void add_stem (Grob*,Grob*); + static void set_beaming (Grob*,Beaming_info_list *); + static void set_stemlens (Grob*); + static int get_multiplicity (Grob*me); DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); DECLARE_SCHEME_CALLBACK(before_line_breaking, (SCM )); DECLARE_SCHEME_CALLBACK(after_line_breaking, (SCM )); - static Molecule stem_beams (Score_element*,Item *here, Item *next, Item *prev); + static Molecule stem_beams (Grob*,Item *here, Item *next, Item *prev); private: - static Direction get_default_dir (Score_element*); - static void set_stem_directions (Score_element*); - static void auto_knees (Score_element*); - static bool auto_knee (Score_element*,String gap_str, bool interstaff_b); - static void set_stem_shorten (Score_element*); - static void calc_default_position_and_height (Score_element*,Real* y, Real* dy); - static bool suspect_slope_b (Score_element*, Real y, Real dy); - static Real calc_slope_damping_f (Score_element*, Real dy); - static Real calc_stem_y_f (Score_element*, Item* s, Real y, Real dy); - static Real check_stem_length_f (Score_element*, Real y, Real dy); - static void set_stem_length (Score_element*, Real y, Real dy); - static Real quantise_dy_f (Score_element*, Real dy); - static Real quantise_y_f (Score_element*, Real y, Real dy, int quant_dir); - static int forced_stem_count (Score_element*); + static Direction get_default_dir (Grob*); + static void set_stem_directions (Grob*); + static void auto_knees (Grob*); + static bool auto_knee (Grob*,String gap_str, bool interstaff_b); + static void set_stem_shorten (Grob*); + static void calc_default_position_and_height (Grob*,Real* y, Real* dy); + static bool suspect_slope_b (Grob*, Real y, Real dy); + static Real calc_slope_damping_f (Grob*, Real dy); + static Real calc_stem_y_f (Grob*, Item* s, Real y, Real dy); + static Real check_stem_length_f (Grob*, Real y, Real dy); + static void set_stem_length (Grob*, Real y, Real dy); + static Real quantise_dy_f (Grob*, Real dy); + static Real quantise_y_f (Grob*, Real y, Real dy, int quant_dir); + static int forced_stem_count (Grob*); }; #endif // BEAM_HH diff --git a/lily/include/break-algorithm.hh b/lily/include/break-algorithm.hh index fa0b0d7770..57fd8cdb92 100644 --- a/lily/include/break-algorithm.hh +++ b/lily/include/break-algorithm.hh @@ -28,7 +28,7 @@ protected: Real linewidth_f_; /// search all pcols which are breakable. - Link_array find_breaks() const; + Link_array find_breaks() const; Array find_break_indices() const; @@ -37,10 +37,10 @@ protected: void solve_line (Column_x_positions*) const; /// does curline fit on the paper? - bool feasible (Link_array) const; + bool feasible (Link_array) const; - Simple_spacer* generate_spacing_problem (Link_array, Interval) const; + Simple_spacer* generate_spacing_problem (Link_array, Interval) const; virtual Array do_solve() const=0; diff --git a/lily/include/break-align-item.hh b/lily/include/break-align-item.hh index 75d65e7ace..5ebbc384ff 100644 --- a/lily/include/break-align-item.hh +++ b/lily/include/break-align-item.hh @@ -16,10 +16,10 @@ class Break_align_interface { public: DECLARE_SCHEME_CALLBACK(before_line_breaking, (SCM )); - static void do_alignment (Score_element*); - static void set_interface (Score_element*); - static bool has_interface (Score_element*); - static void add_element (Score_element*me, Score_element*add); + static void do_alignment (Grob*); + static void set_interface (Grob*); + static bool has_interface (Grob*); + static void add_element (Grob*me, Grob*add); DECLARE_SCHEME_CALLBACK(alignment_callback, (SCM element, SCM axis)); DECLARE_SCHEME_CALLBACK(self_align_callback, (SCM element, SCM axis)); }; diff --git a/lily/include/breathing-sign.hh b/lily/include/breathing-sign.hh index c131e57fe2..07f82506cd 100644 --- a/lily/include/breathing-sign.hh +++ b/lily/include/breathing-sign.hh @@ -21,8 +21,8 @@ class Breathing_sign public: DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); DECLARE_SCHEME_CALLBACK(offset_callback, (SCM element, SCM axis)); - static void set_interface (Score_element*); - static bool has_interface (Score_element*); + static void set_interface (Grob*); + static bool has_interface (Grob*); }; #endif // BREATHING_SIGN_HH diff --git a/lily/include/clef.hh b/lily/include/clef.hh index f5fabe24f1..81ac89000a 100644 --- a/lily/include/clef.hh +++ b/lily/include/clef.hh @@ -16,8 +16,8 @@ struct Clef { DECLARE_SCHEME_CALLBACK(before_line_breaking, (SCM )); DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); - static bool has_interface (Score_element*); - static void set_interface (Score_element*); + static bool has_interface (Grob*); + static void set_interface (Grob*); }; diff --git a/lily/include/collision.hh b/lily/include/collision.hh index 483ad4bff1..c5c005f06b 100644 --- a/lily/include/collision.hh +++ b/lily/include/collision.hh @@ -28,10 +28,10 @@ class Collision // interface { public: - static SCM automatic_shift (Score_element*); - static SCM forced_shift (Score_element*); + static SCM automatic_shift (Grob*); + static SCM forced_shift (Grob*); DECLARE_SCHEME_CALLBACK(force_shift_callback, (SCM element, SCM axis)); - static void do_shifts (Score_element*); - static void add_column (Score_element*me,Score_element*ncol_l); + static void do_shifts (Grob*); + static void add_column (Grob*me,Grob*ncol_l); }; #endif // COLLISION_HH diff --git a/lily/include/column-x-positions.hh b/lily/include/column-x-positions.hh index aec9602223..f8cb92d079 100644 --- a/lily/include/column-x-positions.hh +++ b/lily/include/column-x-positions.hh @@ -13,7 +13,7 @@ struct Column_x_positions { - Link_array cols_; + Link_array cols_; Array config_; Real force_f_; bool satisfies_constraints_b_; diff --git a/lily/include/crescendo.hh b/lily/include/crescendo.hh index b34ccc56df..37f36f6c28 100644 --- a/lily/include/crescendo.hh +++ b/lily/include/crescendo.hh @@ -18,7 +18,7 @@ struct Hairpin { public: DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM)); - static bool has_interface (Score_element*); + static bool has_interface (Grob*); }; #endif // CRESCENDO_HH diff --git a/lily/include/custos.hh b/lily/include/custos.hh index d962ef975f..707df6ec4f 100644 --- a/lily/include/custos.hh +++ b/lily/include/custos.hh @@ -14,7 +14,7 @@ struct Custos { DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); - static bool has_interface (Score_element*); + static bool has_interface (Grob*); }; #endif // CUSTOS_HH diff --git a/lily/include/dimension-cache-callback.hh b/lily/include/dimension-cache-callback.hh index b14b0b16aa..15142a6111 100644 --- a/lily/include/dimension-cache-callback.hh +++ b/lily/include/dimension-cache-callback.hh @@ -11,8 +11,8 @@ #define DIMENSION_CACHE_CALLBACK_HH -typedef Interval (*Dim_cache_callback)(Score_element *,Axis); -typedef Real (*Offset_callback)(Score_element *,Axis); +typedef Interval (*Dim_cache_callback)(Grob *,Axis); +typedef Real (*Offset_callback)(Grob *,Axis); #endif /* DIMENSION_CACHE_CALLBACK_HH */ diff --git a/lily/include/dimension-cache.hh b/lily/include/dimension-cache.hh index 5ae4845fd0..e97936d77e 100644 --- a/lily/include/dimension-cache.hh +++ b/lily/include/dimension-cache.hh @@ -44,7 +44,7 @@ struct Dimension_cache /** What to call to find extent. Nil means empty. */ - Score_element * parent_l_; + Grob * parent_l_; Dimension_cache(Dimension_cache const&); Dimension_cache (); diff --git a/lily/include/directional-element-interface.hh b/lily/include/directional-element-interface.hh index 92546cee4e..b77ef71754 100644 --- a/lily/include/directional-element-interface.hh +++ b/lily/include/directional-element-interface.hh @@ -10,15 +10,15 @@ #ifndef DIRECTIONAL_ELEMENT_HH #define DIRECTIONAL_ELEMENT_HH -#include "score-element.hh" +#include "grob.hh" struct Directional_element_interface { public: static SCM direction_sym ; - static void set (Score_element*,Direction d); - static Direction get (Score_element*) ; - static bool has_interface (Score_element*) ; + static void set (Grob*,Direction d); + static Direction get (Grob*) ; + static bool has_interface (Grob*) ; }; diff --git a/lily/include/dot-column.hh b/lily/include/dot-column.hh index dc50f326fc..452d0ba000 100644 --- a/lily/include/dot-column.hh +++ b/lily/include/dot-column.hh @@ -18,10 +18,10 @@ class Dot_column // interface { public: - static int compare (Score_element * const&,Score_element * const&); - static void add_head (Score_element * dotcol, Score_element* rh ); - static void set_interface (Score_element*); - static bool has_interface (Score_element*); + static int compare (Grob * const&,Grob * const&); + static void add_head (Grob * dotcol, Grob* rh ); + static void set_interface (Grob*); + static bool has_interface (Grob*); DECLARE_SCHEME_CALLBACK(force_shift_callback, (SCM ,SCM)); static SCM do_shifts (SCM dotlist); }; diff --git a/lily/include/engraver-group-engraver.hh b/lily/include/engraver-group-engraver.hh index f0dd31468a..10ccaada0e 100644 --- a/lily/include/engraver-group-engraver.hh +++ b/lily/include/engraver-group-engraver.hh @@ -13,7 +13,7 @@ #include "lily-proto.hh" #include "parray.hh" -#include "score-element-info.hh" +#include "grob-info.hh" #include "engraver.hh" #include "translator-group.hh" @@ -26,7 +26,7 @@ class Engraver_group_engraver : public Engraver, public virtual Translator_group { protected: - Array announce_info_arr_; + Array announce_info_arr_; @@ -34,11 +34,11 @@ public: VIRTUAL_COPY_CONS(Translator); virtual void do_announces(); - virtual void announce_element (Score_element_info); - + virtual void announce_grob (Grob_info); + virtual void process_music (); private: - void process_acknowledged (); - void acknowledge_elements (); + void create_grobs (); + void acknowledge_grobs (); }; #endif // ENGRAVERGROUP_HH diff --git a/lily/include/engraver.hh b/lily/include/engraver.hh index 3e768cdbf1..a87cbbc811 100644 --- a/lily/include/engraver.hh +++ b/lily/include/engraver.hh @@ -13,12 +13,12 @@ #include "lily-proto.hh" #include "array.hh" #include "request.hh" -#include "score-element-info.hh" +#include "grob-info.hh" #include "translator.hh" /** - a struct which processes requests, and creates the #Score_element#s. + a struct which processes requests, and creates the #Grob#s. It may use derived classes. */ class Engraver : public virtual Translator { @@ -26,30 +26,31 @@ class Engraver : public virtual Translator { friend class Engraver_group_engraver; protected: /// utility - Paper_def * paper_l() const; + // Paper_def * paper_l() const; /* Call this last thing. */ - virtual void typeset_element (Score_element*elem_p); + virtual void typeset_grob (Grob*elem_p); /* take note of item/spanner put item in spanner. Adjust local key; etc. Default: ignore the info */ - virtual void acknowledge_element (Score_element_info) {} + virtual void acknowledge_grob (Grob_info) {} - /** Do things with stuff found in acknowledge_element. Ugh. Should - be looped with acknowledge_element. + /** Do things with stuff found in acknowledge_grob. Ugh. Should + be looped with acknowledge_grob. */ - virtual void process_acknowledged () {} + virtual void create_grobs () {} /** Announce element. Default: pass on to daddy. Utility */ - virtual void announce_element (Score_element*, Music*); - virtual void announce_element (Score_element_info); + virtual void announce_grob (Grob*, Music*); + virtual void announce_grob (Grob_info); + virtual void process_music (); public: VIRTUAL_COPY_CONS(Translator); Engraver_group_engraver * daddy_grav_l() const; diff --git a/lily/include/font-interface.hh b/lily/include/font-interface.hh index 399511d103..52189a10f4 100644 --- a/lily/include/font-interface.hh +++ b/lily/include/font-interface.hh @@ -15,10 +15,10 @@ struct Font_interface { - static SCM font_alist_chain (Score_element*); - static Font_metric * get_font (Score_element*, SCM alist_chain); - static Font_metric * get_default_font (Score_element*); - static SCM add_style (Score_element*, SCM style, SCM alist_chain); + static SCM font_alist_chain (Grob*); + static Font_metric * get_font (Grob*, SCM alist_chain); + static Font_metric * get_default_font (Grob*); + static SCM add_style (Grob*, SCM style, SCM alist_chain); DECLARE_SCHEME_CALLBACK(properties_to_font_name, (SCM,SCM)); }; diff --git a/lily/include/grace-align-item.hh b/lily/include/grace-align-item.hh index e367a4dbc8..debe1d5aa2 100644 --- a/lily/include/grace-align-item.hh +++ b/lily/include/grace-align-item.hh @@ -17,8 +17,8 @@ class Grace_align_item { public: - static void set_interface (Score_element*); - static bool has_interface (Score_element*); + static void set_interface (Grob*); + static bool has_interface (Grob*); DECLARE_SCHEME_CALLBACK(before_line_breaking, (SCM )); }; #endif /* GRACE_ALIGN_ITEM_HH */ diff --git a/lily/include/grace-engraver-group.hh b/lily/include/grace-engraver-group.hh index 2ba5768a67..aefbdf8437 100644 --- a/lily/include/grace-engraver-group.hh +++ b/lily/include/grace-engraver-group.hh @@ -15,22 +15,23 @@ class Grace_engraver_group : public Engraver_group_engraver, public Global_translator { - Link_array typeset_us_; - Array announce_to_top_; + Link_array typeset_us_; + Array announce_to_top_; bool calling_self_b_; bool pass_to_top_b (Music *) const; public: VIRTUAL_COPY_CONS(Translator); Grace_engraver_group (); protected: - virtual void announce_element (Score_element_info); + virtual void do_creation_processing (); + 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 typeset_element (Score_element*); - virtual bool do_try_music (Music *m); + 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 5b05625b09..d6805d514e 100644 --- a/lily/include/grace-performer-group.hh +++ b/lily/include/grace-performer-group.hh @@ -29,7 +29,7 @@ protected: virtual void each (Method_pointer); virtual void do_removal_processing () ; virtual void play_element (Audio_element*); - virtual bool do_try_music (Music *m); + virtual bool try_music (Music *m); }; diff --git a/lily/include/score-element-info.hh b/lily/include/grob-info.hh similarity index 72% rename from lily/include/score-element-info.hh rename to lily/include/grob-info.hh index ac5ca85575..65db5a3a34 100644 --- a/lily/include/score-element-info.hh +++ b/lily/include/grob-info.hh @@ -1,5 +1,5 @@ /* - score-element-info.hh -- declare Score_element_info + grob-info.hh -- declare Grob_info source file of the GNU LilyPond music typesetter @@ -18,17 +18,17 @@ TODO: Store this in element info! */ -struct Score_element_info { +struct Grob_info { Translator * origin_trans_l_; friend Engraver; public: Link_array origin_trans_l_arr (Translator*) const; - Score_element * elem_l_; + Grob * elem_l_; Music *req_l_; - Score_element_info (Score_element*, Music*); - Score_element_info(); + Grob_info (Grob*, Music*); + Grob_info(); }; diff --git a/lily/include/score-element.hh b/lily/include/grob.hh similarity index 70% rename from lily/include/score-element.hh rename to lily/include/grob.hh index 84da2f94e8..96bf9be791 100644 --- a/lily/include/score-element.hh +++ b/lily/include/grob.hh @@ -1,5 +1,5 @@ /* - score-element.hh -- declare Score_element + grob.hh -- declare Grob (c) 1996-1999--2000 Han-Wen Nienhuys */ @@ -17,7 +17,7 @@ /** for administration of what was done already */ -enum Score_element_status { +enum Grob_status { ORPHAN=0, // not yet added to Paper_score VIRGIN, PRECALCING, @@ -26,23 +26,23 @@ enum Score_element_status { POSTCALCED, // after spacing calcs done }; -typedef void (Score_element::*Score_element_method_pointer) (void); +typedef void (Grob::*Grob_method_pointer) (void); /* Basic output object. */ -class Score_element { +class Grob { public: SCM immutable_property_alist_; // rename me to ``property_alist_'' SCM mutable_property_alist_; - Score_element *original_l_; + Grob *original_l_; /** Administration: Where are we?. This is mainly used by Super_element and - Score_element::calcalute_dependencies () + Grob::calcalute_dependencies () 0 means ORPHAN, */ @@ -56,21 +56,21 @@ public: */ Paper_score *pscore_l_; - Score_element (SCM basic_props); - Score_element (Score_element const&); + Grob (SCM basic_props); + Grob (Grob const&); /* properties */ - SCM get_elt_property (const char*) const; - SCM get_elt_property (SCM) const; - void set_elt_property (const char * , SCM val); - void set_immutable_elt_property (const char * , SCM val); - void set_immutable_elt_property (SCM key, SCM val); - void set_elt_property (SCM , SCM val); + SCM get_grob_property (const char*) const; + SCM get_grob_property (SCM) const; + void set_grob_property (const char * , SCM val); + void set_immutable_grob_property (const char * , SCM val); + void set_immutable_grob_property (SCM key, SCM val); + void set_grob_property (SCM , SCM val); void set_elt_pointer (const char*, SCM val); friend class Property_engraver; // UGHUGHUGH. - SCM remove_elt_property (const char* nm); + SCM remove_grob_property (const char* nm); /* related classes. @@ -80,15 +80,15 @@ public: /** add a dependency. It may be the 0 pointer, in which case, it is ignored. */ - void add_dependency (Score_element*); + void add_dependency (Grob*); virtual Line_of_score * line_l () const; bool linked_b () const; - VIRTUAL_COPY_CONS(Score_element); + VIRTUAL_COPY_CONS(Grob); /** - Recursively track all dependencies of this Score_element. The + Recursively track all dependencies of this Grob. The status_i_ field is used as a mark-field. It is marked with #busy# during execution of this function, and marked with #final# when finished. @@ -99,7 +99,7 @@ public: static SCM handle_broken_smobs (SCM, SCM criterion); virtual void do_break_processing (); - virtual Score_element *find_broken_piece (Line_of_score*) const; + virtual Grob *find_broken_piece (Line_of_score*) const; virtual void discretionary_processing (); virtual SCM do_derived_mark (); @@ -111,8 +111,8 @@ public: DECLARE_SCHEME_CALLBACK(molecule_extent, (SCM smob, SCM axis)); - static SCM ly_set_elt_property (SCM, SCM,SCM); - static SCM ly_get_elt_property (SCM, SCM); + static SCM ly_set_grob_property (SCM, SCM,SCM); + static SCM ly_get_grob_property (SCM, SCM); bool has_interface (SCM intf); void set_interface (SCM intf); @@ -121,7 +121,7 @@ public: virtual void handle_prebroken_dependencies (); - DECLARE_SMOBS(Score_element,foo); + DECLARE_SMOBS(Grob,foo); void init (); @@ -130,7 +130,7 @@ public: public: bool empty_b (Axis a) const; - Interval extent (Score_element * refpoint, Axis) const; + Interval extent (Grob * refpoint, Axis) const; /** translate in one direction @@ -144,12 +144,12 @@ public: OFFSET_ + PARENT_L_->relative_coordinate (D) */ - Real relative_coordinate (Score_element const* refp, Axis) const; + Real relative_coordinate (Grob const* refp, Axis) const; /** Find the group-element which has both #this# and #s# */ - Score_element*common_refpoint (Score_element const* s, Axis a) const; - Score_element*common_refpoint (SCM elt_list, Axis a) const; + Grob*common_refpoint (Grob const* s, Axis a) const; + Grob*common_refpoint (SCM elt_list, Axis a) const; // duh. slim down interface here. (todo) bool has_offset_callback_b (SCM callback, Axis)const; @@ -166,13 +166,13 @@ public: /** Set the parent refpoint of THIS to E */ - void set_parent (Score_element* e, Axis); + void set_parent (Grob* e, Axis); - Score_element *parent_l (Axis a) const; + Grob *parent_l (Axis a) const; DECLARE_SCHEME_CALLBACK(fixup_refpoint, (SCM)); }; -Score_element * unsmob_element (SCM); +Grob * unsmob_element (SCM); #endif // STAFFELEM_HH diff --git a/lily/include/group-interface.hh b/lily/include/group-interface.hh index fb19eec2fc..88f608a7ef 100644 --- a/lily/include/group-interface.hh +++ b/lily/include/group-interface.hh @@ -17,7 +17,7 @@ /** Look at Score element ELT as thing which has a list property called - NAME_. Normally the list would contain Score_elements, but + NAME_. Normally the list would contain Grobs, but sometimes it can be different things. todo: reename as list_interface? @@ -26,24 +26,24 @@ struct Group_interface { public: - static int count (Score_element* , String); - static void add_thing (Score_element*, String nm, SCM); + static int count (Grob* , String); + static void add_thing (Grob*, String nm, SCM); }; struct Pointer_group_interface : public Group_interface { public: - static void add_element (Score_element*, String nm, Score_element*e); + static void add_element (Grob*, String nm, Grob*e); }; /** Put all score elements of ELT's property called NAME into an array, and return it. */ template Link_array -Pointer_group_interface__extract_elements (Score_element const *elt, T *, const char* name) +Pointer_group_interface__extract_elements (Grob const *elt, T *, const char* name) { Link_array arr; - for (SCM s = elt->get_elt_property (name); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = elt->get_grob_property (name); gh_pair_p (s); s = gh_cdr (s)) { SCM e = gh_car (s); arr.push (dynamic_cast (unsmob_element (e))); diff --git a/lily/include/hara-kiri-group-spanner.hh b/lily/include/hara-kiri-group-spanner.hh index 7bee6ca508..2e3b2dc93f 100644 --- a/lily/include/hara-kiri-group-spanner.hh +++ b/lily/include/hara-kiri-group-spanner.hh @@ -20,11 +20,11 @@ public: DECLARE_SCHEME_CALLBACK(force_hara_kiri_callback, (SCM ,SCM)); DECLARE_SCHEME_CALLBACK(y_extent, (SCM smob, SCM axis)); DECLARE_SCHEME_CALLBACK(force_hara_kiri_in_parent_callback, (SCM ,SCM)); - static void add_element (Score_element *me, Score_element *e); - static void set_interface (Score_element*me); - static bool has_interface (Score_element*); - static void consider_suicide (Score_element*me); - static void add_interesting_item (Score_element * me , Score_element* n); + static void add_element (Grob *me, Grob *e); + static void set_interface (Grob*me); + static bool has_interface (Grob*); + static void consider_suicide (Grob*me); + static void add_interesting_item (Grob * me , Grob* n); }; diff --git a/lily/include/hara-kiri-line-group-engraver.hh b/lily/include/hara-kiri-line-group-engraver.hh index 43f71b1787..391514f7fc 100644 --- a/lily/include/hara-kiri-line-group-engraver.hh +++ b/lily/include/hara-kiri-line-group-engraver.hh @@ -30,7 +30,7 @@ public: protected: virtual void create_line_spanner (); - void typeset_element (Score_element*); + void typeset_grob (Grob*); }; diff --git a/lily/include/hyphen-spanner.hh b/lily/include/hyphen-spanner.hh index 8d8b90f483..2cdcdab2fc 100644 --- a/lily/include/hyphen-spanner.hh +++ b/lily/include/hyphen-spanner.hh @@ -14,7 +14,7 @@ struct Hyphen_spanner public: Spanner* elt_l_; Hyphen_spanner (Spanner*); - void set_textitem (Direction, Score_element*); + void set_textitem (Direction, Grob*); DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); }; diff --git a/lily/include/item.hh b/lily/include/item.hh index ce597312c7..48edba0188 100644 --- a/lily/include/item.hh +++ b/lily/include/item.hh @@ -10,7 +10,7 @@ #include "box.hh" -#include "score-element.hh" +#include "grob.hh" #include "drul-array.hh" #include "protected-scm.hh" @@ -21,22 +21,22 @@ before the spacing is calculated */ -class Item : public Score_element +class Item : public Grob { Drul_array broken_to_drul_; public: - VIRTUAL_COPY_CONS(Score_element); + VIRTUAL_COPY_CONS(Grob); Item (SCM); Item (Item const &); - static bool breakable_b (Score_element*me); + static bool breakable_b (Grob*me); bool broken_b () const; Direction break_status_dir () const; Item * find_prebroken_piece (Direction) const; - Score_element * find_broken_piece (Line_of_score*) const; + Grob * find_broken_piece (Line_of_score*) const; virtual Line_of_score * line_l() const; virtual Paper_column * column_l () const; diff --git a/lily/include/key-item.hh b/lily/include/key-item.hh index 0f2c4d14df..bc8f306f7c 100644 --- a/lily/include/key-item.hh +++ b/lily/include/key-item.hh @@ -13,9 +13,9 @@ struct Key_item { - static int calculate_position(Score_element*,SCM pair) ; - static void set_interface (Score_element*); - static bool has_interface (Score_element*); + static int calculate_position(Grob*,SCM pair) ; + static void set_interface (Grob*); + static bool has_interface (Grob*); DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); }; diff --git a/lily/include/key-performer.hh b/lily/include/key-performer.hh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lily/include/lily-guile.hh b/lily/include/lily-guile.hh index 8c4cf5d1cd..2f50f6d384 100644 --- a/lily/include/lily-guile.hh +++ b/lily/include/lily-guile.hh @@ -45,6 +45,7 @@ SCM ly_interval2scm (Interval); SCM ly_parse_scm (char const* s, int* n); SCM ly_quote_scm (SCM s); SCM ly_type (SCM); +bool type_check_assignment (SCM val, SCM sym, SCM type_symbol) ; /* display and print newline. diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index 36f23ac634..b4bcf7d24f 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -144,7 +144,7 @@ class Scaled_font_metric; class Scheme_hash_table; class Scope; class Score; -class Score_element; +class Grob; class Score_engraver; class Score_performer; class Script_req; diff --git a/lily/include/line-group-group-engraver.hh b/lily/include/line-group-group-engraver.hh index b5db361da4..1c4d0e3b0f 100644 --- a/lily/include/line-group-group-engraver.hh +++ b/lily/include/line-group-group-engraver.hh @@ -25,7 +25,7 @@ protected: virtual void create_line_spanner (); virtual void do_creation_processing(); virtual void do_removal_processing(); - virtual void typeset_element (Score_element*); + virtual void typeset_grob (Grob*); public: VIRTUAL_COPY_CONS(Translator); diff --git a/lily/include/line-of-score.hh b/lily/include/line-of-score.hh index 330df38719..b40d988917 100644 --- a/lily/include/line-of-score.hh +++ b/lily/include/line-of-score.hh @@ -26,15 +26,15 @@ public: void output_lines (); Link_array broken_col_range (Item const*, Item const*) const; - Link_array column_l_arr () const; + Link_array column_l_arr () const; void add_column (Paper_column*); - void typeset_element (Score_element*); + void typeset_grob (Grob*); void output_molecule (SCM, Offset); void output_scheme (SCM); void pre_processing (); protected: - VIRTUAL_COPY_CONS(Score_element); + VIRTUAL_COPY_CONS(Grob); }; #endif diff --git a/lily/include/local-key-item.hh b/lily/include/local-key-item.hh index 9eb8c92b9f..c6a762ec4f 100644 --- a/lily/include/local-key-item.hh +++ b/lily/include/local-key-item.hh @@ -13,12 +13,12 @@ class Local_key_item { - static Molecule parenthesize (Score_element*me, Molecule) ; + static Molecule parenthesize (Grob*me, Molecule) ; public: DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); - static void add_pitch (Score_element*me, Pitch, bool cautionary, bool natural); - static bool has_interface (Score_element*); - static void set_interface (Score_element*); + static void add_pitch (Grob*me, Pitch, bool cautionary, bool natural); + static bool has_interface (Grob*); + static void set_interface (Grob*); }; diff --git a/lily/include/lyric-engraver.hh b/lily/include/lyric-engraver.hh index cbc55f3628..455ed51d79 100644 --- a/lily/include/lyric-engraver.hh +++ b/lily/include/lyric-engraver.hh @@ -21,10 +21,10 @@ class Lyric_engraver : public Engraver { protected: - virtual void do_pre_move_processing(); - virtual bool do_try_music (Music*); + virtual void stop_translation_timestep(); + virtual bool try_music (Music*); void deprecated_process_music(); - virtual void do_post_move_processing (); + virtual void start_translation_timestep (); public: Lyric_engraver (); VIRTUAL_COPY_CONS (Translator); diff --git a/lily/include/lyric-extender.hh b/lily/include/lyric-extender.hh index a8926002e8..942d0b8922 100644 --- a/lily/include/lyric-extender.hh +++ b/lily/include/lyric-extender.hh @@ -32,7 +32,7 @@ class Lyric_extender public: Spanner*elt_l_; Lyric_extender (Spanner*); - void set_textitem (Direction, Score_element*); + void set_textitem (Direction, Grob*); DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); }; diff --git a/lily/include/lyric-performer.hh b/lily/include/lyric-performer.hh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lily/include/lyric-phrasing-engraver.hh b/lily/include/lyric-phrasing-engraver.hh index 6888caa1b1..263ae24048 100644 --- a/lily/include/lyric-phrasing-engraver.hh +++ b/lily/include/lyric-phrasing-engraver.hh @@ -62,15 +62,15 @@ for melismas as well. class Lyric_phrasing_engraver : public Engraver { protected: - virtual void acknowledge_element(Score_element_info); - virtual void process_acknowledged (); - virtual void do_pre_move_processing(); + virtual void acknowledge_grob(Grob_info); + virtual void create_grobs (); + virtual void stop_translation_timestep(); virtual void do_removal_processing (); private: - void record_notehead(const String &context_id, Score_element * notehead); - void record_lyric(const String &context_id, Score_element * lyric); + void record_notehead(const String &context_id, Grob * notehead); + void record_lyric(const String &context_id, Grob * lyric); void record_melisma(const String &context_id); - void record_extender(const String &context_id, Score_element * extender); + void record_extender(const String &context_id, Grob * extender); Syllable_group * lookup_context_id(const String &context_id); public: @@ -82,32 +82,32 @@ private: /** association list of Syllable_group smobs */ Protected_scm voice_alist_; - Score_element * any_notehead_l_; + Grob * any_notehead_l_; }; class Syllable_group { bool first_in_phrase_b_; - Score_element * notehead_l_; - Link_array lyric_list_; - Score_element * longest_lyric_l_; - Score_element * shortest_lyric_l_; + Grob * notehead_l_; + Link_array lyric_list_; + Grob * longest_lyric_l_; + Grob * shortest_lyric_l_; int alignment_i_; bool melisma_b_; Real group_translation_f_; public: static SCM make_entry(); void set_first_in_phrase(bool f); - void set_notehead(Score_element * notehead); - void add_lyric(Score_element * lyric); - void add_extender(Score_element * extender); + void set_notehead(Grob * notehead); + void add_lyric(Grob * lyric); + void add_extender(Grob * extender); void set_melisma() { melisma_b_ = true; } bool get_melisma() { return melisma_b_; } int lyric_count() { return lyric_list_.size(); } void clear(); bool is_empty(); - bool set_lyric_align(const char *punc, Score_element *default_notehead_l); + bool set_lyric_align(const char *punc, Grob *default_notehead_l); void adjust_melisma_align(); int appropriate_alignment(const char *punc); Real amount_to_translate(); diff --git a/lily/include/multi-measure-rest.hh b/lily/include/multi-measure-rest.hh index c53350773d..ade68b16c0 100644 --- a/lily/include/multi-measure-rest.hh +++ b/lily/include/multi-measure-rest.hh @@ -17,10 +17,10 @@ class Multi_measure_rest { public: - static void set_interface (Score_element*); - static bool has_interface (Score_element*); + static void set_interface (Grob*); + static bool has_interface (Grob*); DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); - static void add_column (Score_element*,Item*); + static void add_column (Grob*,Item*); DECLARE_SCHEME_CALLBACK(set_spacing_rods, (SCM )); }; diff --git a/lily/include/music-iterator-ctor.hh b/lily/include/music-iterator-ctor.hh index 9a99f59e6d..5a066988a7 100644 --- a/lily/include/music-iterator-ctor.hh +++ b/lily/include/music-iterator-ctor.hh @@ -1,5 +1,5 @@ /* - score-element-callback.hh -- declare Score_element callbacks + grob-callback.hh -- declare Grob callbacks source file of the GNU LilyPond music typesetter diff --git a/lily/include/note-column.hh b/lily/include/note-column.hh index 65dd50c2ab..dfc92030af 100644 --- a/lily/include/note-column.hh +++ b/lily/include/note-column.hh @@ -21,7 +21,7 @@ class Note_column { public: - static int shift_compare (Score_element *const &, Score_element*const&); + static int shift_compare (Grob *const &, Grob*const&); /** The relative position of the "voice" containing this chord. Normally this would be the same as the stem direction, @@ -29,18 +29,18 @@ public: JUNKME. */ - static Direction dir (Score_element*me); - static Slice head_positions_interval(Score_element* me); - static Direction static_dir (Score_element*); - static void translate_rests(Score_element*me,int dy); - static Score_element * first_head (Score_element*me); - static void set_stem (Score_element*me,Score_element*); - static void set_dotcol (Score_element*me,Score_element*); - static void add_head (Score_element*me,Score_element*); - static bool rest_b (Score_element*me); - static bool has_interface (Score_element*); - static void set_interface (Score_element*); - static Item *stem_l(Score_element*); + static Direction dir (Grob*me); + static Slice head_positions_interval(Grob* me); + static Direction static_dir (Grob*); + static void translate_rests(Grob*me,int dy); + static Grob * first_head (Grob*me); + static void set_stem (Grob*me,Grob*); + static void set_dotcol (Grob*me,Grob*); + static void add_head (Grob*me,Grob*); + static bool rest_b (Grob*me); + static bool has_interface (Grob*); + static void set_interface (Grob*); + static Item *stem_l(Grob*); }; #endif // NOTE_COLUMN_HH diff --git a/lily/include/note-head.hh b/lily/include/note-head.hh index 0a2f95efb0..e38fbd1609 100644 --- a/lily/include/note-head.hh +++ b/lily/include/note-head.hh @@ -21,8 +21,8 @@ class Note_head { public: DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); - static Molecule ledger_line (Interval, Score_element*) ; - static bool has_interface (Score_element*); + static Molecule ledger_line (Interval, Grob*) ; + static bool has_interface (Grob*); }; #endif // NOTEHEAD_HH diff --git a/lily/include/note-performer.hh b/lily/include/note-performer.hh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lily/include/paper-column.hh b/lily/include/paper-column.hh index cc4778dddd..c111a2e05d 100644 --- a/lily/include/paper-column.hh +++ b/lily/include/paper-column.hh @@ -17,7 +17,7 @@ class Paper_column : public Item { public: - VIRTUAL_COPY_CONS(Score_element); + VIRTUAL_COPY_CONS(Grob); /* Not (yet) in scm, because of messy effects when a column commits suicide. @@ -31,13 +31,13 @@ public: Line_of_score *line_l_; /// which one (left =0) - static int rank_i(Score_element*); + static int rank_i(Grob*); Paper_column (SCM); bool musical_b () const; - static Moment when_mom (Score_element*); + static Moment when_mom (Grob*); - static bool used_b (Score_element*) ; + static bool used_b (Grob*) ; void set_rank (int); }; diff --git a/lily/include/paper-outputter.hh b/lily/include/paper-outputter.hh index a0660f8032..3a7d04466c 100644 --- a/lily/include/paper-outputter.hh +++ b/lily/include/paper-outputter.hh @@ -17,7 +17,7 @@ #include "protected-scm.hh" /** - Abstract interface for a Score_element to output itself. + Abstract interface for a Grob to output itself. */ class Paper_outputter { diff --git a/lily/include/performer-group-performer.hh b/lily/include/performer-group-performer.hh index 4ad9637d0f..f9d3753d39 100644 --- a/lily/include/performer-group-performer.hh +++ b/lily/include/performer-group-performer.hh @@ -27,8 +27,8 @@ protected: Array announce_info_arr_; private: - void process_acknowledged (); - void acknowledge_elements (); + void create_grobs (); + void acknowledge_grobs (); }; #endif // PERFORMER_GROUP_PERFORMER_HH diff --git a/lily/include/performer.hh b/lily/include/performer.hh index 8cba9f6cba..3b940c6c5a 100644 --- a/lily/include/performer.hh +++ b/lily/include/performer.hh @@ -11,7 +11,7 @@ #include "audio-element-info.hh" #include "array.hh" #include "request.hh" -#include "score-element-info.hh" +#include "grob-info.hh" #include "translator.hh" /** @@ -27,8 +27,8 @@ public: protected: virtual void announce_element (Audio_element_info); - virtual void acknowledge_element (Audio_element_info); - virtual void process_acknowledged (); + virtual void acknowledge_grob (Audio_element_info); + virtual void create_grobs (); virtual int get_tempo_i() const; virtual void play_element (Audio_element * elem_p ); }; diff --git a/lily/include/rest-collision.hh b/lily/include/rest-collision.hh index 23ba1a6963..d58bebf0f4 100644 --- a/lily/include/rest-collision.hh +++ b/lily/include/rest-collision.hh @@ -19,10 +19,10 @@ class Rest_collision { public: - static void add_column (Score_element*me,Score_element*); - static void set_interface (Score_element*me); - static bool has_interface (Score_element*); + static void add_column (Grob*me,Grob*); + static void set_interface (Grob*me); + static bool has_interface (Grob*); DECLARE_SCHEME_CALLBACK(force_shift_callback, (SCM element, SCM axis)); - static SCM do_shift (Score_element*,SCM); + static SCM do_shift (Grob*,SCM); }; #endif // REST_COLLISION_HH diff --git a/lily/include/rest.hh b/lily/include/rest.hh index f623aa3bfe..462e68922d 100644 --- a/lily/include/rest.hh +++ b/lily/include/rest.hh @@ -16,7 +16,9 @@ class Rest { public: DECLARE_SCHEME_CALLBACK(after_line_breaking, (SCM )); - static bool has_interface (Score_element*); + static bool has_interface (Grob*); + static SCM brew_internal_molecule (SCM); + DECLARE_SCHEME_CALLBACK(extent_callback, (SCM,SCM)); DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); }; #endif // REST_HH diff --git a/lily/include/rhythmic-head.hh b/lily/include/rhythmic-head.hh index 1c222f873c..a9d6f904c0 100644 --- a/lily/include/rhythmic-head.hh +++ b/lily/include/rhythmic-head.hh @@ -16,14 +16,14 @@ class Rhythmic_head { public: - static int balltype_i (Score_element*) ; - static void set_dots (Score_element*,Item *); - static Item * stem_l (Score_element*) ; - static Item * dots_l (Score_element*) ; - static int dot_count (Score_element*) ; + static int balltype_i (Grob*) ; + static void set_dots (Grob*,Item *); + static Item * stem_l (Grob*) ; + static Item * dots_l (Grob*) ; + static int dot_count (Grob*) ; DECLARE_SCHEME_CALLBACK(after_line_breaking, (SCM )); - static bool has_interface (Score_element*); - static void set_interface (Score_element*); + static bool has_interface (Grob*); + static void set_interface (Grob*); }; #endif // RHYTHMIC_HEAD_HH diff --git a/lily/include/score-engraver.hh b/lily/include/score-engraver.hh index 70a7e30410..5cbe10b56c 100644 --- a/lily/include/score-engraver.hh +++ b/lily/include/score-engraver.hh @@ -22,11 +22,11 @@ class Score_engraver : Line_of_score * scoreline_l_; int breaks_i_; - Link_array elem_p_arr_; + Link_array elem_p_arr_; Paper_column* command_column_l_; Paper_column* musical_column_l_; - + void make_columns (Moment); void set_columns (Paper_column*,Paper_column*); void typeset_all(); @@ -46,14 +46,14 @@ protected: protected: /* Engraver_group_engraver interface */ - virtual bool do_try_music (Music*); + virtual bool try_music (Music*); virtual void do_creation_processing(); virtual void do_removal_processing(); - virtual void announce_element (Score_element_info); + virtual void announce_grob (Grob_info); virtual void do_announces(); - virtual void typeset_element (Score_element*elem_p); + virtual void typeset_grob (Grob*elem_p); - virtual void do_pre_move_processing(); + virtual void stop_translation_timestep(); virtual void do_add_processing (); }; diff --git a/lily/include/script-column.hh b/lily/include/script-column.hh index 3603372fae..2f77a866b4 100644 --- a/lily/include/script-column.hh +++ b/lily/include/script-column.hh @@ -16,7 +16,7 @@ class Script_column { public: - static void add_staff_sided (Score_element*, Item*); + static void add_staff_sided (Grob*, Item*); DECLARE_SCHEME_CALLBACK(before_line_breaking, (SCM )); }; diff --git a/lily/include/script.hh b/lily/include/script.hh index 6d9b51f2c3..bedf9501e5 100644 --- a/lily/include/script.hh +++ b/lily/include/script.hh @@ -21,9 +21,9 @@ class Script { public: - static Molecule get_molecule (Score_element*,Direction d); - static void set_interface (Score_element*); - static bool has_interface (Score_element*); + static Molecule get_molecule (Grob*,Direction d); + static void set_interface (Grob*); + static bool has_interface (Grob*); DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); DECLARE_SCHEME_CALLBACK(after_line_breaking, (SCM )); }; diff --git a/lily/include/separating-group-spanner.hh b/lily/include/separating-group-spanner.hh index 8bcff500a4..67c45a5376 100644 --- a/lily/include/separating-group-spanner.hh +++ b/lily/include/separating-group-spanner.hh @@ -15,8 +15,8 @@ class Separating_group_spanner { public: - static void add_spacing_unit (Score_element*me, Item*); - static void set_interface (Score_element*); + static void add_spacing_unit (Grob*me, Item*); + static void set_interface (Grob*); DECLARE_SCHEME_CALLBACK(set_spacing_rods, (SCM )); }; diff --git a/lily/include/separation-item.hh b/lily/include/separation-item.hh index 51e0b18760..1e3d5b67c4 100644 --- a/lily/include/separation-item.hh +++ b/lily/include/separation-item.hh @@ -16,10 +16,10 @@ */ struct Separation_item { - static void set_interface (Score_element*); - static bool has_interface (Score_element*); - static Interval my_width (Score_element*) ; - static void add_item (Score_element*,Item*); + static void set_interface (Grob*); + static bool has_interface (Grob*); + static Interval my_width (Grob*) ; + static void add_item (Grob*,Item*); }; #endif /* SINGLE_MALT_GROUPING_ITEM_HH */ diff --git a/lily/include/side-position-interface.hh b/lily/include/side-position-interface.hh index d5392ee73d..b2c5b5f2ce 100644 --- a/lily/include/side-position-interface.hh +++ b/lily/include/side-position-interface.hh @@ -26,16 +26,16 @@ public: DECLARE_SCHEME_CALLBACK(aligned_side, (SCM element, SCM axis)); DECLARE_SCHEME_CALLBACK(quantised_position, (SCM element, SCM axis)); DECLARE_SCHEME_CALLBACK(centered_on_parent, (SCM element, SCM axis)); - static void set_axis (Score_element*,Axis); - static void set_minimum_space (Score_element*,Real); - static void set_padding (Score_element*,Real); - static Axis get_axis (Score_element*) ; - static bool supported_b (Score_element*) ; - static bool has_interface (Score_element*) ; - static void add_support (Score_element*,Score_element*); - static void add_staff_support (Score_element*); - static Direction get_direction (Score_element*); - static void set_direction (Score_element*,Direction); + static void set_axis (Grob*,Axis); + static void set_minimum_space (Grob*,Real); + static void set_padding (Grob*,Real); + static Axis get_axis (Grob*) ; + static bool supported_b (Grob*) ; + static bool has_interface (Grob*) ; + static void add_support (Grob*,Grob*); + static void add_staff_support (Grob*); + static Direction get_direction (Grob*); + static void set_direction (Grob*,Direction); }; diff --git a/lily/include/simple-spacer.hh b/lily/include/simple-spacer.hh index 4f317b148a..4cf344fbca 100644 --- a/lily/include/simple-spacer.hh +++ b/lily/include/simple-spacer.hh @@ -73,7 +73,7 @@ struct Simple_spacer Simple_spacer (); void solve (Column_x_positions *) const; - void add_columns (Link_array); + void add_columns (Link_array); void my_solve_linelen (); void my_solve_natural_len (); Real active_springs_stiffness () const; diff --git a/lily/include/slur.hh b/lily/include/slur.hh index d4f2e11c01..9c20697a3e 100644 --- a/lily/include/slur.hh +++ b/lily/include/slur.hh @@ -14,25 +14,25 @@ class Slur { public: - static void add_column (Score_element *me, Score_element *col); + static void add_column (Grob *me, Grob *col); DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM)); - static void set_interface (Score_element*); - static bool has_interface (Score_element*); - static Array get_encompass_offset_arr (Score_element *me); - static Bezier get_curve (Score_element *me); - static Direction get_default_dir (Score_element *me); + static void set_interface (Grob*); + static bool has_interface (Grob*); + static Array get_encompass_offset_arr (Grob *me); + static Bezier get_curve (Grob *me); + static Direction get_default_dir (Grob *me); DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM)); DECLARE_SCHEME_CALLBACK (set_spacing_rods, (SCM )); private: - static Real get_first_notecolumn_y (Score_element *me, Direction dir); - static Offset broken_trend_offset (Score_element *me, Direction dir); - static Offset get_attachment (Score_element *me,Direction dir, Score_element **common); - static void de_uglyfy (Score_element *me,Slur_bezier_bow* bb, Real default_height); - static void set_extremities (Score_element *me); - static void set_control_points (Score_element *me); - static void check_slope (Score_element *me); - static Offset encompass_offset (Score_element *me, Score_element *col, Score_element **common); + static Real get_first_notecolumn_y (Grob *me, Direction dir); + static Offset broken_trend_offset (Grob *me, Direction dir); + static Offset get_attachment (Grob *me,Direction dir, Grob **common); + static void de_uglyfy (Grob *me,Slur_bezier_bow* bb, Real default_height); + static void set_extremities (Grob *me); + static void set_control_points (Grob *me); + static void check_slope (Grob *me); + static Offset encompass_offset (Grob *me, Grob *col, Grob **common); }; #endif // SLUR_HH diff --git a/lily/include/spaceable-element.hh b/lily/include/spaceable-element.hh index 03489cd810..94a6f2efa5 100644 --- a/lily/include/spaceable-element.hh +++ b/lily/include/spaceable-element.hh @@ -16,12 +16,12 @@ struct Spaceable_element { /// set a minimum distance - static void add_rod (Score_element*me, Score_element * to, Real distance); - static void add_spring (Score_element*me,Score_element * to, Real dist, Real strength); - static void set_interface (Score_element*); - static void remove_interface (Score_element*); - static SCM get_minimum_distances (Score_element*); - static SCM get_ideal_distances (Score_element*); + static void add_rod (Grob*me, Grob * to, Real distance); + static void add_spring (Grob*me,Grob * to, Real dist, Real strength); + static void set_interface (Grob*); + static void remove_interface (Grob*); + static SCM get_minimum_distances (Grob*); + static SCM get_ideal_distances (Grob*); }; #endif /* SPACEABLE_ELEMENT_HH */ diff --git a/lily/include/spacing-spanner.hh b/lily/include/spacing-spanner.hh index 7f678043ee..c1158706dd 100644 --- a/lily/include/spacing-spanner.hh +++ b/lily/include/spacing-spanner.hh @@ -15,14 +15,14 @@ class Spacing_spanner { public: - static void set_interface (Score_element*); - static void do_measure (Score_element*,Link_array) ; + static void set_interface (Grob*); + static void do_measure (Grob*,Link_array) ; DECLARE_SCHEME_CALLBACK(set_springs, (SCM )); - static Real stem_dir_correction (Score_element*,Score_element*,Score_element*) ; - static Real default_bar_spacing (Score_element*,Score_element*,Score_element*,Moment) ; - static Real note_spacing (Score_element*,Score_element*,Score_element*,Moment) ; - static Real get_duration_space (Score_element*,Moment dur, Moment shortest) ; + static Real stem_dir_correction (Grob*,Grob*,Grob*) ; + static Real default_bar_spacing (Grob*,Grob*,Grob*,Moment) ; + static Real note_spacing (Grob*,Grob*,Grob*,Moment) ; + static Real get_duration_space (Grob*,Moment dur, Moment shortest) ; }; #endif /* SPACING_SPANNER_HH */ diff --git a/lily/include/span-bar.hh b/lily/include/span-bar.hh index 880eb0dba0..e3cc0c2246 100644 --- a/lily/include/span-bar.hh +++ b/lily/include/span-bar.hh @@ -21,12 +21,12 @@ class Span_bar { public: - static void set_interface (Score_element*); - static bool has_interface (Score_element*); - static Interval get_spanned_interval (Score_element*); - static void add_bar (Score_element*,Score_element*); - static void evaluate_glyph (Score_element*); - static void evaluate_empty (Score_element*); + static void set_interface (Grob*); + static bool has_interface (Grob*); + static Interval get_spanned_interval (Grob*); + static void add_bar (Grob*,Grob*); + static void evaluate_glyph (Grob*); + static void evaluate_empty (Grob*); DECLARE_SCHEME_CALLBACK(width_callback, (SCM smob, SCM axis)); DECLARE_SCHEME_CALLBACK(get_bar_size, (SCM )); DECLARE_SCHEME_CALLBACK(before_line_breaking, (SCM )); diff --git a/lily/include/span-score-bar-engraver.hh b/lily/include/span-score-bar-engraver.hh index 56844615bf..0a16540022 100644 --- a/lily/include/span-score-bar-engraver.hh +++ b/lily/include/span-score-bar-engraver.hh @@ -48,7 +48,7 @@ public: VIRTUAL_COPY_CONS (Translator); virtual Span_bar * get_span_bar_p () const; - virtual void acknowledge_element (Score_element_info); + virtual void acknowledge_grob (Grob_info); }; #endif // SPAN_SCORE_BAR_GRAV_HH diff --git a/lily/include/spanner.hh b/lily/include/spanner.hh index 8792301dfc..7a21c3a917 100644 --- a/lily/include/spanner.hh +++ b/lily/include/spanner.hh @@ -8,7 +8,7 @@ #define SPANNER_HH #include "lily-proto.hh" -#include "score-element.hh" +#include "grob.hh" #include "drul-array.hh" #include "rod.hh" @@ -29,7 +29,7 @@ length of stems of notes they encompass. */ -class Spanner : public Score_element { +class Spanner : public Grob { Drul_array spanned_drul_; public: @@ -40,7 +40,7 @@ public: // TODO: make virtual and do this for Items as well. Interval_t spanned_rank_iv (); - void set_bound (Direction d, Score_element*); + void set_bound (Direction d, Grob*); Item *get_bound (Direction d) const; Spanner (SCM); @@ -50,18 +50,18 @@ public: Real spanner_length () const; static int compare (Spanner * const &,Spanner * const &); - virtual Score_element* find_broken_piece (Line_of_score*) const; + virtual Grob* find_broken_piece (Line_of_score*) const; virtual SCM do_derived_mark (); protected: void set_my_columns (); - VIRTUAL_COPY_CONS(Score_element); + VIRTUAL_COPY_CONS(Grob); virtual void do_break_processing (); virtual Line_of_score*line_l () const; }; void add_bound_item (Spanner*, Item* n); -void extend_spanner_over_elements (Score_element* span); +void extend_spanner_over_elements (Grob* span); #endif diff --git a/lily/include/staff-performer.hh b/lily/include/staff-performer.hh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lily/include/staff-symbol-referencer.hh b/lily/include/staff-symbol-referencer.hh index 597ed0944b..5a702be1d8 100644 --- a/lily/include/staff-symbol-referencer.hh +++ b/lily/include/staff-symbol-referencer.hh @@ -10,7 +10,7 @@ #ifndef STAFF_SYMBOL_REFERENCER_HH #define STAFF_SYMBOL_REFERENCER_HH -#include "score-element.hh" +#include "grob.hh" /** @@ -21,9 +21,9 @@ class Staff_symbol_referencer { public: - static void set_interface (Score_element*); - static bool has_interface (Score_element*); - static void set_position (Score_element*,Real); + static void set_interface (Grob*); + static bool has_interface (Grob*); + static void set_position (Grob*,Real); DECLARE_SCHEME_CALLBACK(callback, (SCM element, SCM axis)); /** @@ -31,15 +31,15 @@ public: typeface. ie. leading is vertical space. */ - static Real staff_space (Score_element*); - static Score_element * staff_symbol_l (Score_element*); - static bool on_staffline (Score_element*); - static bool on_staffline (Score_element*,int); - static int line_count (Score_element*); - static Real position_f (Score_element*); - static Real staff_radius (Score_element*); + static Real staff_space (Grob*); + static Grob * staff_symbol_l (Grob*); + static bool on_staffline (Grob*); + static bool on_staffline (Grob*,int); + static int line_count (Grob*); + static Real position_f (Grob*); + static Real staff_radius (Grob*); }; -int compare_position (Score_element *const&,Score_element *const&); +int compare_position (Grob *const&,Grob *const&); #endif /* STAFF_SYMBOL_REFERENCER_HH */ diff --git a/lily/include/staff-symbol.hh b/lily/include/staff-symbol.hh index ce78e12711..4d578c4b02 100644 --- a/lily/include/staff-symbol.hh +++ b/lily/include/staff-symbol.hh @@ -18,11 +18,11 @@ class Staff_symbol { public: - static Real staff_space (Score_element*) ; - static int steps_i(Score_element*) ; - static int line_count (Score_element*); + static Real staff_space (Grob*) ; + static int steps_i(Grob*) ; + static int line_count (Grob*); DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); - static bool has_interface (Score_element*); - static void set_interface (Score_element*); + static bool has_interface (Grob*); + static void set_interface (Grob*); }; #endif // STAFFSYM_HH diff --git a/lily/include/stem-tremolo.hh b/lily/include/stem-tremolo.hh index 11fa9dda0c..e093b3a497 100644 --- a/lily/include/stem-tremolo.hh +++ b/lily/include/stem-tremolo.hh @@ -16,11 +16,11 @@ class Stem_tremolo { public: - static void set_interface (Score_element*); - static bool has_interface (Score_element*); + static void set_interface (Grob*); + static bool has_interface (Grob*); DECLARE_SCHEME_CALLBACK(dim_callback, (SCM smob, SCM axis)); DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); - static void set_stem (Score_element*me, Score_element *st); + static void set_stem (Grob*me, Grob *st); }; #endif /* ABBREV_HH */ diff --git a/lily/include/stem.hh b/lily/include/stem.hh index 200ce73592..64d55f2bc2 100644 --- a/lily/include/stem.hh +++ b/lily/include/stem.hh @@ -17,34 +17,34 @@ class Stem public: DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); - static int flag_i (Score_element*) ; - static int beam_count (Score_element*,Direction) ; - static void set_beaming (Score_element*,int, Direction d); - static Score_element * beam_l (Score_element*); - static Score_element * first_head (Score_element*) ; - static Drul_array extremal_heads (Score_element*); - static Score_element * support_head (Score_element*) ; - static void add_head (Score_element*me, Score_element*n); - static Stem_info calc_stem_info (Score_element *) ; - static Real chord_start_f (Score_element *) ; - static Direction get_direction (Score_element*) ; - static int type_i (Score_element *) ; - static void set_stemend (Score_element *,Real); - static Direction get_default_dir(Score_element *) ; - static int get_center_distance(Score_element *,Direction) ; - static int heads_i (Score_element *) ; - static bool invisible_b(Score_element *) ; - static Interval head_positions(Score_element *) ; - static Real get_default_stem_end_position (Score_element*me) ; - static void position_noteheads(Score_element*); - static Real stem_end_position (Score_element*) ; + static int flag_i (Grob*) ; + static int beam_count (Grob*,Direction) ; + static void set_beaming (Grob*,int, Direction d); + static Grob * beam_l (Grob*); + static Grob * first_head (Grob*) ; + static Drul_array extremal_heads (Grob*); + static Grob * support_head (Grob*) ; + static void add_head (Grob*me, Grob*n); + static Stem_info calc_stem_info (Grob *) ; + static Real chord_start_f (Grob *) ; + static Direction get_direction (Grob*) ; + static int type_i (Grob *) ; + static void set_stemend (Grob *,Real); + static Direction get_default_dir(Grob *) ; + static int get_center_distance(Grob *,Direction) ; + static int heads_i (Grob *) ; + static bool invisible_b(Grob *) ; + static Interval head_positions(Grob *) ; + static Real get_default_stem_end_position (Grob*me) ; + static void position_noteheads(Grob*); + static Real stem_end_position (Grob*) ; DECLARE_SCHEME_CALLBACK(off_callback, (SCM element, SCM axis)); - static Molecule flag (Score_element*); + static Molecule flag (Grob*); DECLARE_SCHEME_CALLBACK(before_line_breaking, (SCM )); DECLARE_SCHEME_CALLBACK(dim_callback, (SCM smob, SCM axis)); - static bool has_interface (Score_element*); - static void set_interface (Score_element*); + static bool has_interface (Grob*); + static void set_interface (Grob*); - static void set_spacing_hints (Score_element*me) ; + static void set_spacing_hints (Grob*me) ; }; #endif diff --git a/lily/include/swallow-engraver.hh b/lily/include/swallow-engraver.hh index 2ce555683c..169c72ba82 100644 --- a/lily/include/swallow-engraver.hh +++ b/lily/include/swallow-engraver.hh @@ -18,7 +18,7 @@ */ class Swallow_engraver : public Engraver { protected: - bool do_try_music (Music*) ; + bool try_music (Music*) ; public: VIRTUAL_COPY_CONS(Translator); diff --git a/lily/include/swallow-perf.hh b/lily/include/swallow-perf.hh index a3c123382d..334cabd678 100644 --- a/lily/include/swallow-perf.hh +++ b/lily/include/swallow-perf.hh @@ -18,7 +18,7 @@ public: VIRTUAL_COPY_CONS(Translator); protected: - virtual bool do_try_music (Music*) { return true; } + virtual bool try_music (Music*) { return true; } }; #endif // SWALLOW_PERF_HH diff --git a/lily/include/system-start-delimiter.hh b/lily/include/system-start-delimiter.hh index 081f0c6c91..bcf039374e 100644 --- a/lily/include/system-start-delimiter.hh +++ b/lily/include/system-start-delimiter.hh @@ -21,13 +21,13 @@ class System_start_delimiter public: DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); - static void set_interface (Score_element*me); - static bool has_interface (Score_element*); + static void set_interface (Grob*me); + static bool has_interface (Grob*); DECLARE_SCHEME_CALLBACK(after_line_breaking, (SCM )); - static void try_collapse (Score_element*); - static Molecule staff_bracket (Score_element*,Real) ; - static Molecule staff_brace (Score_element*,Real) ; - static Molecule simple_bar (Score_element*,Real) ; + static void try_collapse (Grob*); + static Molecule staff_bracket (Grob*,Real) ; + static Molecule staff_brace (Grob*,Real) ; + static Molecule simple_bar (Grob*,Real) ; }; #endif /* SYSTEM_START_DELIMITER_HH */ diff --git a/lily/include/tempo-performer.hh b/lily/include/tempo-performer.hh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lily/include/text-item.hh b/lily/include/text-item.hh index 8a021e004b..15373296c6 100644 --- a/lily/include/text-item.hh +++ b/lily/include/text-item.hh @@ -19,13 +19,13 @@ class Text_item { public: DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM)); - static Molecule text2molecule (Score_element *me, SCM text, SCM properties); - static Molecule string2molecule (Score_element *me, SCM text, SCM properties); - static Molecule markup_sentence2molecule (Score_element *me, SCM markup_sentence, SCM properties); + static Molecule text2molecule (Grob *me, SCM text, SCM properties); + static Molecule string2molecule (Grob *me, SCM text, SCM properties); + static Molecule markup_sentence2molecule (Grob *me, SCM markup_sentence, SCM properties); private: - static Molecule lookup_character (Score_element *me, Font_metric*, SCM char_name); - static Molecule lookup_text (Score_element *me, Font_metric*, SCM text); + static Molecule lookup_character (Grob *me, Font_metric*, SCM char_name); + static Molecule lookup_text (Grob *me, Font_metric*, SCM text); }; #endif /* TEXT_ITEM */ diff --git a/lily/include/text-spanner.hh b/lily/include/text-spanner.hh index 34f4432b96..a3af5beedb 100644 --- a/lily/include/text-spanner.hh +++ b/lily/include/text-spanner.hh @@ -16,7 +16,7 @@ class Text_spanner { public: DECLARE_SCHEME_CALLBACK (brew_molecule, (SCM)); - static bool has_interface (Score_element*); + static bool has_interface (Grob*); }; #endif /* TEXT_SPANNER_HH */ diff --git a/lily/include/tie-column.hh b/lily/include/tie-column.hh index b841125b31..333b319949 100644 --- a/lily/include/tie-column.hh +++ b/lily/include/tie-column.hh @@ -17,11 +17,11 @@ class Tie_column { public: - static void set_interface (Score_element*me); - static bool has_interface (Score_element*); - static void add_tie (Score_element*me,Score_element*); + static void set_interface (Grob*me); + static bool has_interface (Grob*); + static void add_tie (Grob*me,Grob*); DECLARE_SCHEME_CALLBACK(after_line_breaking, (SCM )); - static void set_directions (Score_element*me); + static void set_directions (Grob*me); }; #endif /* TIE_COLUMN_HH */ diff --git a/lily/include/tie-performer.hh b/lily/include/tie-performer.hh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lily/include/tie.hh b/lily/include/tie.hh index 7155dfbba8..6c5be3f4d7 100644 --- a/lily/include/tie.hh +++ b/lily/include/tie.hh @@ -17,13 +17,13 @@ class Tie { public: - static void set_head (Score_element*,Direction, Item*head_l); - static void set_interface (Score_element*); - static bool has_interface (Score_element*); - static Score_element * head (Score_element*,Direction) ; - static Real position_f (Score_element*) ; + static void set_head (Grob*,Direction, Item*head_l); + static void set_interface (Grob*); + static bool has_interface (Grob*); + static Grob * head (Grob*,Direction) ; + static Real position_f (Grob*) ; DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); - static Direction get_default_dir(Score_element*) ; + static Direction get_default_dir(Grob*) ; static SCM get_control_points (SCM); DECLARE_SCHEME_CALLBACK(set_spacing_rods, (SCM )); }; diff --git a/lily/include/time-signature-performer.hh b/lily/include/time-signature-performer.hh deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/lily/include/time-signature.hh b/lily/include/time-signature.hh index f88a4f1324..c45dcd86cc 100644 --- a/lily/include/time-signature.hh +++ b/lily/include/time-signature.hh @@ -19,8 +19,8 @@ */ struct Time_signature { - static Molecule special_time_signature (Score_element*,String,int,int) ; - static Molecule time_signature (Score_element*,int, int); + static Molecule special_time_signature (Grob*,String,int,int) ; + static Molecule time_signature (Grob*,int, int); DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); }; #endif // METER_HH diff --git a/lily/include/timing-translator.hh b/lily/include/timing-translator.hh index 8dac8a403f..d78dce109f 100644 --- a/lily/include/timing-translator.hh +++ b/lily/include/timing-translator.hh @@ -26,10 +26,10 @@ public: protected: virtual void do_creation_processing (); - virtual bool do_try_music (Music *req_l); + virtual bool try_music (Music *req_l); void deprecated_process_music(); - virtual void do_pre_move_processing(); - virtual void do_post_move_processing(); + virtual void stop_translation_timestep(); + virtual void start_translation_timestep(); public: Moment measure_position () const; diff --git a/lily/include/translator-group.hh b/lily/include/translator-group.hh index acdd1b84f5..411710343c 100644 --- a/lily/include/translator-group.hh +++ b/lily/include/translator-group.hh @@ -71,9 +71,9 @@ public: virtual void do_announces (); virtual void do_add_processing (); - virtual bool do_try_music (Music* req_l); - virtual void do_pre_move_processing(); - virtual void do_post_move_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 each (Method_pointer); diff --git a/lily/include/translator.hh b/lily/include/translator.hh index 479393f209..7680a5d394 100644 --- a/lily/include/translator.hh +++ b/lily/include/translator.hh @@ -38,17 +38,6 @@ public: Translator_group * daddy_trans_l_ ; - - /** - try to fit the request in this engraver - - @return - false: not noted, not taken. - - true: request swallowed. Don't try to put the request elsewhere. - - */ - bool try_music (Music*); void pre_move_processing(); void add_processing (); void announces(); @@ -76,9 +65,18 @@ public: public: virtual void do_add_processing (); - virtual bool do_try_music (Music *req_l); - virtual void do_pre_move_processing(); - virtual void do_post_move_processing(); + /** + try to fit the request in this engraver + + @return + false: not noted, not taken. + + true: request swallowed. Don't try to put the request elsewhere. + + */ + virtual bool try_music (Music *req_l); + virtual void stop_translation_timestep(); + virtual void start_translation_timestep(); virtual void do_announces () ; virtual void do_creation_processing() ; virtual void do_removal_processing(); diff --git a/lily/include/tuplet-spanner.hh b/lily/include/tuplet-spanner.hh index 8e96b27683..2e352e6eea 100644 --- a/lily/include/tuplet-spanner.hh +++ b/lily/include/tuplet-spanner.hh @@ -20,18 +20,18 @@ class Tuplet_spanner { public: DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); - static void set_interface (Score_element*); - static bool has_interface (Score_element*); + static void set_interface (Grob*); + static bool has_interface (Grob*); - static void add_column (Score_element*me,Item*); - static void add_beam (Score_element*me,Score_element*); + static void add_column (Grob*me,Item*); + static void add_beam (Grob*me,Grob*); - static void calc_dy (Score_element*,Real *) ; - static void calc_position_and_height (Score_element*,Real*,Real *dy); + static void calc_dy (Grob*,Real *) ; + static void calc_position_and_height (Grob*,Real*,Real *dy); DECLARE_SCHEME_CALLBACK(after_line_breaking, (SCM )); - static Direction get_default_dir (Score_element*); + static Direction get_default_dir (Grob*); }; #endif // Tuplet_spanner_HH diff --git a/lily/include/type-swallow-translator.hh b/lily/include/type-swallow-translator.hh index 76f9670f58..379cfcbbb9 100644 --- a/lily/include/type-swallow-translator.hh +++ b/lily/include/type-swallow-translator.hh @@ -19,7 +19,7 @@ class Type_swallow_translator : public virtual Translator { protected: String swallow_str_; - bool do_try_music (Music*); + bool try_music (Music*); public: VIRTUAL_COPY_CONS(Translator); }; diff --git a/lily/include/volta-spanner.hh b/lily/include/volta-spanner.hh index 3619fe0e4c..94aa2ec9cc 100644 --- a/lily/include/volta-spanner.hh +++ b/lily/include/volta-spanner.hh @@ -16,11 +16,11 @@ class Volta_spanner { public: - static void set_interface (Score_element*); - static bool has_interface (Score_element*); + static void set_interface (Grob*); + static bool has_interface (Grob*); DECLARE_SCHEME_CALLBACK(brew_molecule, (SCM )); - static void add_column (Score_element*, Score_element*col); - static void add_bar (Score_element*me, Item*bar); + static void add_column (Grob*, Grob*col); + static void add_bar (Grob*me, Item*bar); }; #endif // VOLTA_SPANNER_HH diff --git a/lily/instrument-name-engraver.cc b/lily/instrument-name-engraver.cc index 69f29134b7..a42695aa10 100644 --- a/lily/instrument-name-engraver.cc +++ b/lily/instrument-name-engraver.cc @@ -17,15 +17,15 @@ class Instrument_name_engraver : public Engraver { Item *text_; - Score_element * delim_ ; + Grob * delim_ ; void create_text (SCM s); public: VIRTUAL_COPY_CONS(Translator); Instrument_name_engraver (); - virtual void acknowledge_element (Score_element_info); - virtual void do_pre_move_processing (); + virtual void acknowledge_grob (Grob_info); + virtual void stop_translation_timestep (); }; ADD_THIS_TRANSLATOR(Instrument_name_engraver); @@ -38,11 +38,11 @@ Instrument_name_engraver::Instrument_name_engraver () void -Instrument_name_engraver::do_pre_move_processing () +Instrument_name_engraver::stop_translation_timestep () { if (text_) { - typeset_element (text_); + typeset_grob (text_); text_ = 0; } } @@ -53,17 +53,17 @@ Instrument_name_engraver::create_text (SCM txt) if(!text_) { text_ = new Item (get_property ("InstrumentName")); - text_->set_elt_property ("text", txt); + text_->set_grob_property ("text", txt); if (delim_) text_->set_parent (delim_, Y_AXIS); - announce_element (text_,0); + announce_grob (text_,0); } } void -Instrument_name_engraver::acknowledge_element (Score_element_info i) +Instrument_name_engraver::acknowledge_grob (Grob_info i) { SCM s = get_property ("instrument"); diff --git a/lily/item.cc b/lily/item.cc index 811ed663e0..0d5c67b74e 100644 --- a/lily/item.cc +++ b/lily/item.cc @@ -16,7 +16,7 @@ #include "line-of-score.hh" Item::Item (SCM s) - : Score_element (s) + : Grob (s) { broken_to_drul_[LEFT] = broken_to_drul_[RIGHT]=0; } @@ -25,14 +25,14 @@ Item::Item (SCM s) Item copy ctor. Copy nothing: everything should be a elt property or a special purpose pointer (such as broken_to_drul_[]) */ Item::Item (Item const &s) - : Score_element (s) + : Grob (s) { broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] =0; } bool -Item::breakable_b (Score_element*me) +Item::breakable_b (Grob*me) { if (me->original_l_) return false; @@ -41,7 +41,7 @@ Item::breakable_b (Score_element*me) programming_error ("only items can be breakable."); Item * i =dynamic_cast (me->parent_l (X_AXIS)); - return (i) ? Item::breakable_b (i) : to_boolean (me->get_elt_property ("breakable")); + return (i) ? Item::breakable_b (i) : to_boolean (me->get_grob_property ("breakable")); } Paper_column * @@ -53,7 +53,7 @@ Item::column_l () const Line_of_score * Item::line_l() const { - Score_element *g = parent_l (X_AXIS); + Grob *g = parent_l (X_AXIS); return g ? g->line_l () : 0; } @@ -65,9 +65,9 @@ Item::copy_breakable_items() Direction i=LEFT; do { - Score_element * dolly = clone(); + Grob * dolly = clone(); Item * item_p = dynamic_cast(dolly); - pscore_l_->line_l_->typeset_element (item_p); + pscore_l_->line_l_->typeset_grob (item_p); new_copies[i] =item_p; } while (flip(&i) != LEFT); @@ -95,7 +95,7 @@ Item::discretionary_processing() copy_breakable_items(); } -Score_element* +Grob* Item::find_broken_piece (Line_of_score*l) const { if (line_l() == l) @@ -103,7 +103,7 @@ Item::find_broken_piece (Line_of_score*l) const Direction d = LEFT; do { - Score_element *s = broken_to_drul_[d]; + Grob *s = broken_to_drul_[d]; if (s && s->line_l () == l) return s; } @@ -156,7 +156,7 @@ Item::handle_prebroken_dependencies () the function can do more complicated things. */ - SCM vis = get_elt_property ("visibility-lambda"); + SCM vis = get_grob_property ("visibility-lambda"); if (gh_procedure_p (vis)) { SCM args = scm_listify (gh_int2scm (break_status_dir ()), SCM_UNDEFINED); @@ -172,7 +172,7 @@ Item::handle_prebroken_dependencies () set_extent_callback (SCM_EOL, Y_AXIS); } else if (trans) - set_elt_property ("molecule-callback", SCM_BOOL_T); + set_grob_property ("molecule-callback", SCM_BOOL_T); } } diff --git a/lily/key-engraver.cc b/lily/key-engraver.cc index d38939cd6a..ebe26164e4 100644 --- a/lily/key-engraver.cc +++ b/lily/key-engraver.cc @@ -39,12 +39,12 @@ public: protected: virtual void do_creation_processing(); virtual void do_removal_processing (); - virtual bool do_try_music (Music *req_l); + virtual bool try_music (Music *req_l); void deprecated_process_music(); - virtual void do_pre_move_processing(); - virtual void do_post_move_processing(); - virtual void process_acknowledged (); - virtual void acknowledge_element (Score_element_info); + virtual void stop_translation_timestep(); + virtual void start_translation_timestep(); + virtual void create_grobs (); + virtual void acknowledge_grob (Grob_info); }; @@ -67,11 +67,11 @@ Key_engraver::create_key (bool def) { item_p_ = new Item (get_property ("KeySignature")); - item_p_->set_elt_property ("c0-position", gh_int2scm (0)); + item_p_->set_grob_property ("c0-position", gh_int2scm (0)); // todo: put this in basic props. - item_p_->set_elt_property ("old-accidentals", old_accs_); - item_p_->set_elt_property ("new-accidentals", get_property ("keySignature")); + item_p_->set_grob_property ("old-accidentals", old_accs_); + item_p_->set_grob_property ("new-accidentals", get_property ("keySignature")); Staff_symbol_referencer::set_interface (item_p_); Key_item::set_interface (item_p_); @@ -80,9 +80,9 @@ Key_engraver::create_key (bool def) bool multi = to_boolean (prop); if (multi) - item_p_->set_elt_property ("multi-octave", gh_bool2scm (multi)); + item_p_->set_grob_property ("multi-octave", gh_bool2scm (multi)); - announce_element (item_p_,keyreq_l_); + announce_grob (item_p_,keyreq_l_); } @@ -90,13 +90,13 @@ Key_engraver::create_key (bool def) { SCM vis = get_property ("explicitKeySignatureVisibility"); if (gh_procedure_p (vis)) - item_p_->set_elt_property ("visibility-lambda",vis); + item_p_->set_grob_property ("visibility-lambda",vis); } } bool -Key_engraver::do_try_music (Music * req_l) +Key_engraver::try_music (Music * req_l) { if (Key_change_req *kc = dynamic_cast (req_l)) { @@ -110,7 +110,7 @@ Key_engraver::do_try_music (Music * req_l) } void -Key_engraver::acknowledge_element (Score_element_info info) +Key_engraver::acknowledge_grob (Grob_info info) { if (Clef::has_interface (info.elem_l_)) { @@ -129,7 +129,7 @@ Key_engraver::acknowledge_element (Score_element_info info) } void -Key_engraver::process_acknowledged () +Key_engraver::create_grobs () { deprecated_process_music (); } @@ -144,11 +144,11 @@ Key_engraver::deprecated_process_music () } void -Key_engraver::do_pre_move_processing () +Key_engraver::stop_translation_timestep () { if (item_p_) { - typeset_element (item_p_); + typeset_grob (item_p_); item_p_ = 0; } } @@ -180,7 +180,7 @@ Key_engraver::read_req (Key_change_req const * r) } void -Key_engraver::do_post_move_processing () +Key_engraver::start_translation_timestep () { keyreq_l_ = 0; old_accs_ = get_property ("keySignature"); diff --git a/lily/key-item.cc b/lily/key-item.cc index 9fc51e1161..b3fe56c195 100644 --- a/lily/key-item.cc +++ b/lily/key-item.cc @@ -28,12 +28,12 @@ const int SHARP_TOP_PITCH=4; /* ais and bis typeset in lower octave */ the thinking to other parties. */ int -Key_item::calculate_position(Score_element *ki, SCM pair) +Key_item::calculate_position(Grob *ki, SCM pair) { int p = gh_scm2int (gh_car (pair)); int a = gh_scm2int (gh_cdr (pair)); - int c0p = gh_scm2int (ki->get_elt_property ("c0-position")); - if (to_boolean (ki->get_elt_property ("multi-octave"))) + int c0p = gh_scm2int (ki->get_grob_property ("c0-position")); + if (to_boolean (ki->get_grob_property ("multi-octave"))) { return p + c0p; } @@ -76,12 +76,12 @@ MAKE_SCHEME_CALLBACK(Key_item,brew_molecule,1); SCM Key_item::brew_molecule (SCM smob) { - Score_element*me =unsmob_element (smob); + Grob*me =unsmob_element (smob); Real inter = Staff_symbol_referencer::staff_space (me)/2.0; - SCM newas = me->get_elt_property ("new-accidentals"); + SCM newas = me->get_grob_property ("new-accidentals"); Molecule mol; /* SCM lists are stacks, so we work from right to left, ending with @@ -98,7 +98,7 @@ Key_item::brew_molecule (SCM smob) Item *it = dynamic_cast (me) ; if (it->break_status_dir () != RIGHT) { - SCM old = me->get_elt_property ("old-accidentals"); + SCM old = me->get_grob_property ("old-accidentals"); /* Add half a space between cancellation and key sig. @@ -138,13 +138,13 @@ Key_item::brew_molecule (SCM smob) bool -Key_item::has_interface (Score_element*m) +Key_item::has_interface (Grob*m) { return m && m->has_interface (ly_symbol2scm ("key-signature-interface")); } void -Key_item::set_interface (Score_element*m) +Key_item::set_interface (Grob*m) { m->set_interface (ly_symbol2scm ("key-signature-interface")); } diff --git a/lily/key-performer.cc b/lily/key-performer.cc index a3fecf5267..27144dba57 100644 --- a/lily/key-performer.cc +++ b/lily/key-performer.cc @@ -19,9 +19,9 @@ public: ~Key_performer(); protected: - virtual bool do_try_music (Music* req_l); - virtual void process_acknowledged (); - virtual void do_pre_move_processing (); + virtual bool try_music (Music* req_l); + virtual void create_grobs (); + virtual void stop_translation_timestep (); private: Key_change_req* key_req_l_; @@ -41,7 +41,7 @@ Key_performer::~Key_performer () } void -Key_performer::process_acknowledged () +Key_performer::create_grobs () { if (key_req_l_ && gh_list_p (key_req_l_->get_mus_property ("pitch-alist"))) @@ -54,7 +54,7 @@ Key_performer::process_acknowledged () } void -Key_performer::do_pre_move_processing () +Key_performer::stop_translation_timestep () { if (audio_p_) { @@ -64,7 +64,7 @@ Key_performer::do_pre_move_processing () } bool -Key_performer::do_try_music (Music* req_l) +Key_performer::try_music (Music* req_l) { if (Key_change_req *kc = dynamic_cast (req_l)) { diff --git a/lily/line-group-group-engraver.cc b/lily/line-group-group-engraver.cc index a705daddb6..3bd6c2df54 100644 --- a/lily/line-group-group-engraver.cc +++ b/lily/line-group-group-engraver.cc @@ -22,11 +22,11 @@ Line_group_engraver_group::Line_group_engraver_group() void -Line_group_engraver_group::typeset_element (Score_element *elem) +Line_group_engraver_group::typeset_grob (Grob *elem) { if (!elem->parent_l (Y_AXIS)) Axis_group_interface::add_element (staffline_p_, elem); - Engraver_group_engraver::typeset_element (elem); + Engraver_group_engraver::typeset_grob (elem); } @@ -34,11 +34,11 @@ void Line_group_engraver_group::do_removal_processing() { Engraver_group_engraver::do_removal_processing (); - Score_element * it + Grob * it = unsmob_element (get_property (ly_symbol2scm ("currentCommandColumn"))); staffline_p_->set_bound(RIGHT,it); - Engraver_group_engraver::typeset_element (staffline_p_); + Engraver_group_engraver::typeset_grob (staffline_p_); staffline_p_ = 0; } @@ -46,11 +46,11 @@ void Line_group_engraver_group::do_creation_processing() { create_line_spanner (); - Score_element * it + Grob * it = unsmob_element (get_property (ly_symbol2scm ("currentCommandColumn"))); staffline_p_->set_bound(LEFT,it); - Engraver::announce_element (staffline_p_,0); + Engraver::announce_grob (staffline_p_,0); } void diff --git a/lily/line-of-score.cc b/lily/line-of-score.cc index bb79f780a0..9121d4c0fb 100644 --- a/lily/line-of-score.cc +++ b/lily/line-of-score.cc @@ -27,7 +27,7 @@ fixup_refpoints (SCM s) { for (; gh_pair_p (s); s = gh_cdr (s)) { - Score_element::fixup_refpoint (gh_car (s)); + Grob::fixup_refpoint (gh_car (s)); } } @@ -44,11 +44,11 @@ Line_of_score::Line_of_score(SCM s) int Line_of_score::element_count () const { - return scm_ilength ( get_elt_property ("all-elements")); + return scm_ilength ( get_grob_property ("all-elements")); } void -Line_of_score::typeset_element (Score_element * elem_p) +Line_of_score::typeset_grob (Grob * elem_p) { elem_p->pscore_l_ = pscore_l_; Pointer_group_interface::add_element (this, "all-elements",elem_p); @@ -58,7 +58,7 @@ Line_of_score::typeset_element (Score_element * elem_p) void Line_of_score::output_lines () { - for (SCM s = get_elt_property ("all-elements"); + for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { unsmob_element (gh_car (s))->do_break_processing (); @@ -69,8 +69,8 @@ Line_of_score::output_lines () int count = 0; for (int i=0; i < broken_into_l_arr_.size (); i++) { - Score_element *se = broken_into_l_arr_[i]; - SCM all = se->get_elt_property ("all-elements"); + Grob *se = broken_into_l_arr_[i]; + SCM all = se->get_grob_property ("all-elements"); for (SCM s = all; gh_pair_p (s); s = gh_cdr (s)) { fixup_refpoint (gh_car (s)); @@ -82,10 +82,10 @@ Line_of_score::output_lines () /* needed for doing items. */ - fixup_refpoints (get_elt_property ("all-elements")); + fixup_refpoints (get_grob_property ("all-elements")); - for (SCM s = get_elt_property ("all-elements"); + for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { unsmob_element (gh_car (s))->handle_broken_dependencies (); @@ -112,9 +112,9 @@ Line_of_score::output_lines () if (i < broken_into_l_arr_.size () - 1) { - SCM lastcol = gh_car (line_l->get_elt_property ("columns")); - Score_element* e = unsmob_element (lastcol); - SCM inter = e->get_elt_property ("between-system-string"); + SCM lastcol = gh_car (line_l->get_grob_property ("columns")); + Grob* e = unsmob_element (lastcol); + SCM inter = e->get_grob_property ("between-system-string"); if (gh_string_p (inter)) { pscore_l_->outputter_l_->output_string (inter); @@ -131,8 +131,8 @@ Line_of_score::break_into_pieces (Array const &breaking) { Line_of_score *line_l = dynamic_cast (clone()); line_l->rank_i_ = i; - // line_l->set_immutable_elt_property ("rank", gh_int2scm( i)); - Link_array c (breaking[i].cols_); + // line_l->set_immutable_grob_property ("rank", gh_int2scm( i)); + Link_array c (breaking[i].cols_); pscore_l_->typeset_line (line_l); line_l->set_bound(LEFT,c[0]); @@ -227,15 +227,15 @@ Line_of_score::output_scheme (SCM s) void Line_of_score::add_column (Paper_column*p) { - Score_element *me = this; - SCM cs = me->get_elt_property ("columns"); - Score_element * prev = gh_pair_p (cs) ? unsmob_element (gh_car (cs)) : 0; + Grob *me = this; + SCM cs = me->get_grob_property ("columns"); + Grob * prev = gh_pair_p (cs) ? unsmob_element (gh_car (cs)) : 0; p->rank_i_ = prev ? Paper_column::rank_i (prev) + 1 : 0; - me->set_elt_property ("columns", gh_cons (p->self_scm (), cs)); + me->set_grob_property ("columns", gh_cons (p->self_scm (), cs)); Axis_group_interface::add_element (me, p); } @@ -248,29 +248,29 @@ Line_of_score::add_column (Paper_column*p) void Line_of_score::pre_processing () { - for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) unsmob_element (gh_car (s))->discretionary_processing (); if(verbose_global_b) progress_indication ( _f("Element count %d ", element_count ())); - for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) unsmob_element (gh_car (s))->handle_prebroken_dependencies (); - fixup_refpoints (get_elt_property ("all-elements")); + fixup_refpoints (get_grob_property ("all-elements")); - for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { - Score_element* sc = unsmob_element (gh_car (s)); + Grob* sc = unsmob_element (gh_car (s)); sc->calculate_dependencies (PRECALCED, PRECALCING, ly_symbol2scm ("before-line-breaking-callback")); } progress_indication ("\n" + _ ("Calculating column positions...") + " " ); - for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { - Score_element * e = unsmob_element (gh_car (s)); - SCM proc = e->get_elt_property ("spacing-procedure"); + Grob * e = unsmob_element (gh_car (s)); + SCM proc = e->get_grob_property ("spacing-procedure"); if (gh_procedure_p (proc)) gh_call1 (proc, e->self_scm ()); } @@ -279,10 +279,10 @@ Line_of_score::pre_processing () void Line_of_score::post_processing (bool last_line) { - for (SCM s = get_elt_property ("all-elements"); + for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { - Score_element* sc = unsmob_element (gh_car (s)); + Grob* sc = unsmob_element (gh_car (s)); sc->calculate_dependencies (POSTCALCED, POSTCALCING, ly_symbol2scm ("after-line-breaking-callback")); } @@ -304,7 +304,7 @@ Line_of_score::post_processing (bool last_line) generate all molecules to trigger all font loads. (ugh. This is not very memory efficient.) */ - for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { unsmob_element (gh_car (s))->get_molecule (); } @@ -326,9 +326,9 @@ Line_of_score::post_processing (bool last_line) /* all elements. */ - for (SCM s = get_elt_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = get_grob_property ("all-elements"); gh_pair_p (s); s = gh_cdr (s)) { - Score_element *sc = unsmob_element (gh_car (s)); + Grob *sc = unsmob_element (gh_car (s)); Molecule *m = sc->get_molecule (); if (!m) continue; @@ -336,7 +336,7 @@ Line_of_score::post_processing (bool last_line) Offset o (sc->relative_coordinate (this, X_AXIS), sc->relative_coordinate (this, Y_AXIS)); - SCM e = sc->get_elt_property ("extra-offset"); + SCM e = sc->get_grob_property ("extra-offset"); if (gh_pair_p (e)) { o[X_AXIS] += gh_scm2double (gh_car (e)); @@ -363,7 +363,7 @@ Line_of_score::broken_col_range (Item const*l, Item const*r) const l = l->column_l (); r = r->column_l (); - SCM s = get_elt_property ("columns"); + SCM s = get_grob_property ("columns"); while (gh_pair_p (s) && gh_car (s) != r->self_scm ()) s = gh_cdr (s); @@ -388,11 +388,11 @@ Line_of_score::broken_col_range (Item const*l, Item const*r) const Return all columns, but filter out any unused columns , since they might disrupt the spacing problem. */ -Link_array +Link_array Line_of_score::column_l_arr ()const { - Link_array acs - = Pointer_group_interface__extract_elements (this, (Score_element*) 0, "columns"); + Link_array acs + = Pointer_group_interface__extract_elements (this, (Grob*) 0, "columns"); bool bfound = false; for (int i= acs.size (); i -- ; ) { diff --git a/lily/local-key-engraver.cc b/lily/local-key-engraver.cc index 487bf47311..899dc22996 100644 --- a/lily/local-key-engraver.cc +++ b/lily/local-key-engraver.cc @@ -32,10 +32,10 @@ struct Local_key_engraver : Engraver { protected: VIRTUAL_COPY_CONS(Translator); void deprecated_process_music(); - virtual void acknowledge_element (Score_element_info); - virtual void do_pre_move_processing(); + virtual void acknowledge_grob (Grob_info); + virtual void stop_translation_timestep(); virtual void do_creation_processing (); - virtual void process_acknowledged (); + virtual void create_grobs (); virtual void do_removal_processing (); public: @@ -46,12 +46,12 @@ public: Urgh. Since the accidentals depend on lots of variables, we have to store all information before we can really create the accidentals. */ - Link_array arpeggios_; + Link_array arpeggios_; Link_array mel_l_arr_; - Link_array support_l_arr_; + Link_array support_l_arr_; Link_array forced_l_arr_; - Link_array tied_l_arr_; + Link_array tied_l_arr_; Local_key_engraver(); Item * grace_align_l_; @@ -72,7 +72,7 @@ Local_key_engraver::do_creation_processing () } void -Local_key_engraver::process_acknowledged () +Local_key_engraver::create_grobs () { deprecated_process_music (); @@ -82,7 +82,7 @@ Local_key_engraver::process_acknowledged () for (int i=0; i < mel_l_arr_.size(); i++) { - Score_element * support_l = support_l_arr_[i]; + Grob * support_l = support_l_arr_[i]; Note_req * note_l = mel_l_arr_[i]; int n = unsmob_pitch (note_l->get_mus_property ("pitch"))->notename_i_; @@ -111,7 +111,7 @@ Local_key_engraver::process_acknowledged () Staff_symbol_referencer::set_interface (key_item_p_); - announce_element (key_item_p_, 0); + announce_grob (key_item_p_, 0); } @@ -182,14 +182,14 @@ Local_key_engraver::do_removal_processing () } void -Local_key_engraver::do_pre_move_processing() +Local_key_engraver::stop_translation_timestep() { if (key_item_p_) { for (int i=0; i < support_l_arr_.size(); i++) Side_position::add_support (key_item_p_,support_l_arr_[i]); - typeset_element (key_item_p_); + typeset_grob (key_item_p_); key_item_p_ =0; } @@ -202,12 +202,12 @@ Local_key_engraver::do_pre_move_processing() } void -Local_key_engraver::acknowledge_element (Score_element_info info) +Local_key_engraver::acknowledge_grob (Grob_info info) { SCM wg= get_property ("weAreGraceContext"); bool selfgr = gh_boolean_p (wg) &&gh_scm2bool (wg); - bool he_gr = to_boolean (info.elem_l_->get_elt_property ("grace")); + bool he_gr = to_boolean (info.elem_l_->get_grob_property ("grace")); Item * item = dynamic_cast (info.elem_l_); if (he_gr && !selfgr && item && Grace_align_item::has_interface (item)) diff --git a/lily/local-key-item.cc b/lily/local-key-item.cc index 47e3c4180e..26ea3f2ec7 100644 --- a/lily/local-key-item.cc +++ b/lily/local-key-item.cc @@ -33,9 +33,9 @@ ADD_SCM_INIT_FUNC(lkpitch,init_pitch_funcs); void -Local_key_item::add_pitch (Score_element*me, Pitch p, bool cautionary, bool natural) +Local_key_item::add_pitch (Grob*me, Pitch p, bool cautionary, bool natural) { - SCM acs = me->get_elt_property ("accidentals"); + SCM acs = me->get_grob_property ("accidentals"); SCM pitch = p.smobbed_copy (); SCM opts = SCM_EOL; if (cautionary) @@ -46,11 +46,11 @@ Local_key_item::add_pitch (Score_element*me, Pitch p, bool cautionary, bool natu pitch = gh_cons (pitch, opts); acs = scm_merge_x (acs, gh_cons (pitch, SCM_EOL), pitch_less_proc); - me->set_elt_property ("accidentals", acs); + me->set_grob_property ("accidentals", acs); } Molecule -Local_key_item::parenthesize (Score_element*me, Molecule m) +Local_key_item::parenthesize (Grob*me, Molecule m) { Molecule open = Font_interface::get_default_font (me)->find_by_name (String ("accidentals-(")); Molecule close = Font_interface::get_default_font (me)->find_by_name (String ("accidentals-)")); @@ -69,7 +69,7 @@ MAKE_SCHEME_CALLBACK(Local_key_item,brew_molecule,1); SCM Local_key_item::brew_molecule (SCM smob) { - Score_element* me = unsmob_element (smob); + Grob* me = unsmob_element (smob); Molecule mol; @@ -78,7 +78,7 @@ Local_key_item::brew_molecule (SCM smob) bool oct_b = false; int lastoct = -100; - SCM accs = me->get_elt_property ("accidentals"); + SCM accs = me->get_grob_property ("accidentals"); for (SCM s = accs; gh_pair_p (s); s = gh_cdr (s)) { @@ -100,7 +100,7 @@ Local_key_item::brew_molecule (SCM smob) lastoct = p.octave_i () ; - SCM c0 = me->get_elt_property ("c0-position"); + SCM c0 = me->get_grob_property ("c0-position"); Real dy = (gh_number_p (c0) ? gh_scm2int (c0) : 0 + p.notename_i_) * note_distance; @@ -135,8 +135,8 @@ Local_key_item::brew_molecule (SCM smob) /* Use a cons? */ - pads[RIGHT] = me->get_elt_property ("right-padding"); - pads[LEFT] = me->get_elt_property ("left-padding"); + pads[RIGHT] = me->get_grob_property ("right-padding"); + pads[LEFT] = me->get_grob_property ("left-padding"); // unused ? @@ -156,12 +156,12 @@ Local_key_item::brew_molecule (SCM smob) } bool -Local_key_item::has_interface (Score_element*m) +Local_key_item::has_interface (Grob*m) { return m && m->has_interface (ly_symbol2scm ("accidentals-interface")); } void -Local_key_item::set_interface (Score_element*m) +Local_key_item::set_interface (Grob*m) { m->set_interface (ly_symbol2scm ("accidentals-interface")); } diff --git a/lily/lyric-engraver.cc b/lily/lyric-engraver.cc index 3360f0a3ec..5c1117637c 100644 --- a/lily/lyric-engraver.cc +++ b/lily/lyric-engraver.cc @@ -24,7 +24,7 @@ Lyric_engraver::Lyric_engraver() } bool -Lyric_engraver::do_try_music (Music*r) +Lyric_engraver::try_music (Music*r) { if (Lyric_req* l = dynamic_cast (r)) { @@ -43,7 +43,7 @@ Lyric_engraver::deprecated_process_music() { text_p_= new Item (get_property ("LyricText")); - text_p_->set_elt_property ("text", req_l_->get_mus_property ("text")); + text_p_->set_grob_property ("text", req_l_->get_mus_property ("text")); /* We can't reach the notehead where we're centered from here. So @@ -54,23 +54,23 @@ Lyric_engraver::deprecated_process_music() text_p_->translate_axis (0.66, X_AXIS); - announce_element (text_p_, req_l_); + announce_grob (text_p_, req_l_); req_l_ = 0; } } void -Lyric_engraver::do_pre_move_processing() +Lyric_engraver::stop_translation_timestep() { if (text_p_) { - typeset_element (text_p_); + typeset_grob (text_p_); text_p_ =0; } } void -Lyric_engraver::do_post_move_processing () +Lyric_engraver::start_translation_timestep () { req_l_ =0; } diff --git a/lily/lyric-extender.cc b/lily/lyric-extender.cc index 7de58843b4..3deeb0e24b 100644 --- a/lily/lyric-extender.cc +++ b/lily/lyric-extender.cc @@ -28,26 +28,26 @@ Lyric_extender::brew_molecule (SCM smob) Real ss = 1.0; Real sl = sp->paper_l ()->get_var ("stafflinethickness"); Real righttrim = 0.5; // default to half a space gap on the right - SCM righttrim_scm = sp->get_elt_property("right-trim-amount"); + SCM righttrim_scm = sp->get_grob_property("right-trim-amount"); if (gh_number_p (righttrim_scm)) { righttrim = gh_scm2double (righttrim_scm); } // The extender can exist in the word space of the left lyric ... - SCM space = sp->get_bound (LEFT)->get_elt_property ("word-space"); + SCM space = sp->get_bound (LEFT)->get_grob_property ("word-space"); if (gh_number_p (space)) { leftext -= gh_scm2double (space)*ss; } Real w = sp->spanner_length () - leftext - righttrim*ss; - Real h = sl * gh_scm2double (sp->get_elt_property ("height")); + Real h = sl * gh_scm2double (sp->get_grob_property ("height")); Molecule mol (Lookup::filledbox ( Box (Interval (0,w), Interval (0,h)))); mol.translate (Offset (leftext, 0)); return mol.smobbed_copy(); } void -Lyric_extender::set_textitem (Direction d, Score_element*s) +Lyric_extender::set_textitem (Direction d, Grob*s) { elt_l_->set_bound (d, s); elt_l_->add_dependency (s); diff --git a/lily/lyric-performer.cc b/lily/lyric-performer.cc index 3d34dbf047..4ecb789cab 100644 --- a/lily/lyric-performer.cc +++ b/lily/lyric-performer.cc @@ -19,9 +19,9 @@ public: protected: - virtual bool do_try_music (Music* req_l); - virtual void do_pre_move_processing (); - virtual void process_acknowledged (); + virtual bool try_music (Music* req_l); + virtual void stop_translation_timestep (); + virtual void create_grobs (); private: Link_array lreq_arr_; @@ -37,7 +37,7 @@ Lyric_performer::Lyric_performer () void -Lyric_performer::process_acknowledged () +Lyric_performer::create_grobs () { // FIXME: won't work with fancy lyrics if (lreq_arr_.size () @@ -53,7 +53,7 @@ Lyric_performer::process_acknowledged () } void -Lyric_performer::do_pre_move_processing () +Lyric_performer::stop_translation_timestep () { if (audio_p_) { @@ -64,7 +64,7 @@ Lyric_performer::do_pre_move_processing () } bool -Lyric_performer::do_try_music (Music* req_l) +Lyric_performer::try_music (Music* req_l) { if (Lyric_req *lr = dynamic_cast (req_l)) { diff --git a/lily/lyric-phrasing-engraver.cc b/lily/lyric-phrasing-engraver.cc index 26b2a97452..958655daad 100644 --- a/lily/lyric-phrasing-engraver.cc +++ b/lily/lyric-phrasing-engraver.cc @@ -101,7 +101,7 @@ Lyric_phrasing_engraver::lookup_context_id(const String &context_id) void Lyric_phrasing_engraver::record_notehead(const String &context_id, - Score_element * notehead) + Grob * notehead) { Syllable_group * v = lookup_context_id(context_id); v->set_notehead(notehead); @@ -110,14 +110,14 @@ Lyric_phrasing_engraver::record_notehead(const String &context_id, } void -Lyric_phrasing_engraver::record_lyric(const String &context_id, Score_element * lyric) +Lyric_phrasing_engraver::record_lyric(const String &context_id, Grob * lyric) { Syllable_group * v = lookup_context_id(context_id); v->add_lyric(lyric); } void -Lyric_phrasing_engraver::record_extender(const String &context_id, Score_element * extender) +Lyric_phrasing_engraver::record_extender(const String &context_id, Grob * extender) { SCM key = ly_str02scm(context_id.ch_C()); if( ! gh_null_p(voice_alist_) ) { @@ -142,19 +142,19 @@ Lyric_phrasing_engraver::record_melisma(const String &context_id) } void -Lyric_phrasing_engraver::acknowledge_element(Score_element_info i) +Lyric_phrasing_engraver::acknowledge_grob(Grob_info i) { SCM p = get_property("automaticPhrasing"); if(!to_boolean(p)) return; - Score_element *h = i.elem_l_; + Grob *h = i.elem_l_; if (Note_head::has_interface(h)) { /* caught a note head ... do something with it */ /* ... but not if it's a grace note ... */ - bool grace= to_boolean (i.elem_l_->get_elt_property ("grace")); + bool grace= to_boolean (i.elem_l_->get_grob_property ("grace")); SCM wg = get_property ("weAreGraceContext"); bool wgb = to_boolean (wg); if (grace != wgb) @@ -233,7 +233,7 @@ trim_suffix(String &id) } -void Lyric_phrasing_engraver::process_acknowledged () +void Lyric_phrasing_engraver::create_grobs () { /* iterate through entries in voice_alist_ for each, call set_lyric_align(alignment). Issue a warning if this returns false. @@ -271,7 +271,7 @@ void Lyric_phrasing_engraver::process_acknowledged () void -Lyric_phrasing_engraver::do_pre_move_processing () +Lyric_phrasing_engraver::stop_translation_timestep () { for(SCM v=voice_alist_; gh_pair_p(v); v = gh_cdr(v)) { SCM entry_scm = gh_cdar(v); diff --git a/lily/mark-engraver.cc b/lily/mark-engraver.cc index a739c21d60..d872f5cc53 100644 --- a/lily/mark-engraver.cc +++ b/lily/mark-engraver.cc @@ -34,14 +34,14 @@ protected: Item* text_p_; protected: - virtual void do_pre_move_processing (); - virtual void acknowledge_element (Score_element_info); + virtual void stop_translation_timestep (); + virtual void acknowledge_grob (Grob_info); void create_items(Request*); - virtual bool do_try_music (Music *req_l); + virtual bool try_music (Music *req_l); void deprecated_process_music (); - virtual void do_post_move_processing (); + virtual void start_translation_timestep (); virtual void do_creation_processing (); - virtual void process_acknowledged (); + virtual void create_grobs (); private: Mark_req * mark_req_l_; @@ -65,11 +65,11 @@ Mark_engraver::do_creation_processing () void -Mark_engraver::acknowledge_element (Score_element_info inf) +Mark_engraver::acknowledge_grob (Grob_info inf) { - Score_element * s = inf.elem_l_; + Grob * s = inf.elem_l_; if (Staff_symbol::has_interface (s) - || to_boolean (s->get_elt_property ("invisible-staff"))) + || to_boolean (s->get_grob_property ("invisible-staff"))) { SCM sts = get_property ("staffsFound"); SCM thisstaff = inf.elem_l_->self_scm (); @@ -87,12 +87,12 @@ Mark_engraver::acknowledge_element (Score_element_info inf) } void -Mark_engraver::do_pre_move_processing () +Mark_engraver::stop_translation_timestep () { if (text_p_) { - text_p_->set_elt_property("side-support-elements" , get_property ("staffsFound")); - typeset_element (text_p_); + text_p_->set_grob_property("side-support-elements" , get_property ("staffsFound")); + typeset_grob (text_p_); text_p_ =0; } } @@ -110,19 +110,19 @@ Mark_engraver::create_items (Request *rq) Side_position::set_axis (text_p_, Y_AXIS); - announce_element (text_p_, rq); + announce_grob (text_p_, rq); } void -Mark_engraver::do_post_move_processing () +Mark_engraver::start_translation_timestep () { mark_req_l_ = 0; } bool -Mark_engraver::do_try_music (Music* r_l) +Mark_engraver::try_music (Music* r_l) { if (Mark_req *mr = dynamic_cast (r_l)) { @@ -137,7 +137,7 @@ Mark_engraver::do_try_music (Music* r_l) } void -Mark_engraver::process_acknowledged () +Mark_engraver::create_grobs () { deprecated_process_music (); } @@ -187,7 +187,7 @@ Mark_engraver::deprecated_process_music () daddy_trans_l_->set_property ("rehearsalMark", m); - text_p_->set_elt_property ("text", + text_p_->set_grob_property ("text", ly_str02scm ( t.ch_C())); String style = "mark"; @@ -199,8 +199,8 @@ Mark_engraver::deprecated_process_music () break; } } - SCM st = ly_str02scm (style.ch_C()); - text_p_->set_elt_property ("style", st); + SCM st = ly_symbol2scm (style.ch_C()); + text_p_->set_grob_property ("style", st); } } diff --git a/lily/melisma-engraver.cc b/lily/melisma-engraver.cc index e51baf0cfb..6f44501411 100644 --- a/lily/melisma-engraver.cc +++ b/lily/melisma-engraver.cc @@ -9,7 +9,7 @@ #include "engraver.hh" #include "musical-request.hh" -#include "score-element.hh" +#include "grob.hh" #include "translator-group.hh" /** @@ -19,13 +19,13 @@ class Melisma_engraver:public Engraver { public: VIRTUAL_COPY_CONS(Translator); - bool do_try_music (Music *); + bool try_music (Music *); }; ADD_THIS_TRANSLATOR(Melisma_engraver); bool -Melisma_engraver::do_try_music (Music *m ) +Melisma_engraver::try_music (Music *m ) { if (dynamic_cast(m)) { diff --git a/lily/multi-measure-rest-engraver.cc b/lily/multi-measure-rest-engraver.cc index 58e38470da..581b4453e8 100644 --- a/lily/multi-measure-rest-engraver.cc +++ b/lily/multi-measure-rest-engraver.cc @@ -29,13 +29,13 @@ public: Multi_measure_rest_engraver (); protected: - virtual void acknowledge_element (Score_element_info i); + virtual void acknowledge_grob (Grob_info i); void deprecated_process_music (); - virtual bool do_try_music (Music*); - virtual void do_pre_move_processing (); - virtual void do_post_move_processing (); + virtual bool try_music (Music*); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); virtual void do_removal_processing (); - virtual void process_acknowledged (); + virtual void create_grobs (); private: Span_req * new_req_l_; @@ -58,7 +58,7 @@ Multi_measure_rest_engraver::Multi_measure_rest_engraver () } void -Multi_measure_rest_engraver::acknowledge_element (Score_element_info i) +Multi_measure_rest_engraver::acknowledge_grob (Grob_info i) { Item * item = dynamic_cast (i.elem_l_); if (item && Bar::has_interface (item)) @@ -71,7 +71,7 @@ Multi_measure_rest_engraver::acknowledge_element (Score_element_info i) } bool -Multi_measure_rest_engraver::do_try_music (Music* req_l) +Multi_measure_rest_engraver::try_music (Music* req_l) { if (Span_req * sp = dynamic_cast (req_l)) { @@ -94,7 +94,7 @@ Multi_measure_rest_engraver::do_try_music (Music* req_l) } void -Multi_measure_rest_engraver::process_acknowledged () +Multi_measure_rest_engraver::create_grobs () { deprecated_process_music (); } @@ -128,30 +128,30 @@ Multi_measure_rest_engraver::deprecated_process_music () Multi_measure_rest::set_interface (mmrest_p_); Staff_symbol_referencer::set_interface (mmrest_p_); - announce_element (mmrest_p_, busy_span_req_l_); + announce_grob (mmrest_p_, busy_span_req_l_); start_measure_i_ = gh_scm2int (get_property ("currentBarNumber")); } } void -Multi_measure_rest_engraver::do_pre_move_processing () +Multi_measure_rest_engraver::stop_translation_timestep () { SCM smp = get_property ("measurePosition"); Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0); if (mmrest_p_ && (now_mom () >= start_moment_) && !mp - && (scm_ilength (mmrest_p_->get_elt_property ("columns")) >= 2)) + && (scm_ilength (mmrest_p_->get_grob_property ("columns")) >= 2)) { - typeset_element (mmrest_p_); + typeset_grob (mmrest_p_); /* must keep mmrest_p_ around to set measures_i_ */ } if (lastrest_p_) { - typeset_element (lastrest_p_); + typeset_grob (lastrest_p_); lastrest_p_ = 0; } @@ -164,7 +164,7 @@ Multi_measure_rest_engraver::do_pre_move_processing () } void -Multi_measure_rest_engraver::do_post_move_processing () +Multi_measure_rest_engraver::start_translation_timestep () { SCM smp = get_property ("measurePosition"); Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0); @@ -173,7 +173,7 @@ Multi_measure_rest_engraver::do_post_move_processing () { lastrest_p_ = mmrest_p_; int cur = gh_scm2int (get_property ("currentBarNumber")); - lastrest_p_->set_elt_property ("measure-count", + lastrest_p_->set_grob_property ("measure-count", gh_int2scm (cur - start_measure_i_)); mmrest_p_ = 0; } @@ -184,7 +184,7 @@ void Multi_measure_rest_engraver::do_removal_processing () { if (mmrest_p_) - typeset_element (mmrest_p_); + typeset_grob (mmrest_p_); if (lastrest_p_) - typeset_element (lastrest_p_); + typeset_grob (lastrest_p_); } diff --git a/lily/multi-measure-rest.cc b/lily/multi-measure-rest.cc index c6e143d329..4eccf4074b 100644 --- a/lily/multi-measure-rest.cc +++ b/lily/multi-measure-rest.cc @@ -21,13 +21,13 @@ #include "text-item.hh" void -Multi_measure_rest::set_interface (Score_element*me) +Multi_measure_rest::set_interface (Grob*me) { me->set_interface (ly_symbol2scm ("multi-measure-rest-interface")); } bool -Multi_measure_rest::has_interface (Score_element*me) +Multi_measure_rest::has_interface (Grob*me) { return me->has_interface (ly_symbol2scm ("multi-measure-rest-interface")); } @@ -40,7 +40,7 @@ MAKE_SCHEME_CALLBACK(Multi_measure_rest,brew_molecule,1); SCM Multi_measure_rest::brew_molecule (SCM smob) { - Score_element *me = unsmob_element (smob); + Grob *me = unsmob_element (smob); Spanner * sp = dynamic_cast (me); SCM alist_chain = Font_interface::font_alist_chain (me); @@ -85,14 +85,14 @@ Multi_measure_rest::brew_molecule (SCM smob) Molecule s; int measures = 1; - SCM m (me->get_elt_property ("measure-count")); + SCM m (me->get_grob_property ("measure-count")); if (gh_number_p (m)) { measures = gh_scm2int (m); } - SCM limit = me->get_elt_property ("expand-limit"); + SCM limit = me->get_grob_property ("expand-limit"); if (measures <= gh_scm2int (limit)) { /* @@ -120,7 +120,7 @@ Multi_measure_rest::brew_molecule (SCM smob) } Real pad = s.empty_b () - ? 0.0 : gh_scm2double (me->get_elt_property ("padding")) * staff_space; + ? 0.0 : gh_scm2double (me->get_grob_property ("padding")) * staff_space; Molecule r (musfont->find_by_name ("rests-" + to_str (k))); if (k == 0) @@ -157,7 +157,7 @@ Multi_measure_rest::brew_molecule (SCM smob) UGH. JUNKME elt prop "columns" isn't really needed. */ void -Multi_measure_rest::add_column (Score_element*me,Item* c) +Multi_measure_rest::add_column (Grob*me,Item* c) { Pointer_group_interface::add_element (me, "columns",c); @@ -170,7 +170,7 @@ MAKE_SCHEME_CALLBACK (Multi_measure_rest, set_spacing_rods,1); SCM Multi_measure_rest::set_spacing_rods (SCM smob) { - Score_element*me = unsmob_element (smob); + Grob*me = unsmob_element (smob); Spanner*sp = dynamic_cast (me); if (!(sp->get_bound (LEFT) && sp->get_bound (RIGHT))) @@ -202,7 +202,7 @@ Multi_measure_rest::set_spacing_rods (SCM smob) should do something more advanced. */ rod.distance_f_ = l->extent (l, X_AXIS)[BIGGER] - r->extent (r, X_AXIS)[SMALLER] - + gh_scm2double (me->get_elt_property ("minimum-width")) * staff_space; + + gh_scm2double (me->get_grob_property ("minimum-width")) * staff_space; rod.add_to_cols (); } diff --git a/lily/music-iterator-ctor.cc b/lily/music-iterator-ctor.cc index 28572ddd31..bb13173717 100644 --- a/lily/music-iterator-ctor.cc +++ b/lily/music-iterator-ctor.cc @@ -1,5 +1,5 @@ /* - score-element-callback.cc -- implement Callback smob. + grob-callback.cc -- implement Callback smob. source file of the GNU LilyPond music typesetter diff --git a/lily/note-column.cc b/lily/note-column.cc index 10956eefbb..142b5ea769 100644 --- a/lily/note-column.cc +++ b/lily/note-column.cc @@ -18,16 +18,16 @@ #include "note-head.hh" bool -Note_column::rest_b (Score_element*me) +Note_column::rest_b (Grob*me) { - return unsmob_element (me->get_elt_property ("rest")); + return unsmob_element (me->get_grob_property ("rest")); } int -Note_column::shift_compare (Score_element *const &p1, Score_element *const&p2) +Note_column::shift_compare (Grob *const &p1, Grob *const&p2) { - SCM s1 = p1->get_elt_property ("horizontal-shift"); - SCM s2 = p2->get_elt_property ("horizontal-shift"); + SCM s1 = p1->get_grob_property ("horizontal-shift"); + SCM s2 = p2->get_grob_property ("horizontal-shift"); int h1 = (gh_number_p (s1))? gh_scm2int (s1) :0; int h2 = (gh_number_p (s2)) ? gh_scm2int (s2):0; @@ -35,9 +35,9 @@ Note_column::shift_compare (Score_element *const &p1, Score_element *const&p2) } void -Note_column::set_interface (Score_element* me) +Note_column::set_interface (Grob* me) { - me->set_elt_property ("note-heads", SCM_EOL); + me->set_grob_property ("note-heads", SCM_EOL); me->set_interface (ly_symbol2scm ("note-column-interface")); Axis_group_interface::set_interface (me); @@ -45,23 +45,23 @@ Note_column::set_interface (Score_element* me) } Item * -Note_column::stem_l (Score_element*me) +Note_column::stem_l (Grob*me) { - SCM s = me->get_elt_property ("stem"); + SCM s = me->get_grob_property ("stem"); return dynamic_cast(unsmob_element (s)); } Slice -Note_column::head_positions_interval(Score_element *me) +Note_column::head_positions_interval(Grob *me) { Slice iv; iv.set_empty (); - SCM h = me->get_elt_property ("note-heads"); + SCM h = me->get_grob_property ("note-heads"); for (; gh_pair_p (h); h = gh_cdr (h)) { - Score_element *se = unsmob_element (gh_car (h)); + Grob *se = unsmob_element (gh_car (h)); int j = int (Staff_symbol_referencer::position_f (se)); iv.unite (Slice (j,j)); @@ -70,12 +70,12 @@ Note_column::head_positions_interval(Score_element *me) } Direction -Note_column::dir (Score_element* me) +Note_column::dir (Grob* me) { - Score_element *stem = unsmob_element (me->get_elt_property ("stem")); + Grob *stem = unsmob_element (me->get_grob_property ("stem")); if (stem && Stem::has_interface (stem)) return Stem::get_direction (stem); - else if (gh_pair_p (me->get_elt_property ("note-heads"))) + else if (gh_pair_p (me->get_grob_property ("note-heads"))) return (Direction)sign (head_positions_interval (me).center ()); programming_error ("Note column without heads and stem!"); @@ -84,19 +84,19 @@ Note_column::dir (Score_element* me) void -Note_column::set_stem (Score_element*me,Score_element * stem_l) +Note_column::set_stem (Grob*me,Grob * stem_l) { - me->set_elt_property ("stem", stem_l->self_scm ()); + me->set_grob_property ("stem", stem_l->self_scm ()); me->add_dependency (stem_l); Axis_group_interface::add_element (me, stem_l); } void -Note_column::add_head (Score_element*me,Score_element *h) +Note_column::add_head (Grob*me,Grob *h) { if (Rest::has_interface (h)) { - me->set_elt_property ("rest", h->self_scm ()); + me->set_grob_property ("rest", h->self_scm ()); } else if (Note_head::has_interface (h)) { @@ -109,9 +109,9 @@ Note_column::add_head (Score_element*me,Score_element *h) translate the rest symbols vertically by amount DY_I. */ void -Note_column::translate_rests (Score_element*me,int dy_i) +Note_column::translate_rests (Grob*me,int dy_i) { - Score_element * r = unsmob_element (me->get_elt_property ("rest")); + Grob * r = unsmob_element (me->get_grob_property ("rest")); if (r) { r->translate_axis (dy_i * Staff_symbol_referencer::staff_space (r)/2.0, Y_AXIS); @@ -120,7 +120,7 @@ Note_column::translate_rests (Score_element*me,int dy_i) void -Note_column::set_dotcol (Score_element*me,Score_element *d) +Note_column::set_dotcol (Grob*me,Grob *d) { Axis_group_interface::add_element (me, d); } @@ -128,15 +128,15 @@ Note_column::set_dotcol (Score_element*me,Score_element *d) -Score_element* -Note_column::first_head (Score_element*me) +Grob* +Note_column::first_head (Grob*me) { - Score_element * st = stem_l (me); + Grob * st = stem_l (me); return st? Stem::first_head (st): 0; } bool -Note_column::has_interface (Score_element*me) +Note_column::has_interface (Grob*me) { return me && me->has_interface (ly_symbol2scm ("note-column-interface")); } diff --git a/lily/note-head.cc b/lily/note-head.cc index 2d9b47806e..7c399f9d85 100644 --- a/lily/note-head.cc +++ b/lily/note-head.cc @@ -20,7 +20,7 @@ build a ledger line for small pieces. */ Molecule -Note_head::ledger_line (Interval xwid, Score_element *me) +Note_head::ledger_line (Interval xwid, Grob *me) { Drul_array endings; endings[LEFT] = Font_interface::get_default_font (me)->find_by_name ("noteheads-ledgerending"); @@ -55,7 +55,7 @@ MAKE_SCHEME_CALLBACK(Note_head,brew_molecule,1); SCM Note_head::brew_molecule (SCM smob) { - Score_element *me = unsmob_element (smob); + Grob *me = unsmob_element (smob); Real inter_f = Staff_symbol_referencer::staff_space (me)/2; @@ -65,7 +65,7 @@ Note_head::brew_molecule (SCM smob) ? 0 : (abs(p) - sz) /2; - SCM style = me->get_elt_property ("style"); + SCM style = me->get_grob_property ("style"); if (!gh_symbol_p (style)) { return SCM_EOL; @@ -74,7 +74,7 @@ Note_head::brew_molecule (SCM smob) // ugh: use gh_call () Molecule out = Font_interface::get_default_font (me)->find_by_name (String ("noteheads-") + ly_scm2string (scm_eval2 (gh_list (ly_symbol2scm("find-notehead-symbol"), - me->get_elt_property ("duration-log"), + me->get_grob_property ("duration-log"), ly_quote_scm(style), SCM_UNDEFINED), SCM_EOL))); @@ -105,7 +105,7 @@ Note_head::brew_molecule (SCM smob) } bool -Note_head::has_interface (Score_element*m) +Note_head::has_interface (Grob*m) { return m&& m->has_interface (ly_symbol2scm ("note-head-interface")); } diff --git a/lily/note-heads-engraver.cc b/lily/note-heads-engraver.cc index 8fdbd9b4c8..4b009d6081 100644 --- a/lily/note-heads-engraver.cc +++ b/lily/note-heads-engraver.cc @@ -28,12 +28,12 @@ public: Note_heads_engraver(); protected: - virtual void do_post_move_processing (); - virtual bool do_try_music (Music *req_l) ; - virtual void process_acknowledged (); - virtual void acknowledge_element (Score_element_info) ; + virtual void start_translation_timestep (); + virtual bool try_music (Music *req_l) ; + virtual void create_grobs (); + virtual void acknowledge_grob (Grob_info) ; void deprecated_process_music(); - virtual void do_pre_move_processing(); + virtual void stop_translation_timestep(); }; @@ -45,7 +45,7 @@ Note_heads_engraver::Note_heads_engraver() } bool -Note_heads_engraver::do_try_music (Music *m) +Note_heads_engraver::try_music (Music *m) { if (Note_req * n =dynamic_cast (m)) { @@ -63,13 +63,13 @@ Note_heads_engraver::do_try_music (Music *m) } void -Note_heads_engraver::process_acknowledged () +Note_heads_engraver::create_grobs () { deprecated_process_music (); } void -Note_heads_engraver::acknowledge_element (Score_element_info) +Note_heads_engraver::acknowledge_grob (Grob_info) { //deprecated_process_music (); } @@ -91,7 +91,7 @@ Note_heads_engraver::deprecated_process_music() Music * req = note_req_l_arr_[i]; Duration dur = *unsmob_duration (req->get_mus_property ("duration")); - note_p->set_elt_property ("duration-log", + note_p->set_grob_property ("duration-log", gh_int2scm (dur.duration_log () get_elt_property ("dot-count"))) - d->set_elt_property ("dot-count", gh_int2scm (dur.dot_count ())); + != gh_scm2int (d->get_grob_property ("dot-count"))) + d->set_grob_property ("dot-count", gh_int2scm (dur.dot_count ())); d->set_parent (note_p, Y_AXIS); - announce_element (d,0); + announce_grob (d,0); dot_p_arr_.push (d); } - note_p->set_elt_property("staff-position", gh_int2scm (unsmob_pitch (req->get_mus_property ("pitch"))->steps ())); + note_p->set_grob_property("staff-position", gh_int2scm (unsmob_pitch (req->get_mus_property ("pitch"))->steps ())); - announce_element (note_p,req); + announce_grob (note_p,req); note_p_arr_.push (note_p); } } void -Note_heads_engraver::do_pre_move_processing() +Note_heads_engraver::stop_translation_timestep() { for (int i=0; i < note_p_arr_.size (); i++) { - typeset_element (note_p_arr_[i]); + typeset_grob (note_p_arr_[i]); } note_p_arr_.clear (); for (int i=0; i < dot_p_arr_.size (); i++) { - typeset_element (dot_p_arr_[i]); + typeset_grob (dot_p_arr_[i]); } dot_p_arr_.clear (); @@ -133,7 +133,7 @@ Note_heads_engraver::do_pre_move_processing() } void -Note_heads_engraver::do_post_move_processing () +Note_heads_engraver::start_translation_timestep () { /* TODO:make this settable? */ diff --git a/lily/note-name-engraver.cc b/lily/note-name-engraver.cc index 17fa147b21..3a76ba6ae0 100644 --- a/lily/note-name-engraver.cc +++ b/lily/note-name-engraver.cc @@ -17,13 +17,13 @@ public: VIRTUAL_COPY_CONS(Translator); Link_array req_l_arr_; Link_array texts_; - virtual bool do_try_music (Music*m); + virtual bool try_music (Music*m); void deprecated_process_music (); - virtual void do_pre_move_processing (); + virtual void stop_translation_timestep (); }; bool -Note_name_engraver::do_try_music (Music *m) +Note_name_engraver::try_music (Music *m) { if (Note_req *r = dynamic_cast (m)) { @@ -49,18 +49,18 @@ Note_name_engraver::deprecated_process_music () if (s.length_i()) { Item * t = new Item (get_property ("NoteName")); - t->set_elt_property ("text", ly_str02scm ( s.ch_C())); - announce_element (t, req_l_arr_[0]); + t->set_grob_property ("text", ly_str02scm ( s.ch_C())); + announce_grob (t, req_l_arr_[0]); texts_.push (t); } } void -Note_name_engraver::do_pre_move_processing () +Note_name_engraver::stop_translation_timestep () { for (int i=0; i < texts_.size (); i++) { - typeset_element (texts_[i]); + typeset_grob (texts_[i]); } texts_.clear() ; req_l_arr_.clear (); diff --git a/lily/note-performer.cc b/lily/note-performer.cc index f6e74e7f22..6d51326aa2 100644 --- a/lily/note-performer.cc +++ b/lily/note-performer.cc @@ -21,10 +21,10 @@ public: VIRTUAL_COPY_CONS(Translator); protected: - virtual bool do_try_music (Music *req_l) ; + virtual bool try_music (Music *req_l) ; - virtual void do_pre_move_processing (); - virtual void process_acknowledged (); + virtual void stop_translation_timestep (); + virtual void create_grobs (); Global_translator* global_translator_l (); private: @@ -36,7 +36,7 @@ private: ADD_THIS_TRANSLATOR (Note_performer); void -Note_performer::process_acknowledged () +Note_performer::create_grobs () { if (note_req_l_arr_.size ()) { @@ -76,7 +76,7 @@ Note_performer::global_translator_l () void -Note_performer::do_pre_move_processing () +Note_performer::stop_translation_timestep () { // why don't grace notes show up here? @@ -116,7 +116,7 @@ Note_performer::do_pre_move_processing () } bool -Note_performer::do_try_music (Music* req_l) +Note_performer::try_music (Music* req_l) { if (Note_req *nr = dynamic_cast (req_l)) { diff --git a/lily/output-property-engraver.cc b/lily/output-property-engraver.cc index 9f0338afe3..d12b6530fc 100644 --- a/lily/output-property-engraver.cc +++ b/lily/output-property-engraver.cc @@ -8,7 +8,7 @@ */ #include "engraver.hh" -#include "score-element.hh" +#include "grob.hh" #include "output-property-music-iterator.hh" class Output_property_engraver : public Engraver @@ -24,21 +24,21 @@ protected: \property Voice.outputProperties \push #pred = #modifier where both MODIFIER and PRED are functions taking a - score-element. + grob. */ Link_array props_; - virtual void do_pre_move_processing (); - virtual void acknowledge_element (Score_element_info); - virtual bool do_try_music (Music*); + virtual void stop_translation_timestep (); + virtual void acknowledge_grob (Grob_info); + virtual bool try_music (Music*); }; bool -Output_property_engraver::do_try_music (Music* m) +Output_property_engraver::try_music (Music* m) { if (m->get_mus_property ("type") == Output_property_music_iterator::constructor_cxx_function) @@ -50,7 +50,7 @@ Output_property_engraver::do_try_music (Music* m) } void -Output_property_engraver::acknowledge_element (Score_element_info inf) +Output_property_engraver::acknowledge_grob (Grob_info inf) { for (int i=props_.size (); i--; ) { @@ -66,13 +66,13 @@ Output_property_engraver::acknowledge_element (Score_element_info inf) { SCM sym = o->get_mus_property ("symbol"); SCM val = o->get_mus_property ("value"); - inf.elem_l_->set_elt_property (sym, val); + inf.elem_l_->set_grob_property (sym, val); } } } void -Output_property_engraver::do_pre_move_processing () +Output_property_engraver::stop_translation_timestep () { props_.clear (); } diff --git a/lily/paper-column.cc b/lily/paper-column.cc index c94541577a..e644ce6d98 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -20,7 +20,7 @@ Paper_column::do_break_processing () } int -Paper_column::rank_i(Score_element*me) +Paper_column::rank_i(Grob*me) { return dynamic_cast (me)->rank_i_; } @@ -49,9 +49,9 @@ Paper_column::Paper_column (SCM l) } Moment -Paper_column::when_mom (Score_element*me) +Paper_column::when_mom (Grob*me) { - SCM m = me->get_elt_property ("when"); + SCM m = me->get_grob_property ("when"); Moment s (0); if (unsmob_moment (m)) { @@ -63,7 +63,7 @@ Paper_column::when_mom (Score_element*me) bool Paper_column::musical_b () const { - SCM m = get_elt_property ("shortest-starter-duration"); + SCM m = get_grob_property ("shortest-starter-duration"); Moment s (0); if (unsmob_moment (m)) { @@ -73,9 +73,9 @@ Paper_column::musical_b () const } bool -Paper_column::used_b (Score_element*me ) +Paper_column::used_b (Grob*me ) { - return gh_pair_p (me->get_elt_property ("elements")) || Item::breakable_b (me) - || gh_pair_p (me->get_elt_property ("bounded-by-me")) + return gh_pair_p (me->get_grob_property ("elements")) || Item::breakable_b (me) + || gh_pair_p (me->get_grob_property ("bounded-by-me")) ; } diff --git a/lily/paper-score.cc b/lily/paper-score.cc index 362dbbf3cd..f00db3099c 100644 --- a/lily/paper-score.cc +++ b/lily/paper-score.cc @@ -84,10 +84,10 @@ Paper_score::process () /* Be sure to set breakability on first & last column. */ - Link_array pc (line_l_->column_l_arr ()); + Link_array pc (line_l_->column_l_arr ()); - pc[0]->set_elt_property ("breakable", SCM_BOOL_T); - pc.top ()->set_elt_property ("breakable", SCM_BOOL_T); + pc[0]->set_grob_property ("breakable", SCM_BOOL_T); + pc.top ()->set_grob_property ("breakable", SCM_BOOL_T); line_l_->pre_processing (); diff --git a/lily/performer-group-performer.cc b/lily/performer-group-performer.cc index 5254c2e15e..8952105656 100644 --- a/lily/performer-group-performer.cc +++ b/lily/performer-group-performer.cc @@ -26,19 +26,19 @@ Performer_group_performer::announce_element (Audio_element_info info) void -Performer_group_performer::process_acknowledged () +Performer_group_performer::create_grobs () { for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr ( p)) { Translator * t = unsmob_translator (gh_car (p)); Performer * eng = dynamic_cast (t); if (eng) - eng->process_acknowledged (); + eng->create_grobs (); } } void -Performer_group_performer::acknowledge_elements () +Performer_group_performer::acknowledge_grobs () { for (int j =0; j < announce_info_arr_.size(); j++) { @@ -49,7 +49,7 @@ Performer_group_performer::acknowledge_elements () Translator * t = unsmob_translator (gh_car (p)); Performer * eng = dynamic_cast (t); if (eng && eng!= info.origin_trans_l_) - eng->acknowledge_element (info); + eng->acknowledge_grob (info); } } } @@ -64,15 +64,15 @@ Performer_group_performer::do_announces() } - process_acknowledged (); + create_grobs (); // debug int i = 0; while (announce_info_arr_.size () && i++ < 5) { - acknowledge_elements (); + acknowledge_grobs (); announce_info_arr_.clear (); - process_acknowledged (); + create_grobs (); } if (announce_info_arr_.size ()) diff --git a/lily/performer.cc b/lily/performer.cc index 8cf1c972f7..7e18cfe0e0 100644 --- a/lily/performer.cc +++ b/lily/performer.cc @@ -32,12 +32,12 @@ Performer::daddy_perf_l () const } void -Performer::acknowledge_element (Audio_element_info) +Performer::acknowledge_grob (Audio_element_info) { } void -Performer::process_acknowledged () +Performer::create_grobs () { } diff --git a/lily/piano-pedal-engraver.cc b/lily/piano-pedal-engraver.cc index 48a46fb999..dd85bb6370 100644 --- a/lily/piano-pedal-engraver.cc +++ b/lily/piano-pedal-engraver.cc @@ -8,7 +8,7 @@ #include "engraver.hh" #include "musical-request.hh" -#include "score-element.hh" +#include "grob.hh" #include "item.hh" #include "lily-guile.hh" #include "rhythmic-head.hh" @@ -32,11 +32,11 @@ public: ~Piano_pedal_engraver (); protected: virtual void do_creation_processing (); - virtual bool do_try_music (Music*); - virtual void do_pre_move_processing (); - virtual void do_post_move_processing (); - virtual void acknowledge_element (Score_element_info); - virtual void process_acknowledged (); + virtual bool try_music (Music*); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); + virtual void acknowledge_grob (Grob_info); + virtual void create_grobs (); private: struct Pedal_info @@ -89,7 +89,7 @@ Piano_pedal_engraver::~Piano_pedal_engraver() I'm a script */ void -Piano_pedal_engraver::acknowledge_element (Score_element_info info) +Piano_pedal_engraver::acknowledge_grob (Grob_info info) { for (Pedal_info*p = info_list_; p && p->name_; p ++) { @@ -112,7 +112,7 @@ Piano_pedal_engraver::acknowledge_element (Score_element_info info) } bool -Piano_pedal_engraver::do_try_music (Music *m) +Piano_pedal_engraver::try_music (Music *m) { if (Span_req * s = dynamic_cast(m)) { @@ -130,7 +130,7 @@ Piano_pedal_engraver::do_try_music (Music *m) } void -Piano_pedal_engraver::process_acknowledged () +Piano_pedal_engraver::create_grobs () { for (Pedal_info*p = info_list_; p && p->name_; p ++) { @@ -171,9 +171,9 @@ Piano_pedal_engraver::process_acknowledged () { String propname = String (p->name_) + "Pedal"; p->item_p_ = new Item (get_property (propname.ch_C())); - p->item_p_->set_elt_property ("text", s); + p->item_p_->set_grob_property ("text", s); - announce_element (p->item_p_, + announce_grob (p->item_p_, p->req_l_drul_[START] ? p->req_l_drul_[START] : p->req_l_drul_[STOP]); @@ -184,7 +184,7 @@ Piano_pedal_engraver::process_acknowledged () } void -Piano_pedal_engraver::do_pre_move_processing () +Piano_pedal_engraver::stop_translation_timestep () { Item * sustain = 0; for (Pedal_info*p = info_list_; p->name_; p ++) @@ -208,14 +208,14 @@ Piano_pedal_engraver::do_pre_move_processing () Side_position::add_support (p->item_p_,sustain); } } - typeset_element (p->item_p_); + typeset_grob (p->item_p_); } p->item_p_ = 0; } } void -Piano_pedal_engraver::do_post_move_processing () +Piano_pedal_engraver::start_translation_timestep () { for (Pedal_info*p = info_list_; p->name_; p ++) { diff --git a/lily/piano-pedal-performer.cc b/lily/piano-pedal-performer.cc index 92fed8d8c3..0617db14f2 100644 --- a/lily/piano-pedal-performer.cc +++ b/lily/piano-pedal-performer.cc @@ -32,10 +32,10 @@ public: protected: virtual void do_creation_processing (); - virtual bool do_try_music (Music*); - virtual void process_acknowledged (); - virtual void do_pre_move_processing (); - virtual void do_post_move_processing (); + virtual bool try_music (Music*); + virtual void create_grobs (); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); private: Link_array audio_p_arr_; @@ -75,7 +75,7 @@ Piano_pedal_performer::do_creation_processing () } void -Piano_pedal_performer::process_acknowledged () +Piano_pedal_performer::create_grobs () { for (Pedal_info*p = info_alist_; p && p->name_; p ++) @@ -110,7 +110,7 @@ Piano_pedal_performer::process_acknowledged () } void -Piano_pedal_performer::do_pre_move_processing () +Piano_pedal_performer::stop_translation_timestep () { for (int i=0; i< audio_p_arr_.size (); i++) play_element (audio_p_arr_[i]); @@ -118,7 +118,7 @@ Piano_pedal_performer::do_pre_move_processing () } void -Piano_pedal_performer::do_post_move_processing () +Piano_pedal_performer::start_translation_timestep () { for (Pedal_info*p = info_alist_; p && p->name_; p ++) { @@ -128,7 +128,7 @@ Piano_pedal_performer::do_post_move_processing () } bool -Piano_pedal_performer::do_try_music (Music* r) +Piano_pedal_performer::try_music (Music* r) { if (Span_req * s = dynamic_cast(r)) { diff --git a/lily/pitch-squash-engraver.cc b/lily/pitch-squash-engraver.cc index 90a73ea0ec..86eb472980 100644 --- a/lily/pitch-squash-engraver.cc +++ b/lily/pitch-squash-engraver.cc @@ -14,17 +14,17 @@ class Pitch_squash_engraver : public Engraver { public: VIRTUAL_COPY_CONS (Translator); - virtual void acknowledge_element (Score_element_info); + virtual void acknowledge_grob (Grob_info); }; void -Pitch_squash_engraver::acknowledge_element (Score_element_info i) +Pitch_squash_engraver::acknowledge_grob (Grob_info i) { SCM newpos = get_property ("squashedPosition"); if (Note_head::has_interface (i.elem_l_)) { - i.elem_l_->set_elt_property ("staff-position", newpos); + i.elem_l_->set_grob_property ("staff-position", newpos); } } diff --git a/lily/pointer-group-interface.cc b/lily/pointer-group-interface.cc index 7804d4fcbf..fb1b6bce62 100644 --- a/lily/pointer-group-interface.cc +++ b/lily/pointer-group-interface.cc @@ -7,7 +7,7 @@ */ #include "group-interface.hh" -#include "score-element.hh" +#include "grob.hh" diff --git a/lily/property-engraver.cc b/lily/property-engraver.cc index 0a003b23d1..0ee977d887 100644 --- a/lily/property-engraver.cc +++ b/lily/property-engraver.cc @@ -10,7 +10,7 @@ #include "lily-guile.hh" #include "engraver.hh" #include "dictionary.hh" -#include "score-element.hh" +#include "grob.hh" #include "scm-hash.hh" #include "translator-group.hh" @@ -24,10 +24,10 @@ class Property_engraver : public Engraver UGH. Junk Dictionary */ Scheme_hash_table *prop_dict_; // junkme - void apply_properties (SCM, Score_element*, Translator_group *origin); + void apply_properties (SCM, Grob*, Translator_group *origin); protected: - virtual void acknowledge_element (Score_element_info ei); + virtual void acknowledge_grob (Grob_info ei); virtual void do_creation_processing (); virtual void do_removal_processing (); public: @@ -68,11 +68,11 @@ Property_engraver::do_creation_processing () } void -Property_engraver::acknowledge_element (Score_element_info i) +Property_engraver::acknowledge_grob (Grob_info i) { ///////// return; - SCM ifs = i.elem_l_->get_elt_property ("interfaces"); + SCM ifs = i.elem_l_->get_grob_property ("interfaces"); SCM props; for (; gh_pair_p (ifs); ifs = gh_cdr (ifs)) { @@ -90,7 +90,7 @@ Property_engraver::acknowledge_element (Score_element_info i) void -Property_engraver::apply_properties (SCM p, Score_element *e, Translator_group*origin) +Property_engraver::apply_properties (SCM p, Grob *e, Translator_group*origin) { for (; gh_pair_p (p); p = gh_cdr (p)) { @@ -116,7 +116,7 @@ Property_engraver::apply_properties (SCM p, Score_element *e, Translator_group*o else if (gh_apply (type_p, scm_listify (val, SCM_UNDEFINED)) == SCM_BOOL_T) // defined and right type: do it { - e->set_elt_property (elt_prop_sym, val); + e->set_grob_property (elt_prop_sym, val); SCM errport = scm_current_error_port (); scm_display (prop_sym, errport); @@ -125,7 +125,7 @@ Property_engraver::apply_properties (SCM p, Score_element *e, Translator_group*o scm_puts (origin->type_str_.ch_C(), errport); scm_puts (".", errport); - SCM name = e->get_elt_property ("meta"); + SCM name = e->get_grob_property ("meta"); name = scm_assoc (ly_symbol2scm ("name"), name); scm_display (gh_cdr(name), errport); scm_puts(" \\push #'",errport); diff --git a/lily/property-iterator.cc b/lily/property-iterator.cc index 302f9752df..525b55d260 100644 --- a/lily/property-iterator.cc +++ b/lily/property-iterator.cc @@ -20,7 +20,14 @@ Property_iterator::process (Moment m) { SCM sym = music_l_->get_mus_property ("symbol"); if (gh_symbol_p(sym)) - report_to_l ()->set_property (sym, music_l_->get_mus_property ("value")); + { + SCM val = music_l_->get_mus_property ("value"); + bool ok= true; + if (val != SCM_EOL) + ok = type_check_assignment (val, sym, ly_symbol2scm ("translation-type?")); + if (ok) + report_to_l ()->set_property (sym, val); + } Simple_music_iterator::process (m); } diff --git a/lily/repeat-acknowledge-engraver.cc b/lily/repeat-acknowledge-engraver.cc index e3f544d0f6..de7930f01e 100644 --- a/lily/repeat-acknowledge-engraver.cc +++ b/lily/repeat-acknowledge-engraver.cc @@ -27,15 +27,18 @@ class Repeat_acknowledge_engraver : public Engraver public: VIRTUAL_COPY_CONS (Translator); Repeat_acknowledge_engraver(); - - virtual void do_post_move_processing (); - void deprecated_process_music (); + + virtual void start_translation_timestep (); + virtual void process_music (); virtual void do_creation_processing (); + + bool first_b_; }; void Repeat_acknowledge_engraver::do_creation_processing () { + first_b_ = true; daddy_trans_l_->set_property ("repeatCommands", SCM_EOL); } @@ -45,8 +48,9 @@ Repeat_acknowledge_engraver::Repeat_acknowledge_engraver() } void -Repeat_acknowledge_engraver::do_post_move_processing () +Repeat_acknowledge_engraver::start_translation_timestep () { + first_b_ = true; Translator_group * tr = daddy_trans_l_->where_defined (ly_symbol2scm ("repeatCommands")); if (!tr) tr = daddy_trans_l_; @@ -55,7 +59,7 @@ Repeat_acknowledge_engraver::do_post_move_processing () } void -Repeat_acknowledge_engraver::deprecated_process_music () +Repeat_acknowledge_engraver::process_music () { /* At the start of a piece, we don't print any repeat bars. @@ -81,7 +85,7 @@ Repeat_acknowledge_engraver::deprecated_process_music () cs = gh_cdr (cs); } - if ( start && end ) + if (start && end ) s = ":|:"; else if (start) s = "|:"; @@ -97,5 +101,4 @@ Repeat_acknowledge_engraver::deprecated_process_music () } } - ADD_THIS_TRANSLATOR(Repeat_acknowledge_engraver); diff --git a/lily/rest-collision-engraver.cc b/lily/rest-collision-engraver.cc index 7184c5be4b..9b257a8067 100644 --- a/lily/rest-collision-engraver.cc +++ b/lily/rest-collision-engraver.cc @@ -16,11 +16,11 @@ class Rest_collision_engraver : public Engraver { Item* rest_collision_p_; - Link_array note_column_l_arr_; + Link_array note_column_l_arr_; protected: - virtual void acknowledge_element (Score_element_info); - virtual void process_acknowledged (); - virtual void do_pre_move_processing(); + virtual void acknowledge_grob (Grob_info); + virtual void create_grobs (); + virtual void stop_translation_timestep(); public: VIRTUAL_COPY_CONS(Translator); Rest_collision_engraver(); @@ -35,31 +35,31 @@ Rest_collision_engraver::Rest_collision_engraver() } void -Rest_collision_engraver::process_acknowledged () +Rest_collision_engraver::create_grobs () { if (rest_collision_p_ || note_column_l_arr_.size () < 2) return; rest_collision_p_ = new Item (get_property ("RestCollision")); Rest_collision::set_interface (rest_collision_p_); - announce_element (rest_collision_p_, 0); + announce_grob (rest_collision_p_, 0); for (int i=0; i< note_column_l_arr_.size (); i++) Rest_collision::add_column ( rest_collision_p_,note_column_l_arr_[i]); } void -Rest_collision_engraver::acknowledge_element (Score_element_info i) +Rest_collision_engraver::acknowledge_grob (Grob_info i) { if (Note_column::has_interface (i.elem_l_)) note_column_l_arr_.push (i.elem_l_); } void -Rest_collision_engraver::do_pre_move_processing() +Rest_collision_engraver::stop_translation_timestep() { if (rest_collision_p_) { - typeset_element (rest_collision_p_); + typeset_grob (rest_collision_p_); rest_collision_p_ = 0; } note_column_l_arr_.clear (); diff --git a/lily/rest-collision.cc b/lily/rest-collision.cc index 090ded8527..6252f00866 100644 --- a/lily/rest-collision.cc +++ b/lily/rest-collision.cc @@ -23,19 +23,19 @@ MAKE_SCHEME_CALLBACK(Rest_collision,force_shift_callback,2); SCM Rest_collision::force_shift_callback (SCM element_smob, SCM axis) { - Score_element *them = unsmob_element (element_smob); + Grob *them = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == Y_AXIS); - Score_element * rc = unsmob_element (them->get_elt_property ("rest-collision")); + Grob * rc = unsmob_element (them->get_grob_property ("rest-collision")); if (rc) { /* Done: destruct pointers, so we do the shift only once. */ - SCM elts = rc->get_elt_property ("elements"); - rc->set_elt_property ("elements", SCM_EOL); + SCM elts = rc->get_grob_property ("elements"); + rc->set_grob_property ("elements", SCM_EOL); do_shift (rc, elts); } @@ -44,13 +44,18 @@ Rest_collision::force_shift_callback (SCM element_smob, SCM axis) } void -Rest_collision::add_column (Score_element*me,Score_element *p) +Rest_collision::add_column (Grob*me,Grob *p) { me->add_dependency (p); Pointer_group_interface::add_element (me, "elements", p); - p->add_offset_callback (Rest_collision::force_shift_callback_proc, Y_AXIS); - p->set_elt_property ("rest-collision", me->self_scm ()); + /* + only add callback for the rests, since we don't move anything else. + + (not?) + */ + p->add_offset_callback (Rest_collision::force_shift_callback_proc, Y_AXIS); + p->set_grob_property ("rest-collision", me->self_scm ()); } @@ -58,14 +63,14 @@ Rest_collision::add_column (Score_element*me,Score_element *p) Combination of dot-count and duration-log. */ static SCM -head_characteristic (Score_element * col) +head_characteristic (Grob * col) { - Score_element * s = unsmob_element (col->get_elt_property ("rest")); + Grob * s = unsmob_element (col->get_grob_property ("rest")); if (!s) return SCM_BOOL_F; else - return gh_cons (s->get_elt_property ("duration-log"), + return gh_cons (s->get_grob_property ("duration-log"), gh_int2scm (Rhythmic_head::dot_count (s))); } @@ -73,18 +78,18 @@ head_characteristic (Score_element * col) TODO: fixme, fucks up if called twice on the same set of rests. */ SCM -Rest_collision::do_shift (Score_element *me, SCM elts) +Rest_collision::do_shift (Grob *me, SCM elts) { /* ugh. -> score elt type */ - Link_array rests; - Link_array notes; - Score_element * commony = 0; + Link_array rests; + Link_array notes; + Grob * commony = 0; for (SCM s = elts; gh_pair_p (s); s = gh_cdr (s)) { - Score_element * e = unsmob_element (gh_car (s)); + Grob * e = unsmob_element (gh_car (s)); if (!e) continue; @@ -93,7 +98,7 @@ Rest_collision::do_shift (Score_element *me, SCM elts) else commony= commony->common_refpoint (e, Y_AXIS); - if (unsmob_element (e->get_elt_property ("rest"))) + if (unsmob_element (e->get_grob_property ("rest"))) rests.push (e); else notes.push (e); @@ -135,14 +140,14 @@ Rest_collision::do_shift (Score_element *me, SCM elts) (urg: all 3 of them, currently). */ int display_count; - SCM s = me->get_elt_property ("maximum-rest-count"); + SCM s = me->get_grob_property ("maximum-rest-count"); if (i == rests.size () && gh_number_p (s) && gh_scm2int (s) < rests.size ()) { display_count = gh_scm2int (s); for (; i > display_count; i--) { - Score_element* r = unsmob_element (rests[i-1]->get_elt_property ("rest")); + Grob* r = unsmob_element (rests[i-1]->get_grob_property ("rest")); if (r) r->suicide (); rests[i-1]->suicide (); @@ -188,12 +193,12 @@ Rest_collision::do_shift (Score_element *me, SCM elts) { warning (_("too many notes for rest collision")); } - Score_element * rcol = rests[0]; + Grob * rcol = rests[0]; // try to be opposite of noteheads. Direction dir = - Note_column::dir (notes[0]); - Score_element * r = unsmob_element (rcol->get_elt_property ("rest")); + Grob * r = unsmob_element (rcol->get_grob_property ("rest")); Interval restdim = r->extent (r, Y_AXIS); // ?? if (restdim.empty_b ()) @@ -202,7 +207,7 @@ Rest_collision::do_shift (Score_element *me, SCM elts) // FIXME: staff ref'd? Real staff_space = 1.0; - Real minimum_dist = gh_scm2double (me->get_elt_property ("minimum-distance")) * staff_space; + Real minimum_dist = gh_scm2double (me->get_grob_property ("minimum-distance")) * staff_space; /* assumption: ref points are the same. @@ -210,8 +215,8 @@ Rest_collision::do_shift (Score_element *me, SCM elts) Interval notedim; for (int i = 0; i < notes.size(); i++) { - Score_element * stem = Note_column::stem_l (notes[i]); - Score_element * head = Stem::first_head (stem); + Grob * stem = Note_column::stem_l (notes[i]); + Grob * head = Stem::first_head (stem); notedim.unite (head->extent (commony, Y_AXIS)); } @@ -241,7 +246,7 @@ Rest_collision::do_shift (Score_element *me, SCM elts) } void -Rest_collision::set_interface (Score_element*me) +Rest_collision::set_interface (Grob*me) { me->set_extent_callback (SCM_EOL, X_AXIS); me->set_extent_callback (SCM_EOL, Y_AXIS); diff --git a/lily/rest-engraver.cc b/lily/rest-engraver.cc index 4fe90403e0..9487b56ee5 100644 --- a/lily/rest-engraver.cc +++ b/lily/rest-engraver.cc @@ -17,11 +17,11 @@ class Rest_engraver : public Engraver { Rest_req *rest_req_l_; Item * dot_p_; - Score_element* rest_p_; + Grob* rest_p_; protected: - virtual bool do_try_music (Music *); - virtual void do_pre_move_processing (); - virtual void do_post_move_processing (); + virtual bool try_music (Music *); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); void deprecated_process_music (); public: @@ -41,22 +41,22 @@ Rest_engraver::Rest_engraver () } void -Rest_engraver::do_post_move_processing () +Rest_engraver::start_translation_timestep () { rest_req_l_ =0; } void -Rest_engraver::do_pre_move_processing () +Rest_engraver::stop_translation_timestep () { if (rest_p_) { - typeset_element (rest_p_); + typeset_grob (rest_p_); rest_p_ =0; } if (dot_p_) { - typeset_element (dot_p_); + typeset_grob (dot_p_); dot_p_ =0; } } @@ -73,7 +73,7 @@ Rest_engraver::deprecated_process_music () int durlog = unsmob_duration (rest_req_l_->get_mus_property ("duration"))-> duration_log (); - rest_p_->set_elt_property ("duration-log", + rest_p_->set_grob_property ("duration-log", gh_int2scm (durlog)); int dots =unsmob_duration (rest_req_l_->get_mus_property ("duration"))->dot_count (); @@ -84,16 +84,16 @@ Rest_engraver::deprecated_process_music () Rhythmic_head::set_dots (rest_p_, dot_p_); dot_p_->set_parent (rest_p_, Y_AXIS); - dot_p_->set_elt_property ("dot-count", gh_int2scm (dots)); - announce_element (dot_p_,0); + dot_p_->set_grob_property ("dot-count", gh_int2scm (dots)); + announce_grob (dot_p_,0); } - announce_element (rest_p_, rest_req_l_); + announce_grob (rest_p_, rest_req_l_); } } bool -Rest_engraver::do_try_music (Music *m) +Rest_engraver::try_music (Music *m) { if (Rest_req *r = dynamic_cast (m)) { diff --git a/lily/rest.cc b/lily/rest.cc index a6a945cd78..b3e5668d35 100644 --- a/lily/rest.cc +++ b/lily/rest.cc @@ -19,17 +19,17 @@ MAKE_SCHEME_CALLBACK(Rest,after_line_breaking,1); SCM Rest::after_line_breaking (SCM smob) { - Score_element *me = unsmob_element (smob); - int bt = gh_scm2int (me->get_elt_property ("duration-log")); + Grob *me = unsmob_element (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); } - Score_element * d = unsmob_element (me->get_elt_property ("dot")); + Grob * d = unsmob_element (me->get_grob_property ("dot")); if (d && bt > 4) // UGH. { - d->set_elt_property ("staff-position", + d->set_grob_property ("staff-position", gh_int2scm ((bt == 7) ? 4 : 3)); } @@ -37,15 +37,16 @@ Rest::after_line_breaking (SCM smob) } -MAKE_SCHEME_CALLBACK(Rest,brew_molecule,1) -SCM -Rest::brew_molecule (SCM smob) +MAKE_SCHEME_CALLBACK(Rest,brew_molecule,1); + +SCM +Rest::brew_internal_molecule (SCM smob) { - Score_element* me = unsmob_element (smob); + Grob* me = unsmob_element (smob); bool ledger_b =false; - SCM balltype = me->get_elt_property ("duration-log"); + SCM balltype = me->get_grob_property ("duration-log"); if (balltype == gh_int2scm (0) || balltype == gh_int2scm (1)) { @@ -55,10 +56,10 @@ Rest::brew_molecule (SCM smob) } String style; - SCM style_sym =me->get_elt_property ("style"); - if (gh_scm2int (balltype) >= 2 && gh_string_p (style_sym)) + SCM style_sym =me->get_grob_property ("style"); + if (gh_scm2int (balltype) >= 2 && gh_symbol_p (style_sym)) { - style = ly_scm2string (style_sym); + style = ly_scm2string (scm_symbol_to_string (style_sym)); } String idx = ("rests-") + to_str (gh_scm2int (balltype)) @@ -67,9 +68,25 @@ Rest::brew_molecule (SCM smob) return Font_interface::get_default_font (me)->find_by_name (idx).smobbed_copy(); } +SCM +Rest::brew_molecule (SCM smob) +{ + return brew_internal_molecule (smob); +} +MAKE_SCHEME_CALLBACK(Rest,extent_callback,2); +/* + We need the callback. The real molecule has ledgers depending on + Y-position. The Y-position is known only after line breaking. */ +SCM +Rest::extent_callback (SCM smob, SCM ax) +{ + Axis a = (Axis) gh_scm2int (ax); + SCM m = brew_internal_molecule (smob); + return ly_interval2scm (unsmob_molecule (m)->extent (a)); +} bool -Rest::has_interface (Score_element*m) +Rest::has_interface (Grob*m) { return m && m->has_interface (ly_symbol2scm ("rest-interface")); } diff --git a/lily/rhythmic-column-engraver.cc b/lily/rhythmic-column-engraver.cc index 99f19e26f3..eb378b7410 100644 --- a/lily/rhythmic-column-engraver.cc +++ b/lily/rhythmic-column-engraver.cc @@ -18,18 +18,18 @@ class Rhythmic_column_engraver :public Engraver { - Link_array rhead_l_arr_; - Link_array grace_slur_endings_; - Score_element * stem_l_; - Score_element *ncol_p_; - Score_element *dotcol_l_; + Link_array rhead_l_arr_; + Link_array grace_slur_endings_; + Grob * stem_l_; + Grob *ncol_p_; + Grob *dotcol_l_; protected: VIRTUAL_COPY_CONS(Translator); - virtual void acknowledge_element (Score_element_info); - virtual void process_acknowledged (); - virtual void do_pre_move_processing(); - virtual void do_post_move_processing(); + virtual void acknowledge_grob (Grob_info); + virtual void create_grobs (); + virtual void stop_translation_timestep(); + virtual void start_translation_timestep(); public: Rhythmic_column_engraver(); @@ -46,7 +46,7 @@ Rhythmic_column_engraver::Rhythmic_column_engraver() void -Rhythmic_column_engraver::process_acknowledged () +Rhythmic_column_engraver::create_grobs () { if (rhead_l_arr_.size ()) { @@ -54,7 +54,7 @@ Rhythmic_column_engraver::process_acknowledged () { ncol_p_ = new Item (get_property("NoteColumn")); Note_column::set_interface (ncol_p_); - announce_element (ncol_p_, 0); + announce_grob (ncol_p_, 0); } for (int i=0; i < rhead_l_arr_.size (); i++) @@ -92,11 +92,11 @@ Rhythmic_column_engraver::process_acknowledged () } void -Rhythmic_column_engraver::acknowledge_element (Score_element_info i) +Rhythmic_column_engraver::acknowledge_grob (Grob_info i) { SCM wg = get_property ("weAreGraceContext"); bool wegrace = to_boolean (wg); - if (wegrace != to_boolean (i.elem_l_->get_elt_property ("grace")) + if (wegrace != to_boolean (i.elem_l_->get_grob_property ("grace")) && !Slur::has_interface (i.elem_l_)) return ; @@ -119,23 +119,23 @@ Rhythmic_column_engraver::acknowledge_element (Score_element_info i) end slurs starting on grace notes */ - if (to_boolean (i.elem_l_->get_elt_property ("grace"))) + if (to_boolean (i.elem_l_->get_grob_property ("grace"))) grace_slur_endings_.push (i.elem_l_); } } void -Rhythmic_column_engraver::do_pre_move_processing() +Rhythmic_column_engraver::stop_translation_timestep() { if (ncol_p_) { - typeset_element (ncol_p_); + typeset_grob (ncol_p_); ncol_p_ =0; } } void -Rhythmic_column_engraver::do_post_move_processing() +Rhythmic_column_engraver::start_translation_timestep() { grace_slur_endings_.clear (); dotcol_l_ =0; diff --git a/lily/rhythmic-head.cc b/lily/rhythmic-head.cc index 8c230f6716..65d762c3ea 100644 --- a/lily/rhythmic-head.cc +++ b/lily/rhythmic-head.cc @@ -15,49 +15,49 @@ Item* -Rhythmic_head::dots_l (Score_element*me) +Rhythmic_head::dots_l (Grob*me) { - SCM s = me->get_elt_property ("dot"); + SCM s = me->get_grob_property ("dot"); return dynamic_cast (unsmob_element (s)); } int -Rhythmic_head::balltype_i (Score_element*me) +Rhythmic_head::balltype_i (Grob*me) { - SCM s = me->get_elt_property ("duration-log"); + SCM s = me->get_grob_property ("duration-log"); return gh_number_p (s) ? gh_scm2int (s) : 0; } Item* -Rhythmic_head::stem_l (Score_element*me) +Rhythmic_head::stem_l (Grob*me) { - SCM s = me->get_elt_property ("stem"); + SCM s = me->get_grob_property ("stem"); return dynamic_cast (unsmob_element (s)); } int -Rhythmic_head::dot_count (Score_element*me) +Rhythmic_head::dot_count (Grob*me) { return dots_l (me) - ? gh_scm2int (dots_l (me)->get_elt_property ("dot-count")) : 0; + ? gh_scm2int (dots_l (me)->get_grob_property ("dot-count")) : 0; } void -Rhythmic_head::set_dots (Score_element*me,Item *dot_l) +Rhythmic_head::set_dots (Grob*me,Item *dot_l) { - me->set_elt_property ("dot", dot_l->self_scm ()); + me->set_grob_property ("dot", dot_l->self_scm ()); } void -Rhythmic_head::set_interface (Score_element*me) +Rhythmic_head::set_interface (Grob*me) { me->set_interface (ly_symbol2scm ("rhythmic-head-interface")); } bool -Rhythmic_head::has_interface (Score_element*me) +Rhythmic_head::has_interface (Grob*me) { return me && me->has_interface (ly_symbol2scm ("rhythmic-head-interface")); } diff --git a/lily/score-engraver.cc b/lily/score-engraver.cc index 55a9e1fa63..4db2759a19 100644 --- a/lily/score-engraver.cc +++ b/lily/score-engraver.cc @@ -18,6 +18,7 @@ #include "paper-def.hh" #include "axis-group-interface.hh" + Score_engraver::Score_engraver() { scoreline_l_ =0; @@ -26,33 +27,38 @@ Score_engraver::Score_engraver() breaks_i_ =0; pscore_p_ = 0; } - + void -Score_engraver::prepare (Moment w) +Score_engraver::make_columns (Moment w) { - Global_translator::prepare (w); - - /* ugh. */ if (!command_column_l_ - || *unsmob_moment (command_column_l_->get_elt_property ("when")) != w) + || *unsmob_moment (command_column_l_->get_grob_property ("when")) != w) { set_columns (new Paper_column (get_property (ly_symbol2scm ("NonMusicalPaperColumn"))), new Paper_column (get_property (ly_symbol2scm ("PaperColumn")))); - command_column_l_->set_elt_property ("when", w.smobbed_copy()); - musical_column_l_->set_elt_property ("when", w.smobbed_copy()); - command_column_l_->set_elt_property ("breakable", SCM_BOOL_T); + command_column_l_->set_grob_property ("when", w.smobbed_copy()); + musical_column_l_->set_grob_property ("when", w.smobbed_copy()); + command_column_l_->set_grob_property ("breakable", SCM_BOOL_T); - Score_element_info i1(command_column_l_, 0), i2 (musical_column_l_,0); + Grob_info i1(command_column_l_, 0), i2 (musical_column_l_,0); i1.origin_trans_l_ = this; i2.origin_trans_l_ = this; - announce_element (i1); - announce_element (i2); + announce_grob (i1); + announce_grob (i2); } +} + +void +Score_engraver::prepare (Moment w) +{ + Global_translator::prepare (w); + make_columns (w); + post_move_processing(); } @@ -72,12 +78,12 @@ Score_engraver::finish() void Score_engraver::do_creation_processing () { - prepare (Moment (0)); + make_columns (Moment (0)); scoreline_l_ = pscore_p_->line_l_; scoreline_l_->set_bound(LEFT, command_column_l_); - command_column_l_->set_elt_property ("breakable", SCM_BOOL_T); + command_column_l_->set_grob_property ("breakable", SCM_BOOL_T); Engraver_group_engraver::do_creation_processing(); } @@ -88,7 +94,7 @@ Score_engraver::do_removal_processing() { Engraver_group_engraver::do_removal_processing(); scoreline_l_->set_bound(RIGHT,command_column_l_); - command_column_l_->set_elt_property ("breakable", SCM_BOOL_T); + command_column_l_->set_grob_property ("breakable", SCM_BOOL_T); typeset_all (); @@ -98,17 +104,18 @@ Score_engraver::do_removal_processing() void Score_engraver::process() { - //process_music(); + process_music(); + announces(); pre_move_processing(); check_removal(); } void -Score_engraver::announce_element (Score_element_info info) +Score_engraver::announce_grob (Grob_info info) { announce_info_arr_.push (info); - pscore_p_->line_l_->typeset_element (info.elem_l_); + pscore_p_->line_l_->typeset_grob (info.elem_l_); } /* All elements are propagated to the top upon announcement. If @@ -129,7 +136,7 @@ Score_engraver::do_announces() void -Score_engraver::typeset_element (Score_element *elem_p) +Score_engraver::typeset_grob (Grob *elem_p) { if (!elem_p) programming_error ("Score_engraver: empty elt\n"); @@ -144,7 +151,7 @@ Score_engraver::typeset_all() { for (int i =0; i < elem_p_arr_.size(); i++) { - Score_element * elem_p = elem_p_arr_[i]; + Grob * elem_p = elem_p_arr_[i]; if (Spanner *s = dynamic_cast (elem_p)) { @@ -165,7 +172,7 @@ Score_engraver::typeset_all() { if (!elem_p->parent_l (X_AXIS)) { - bool br = to_boolean (elem_p->get_elt_property ("breakable")); + bool br = to_boolean (elem_p->get_grob_property ("breakable")); Axis_group_interface::add_element (br ? command_column_l_ : musical_column_l_, elem_p); } @@ -177,13 +184,13 @@ Score_engraver::typeset_all() } void -Score_engraver::do_pre_move_processing() +Score_engraver::stop_translation_timestep() { // this generates all items. - Engraver_group_engraver::do_pre_move_processing(); + Engraver_group_engraver::stop_translation_timestep(); typeset_all(); - if (to_boolean (command_column_l_->get_elt_property ("breakable"))) + if (to_boolean (command_column_l_->get_grob_property ("breakable"))) { breaks_i_ ++; if (! (breaks_i_%8)) @@ -233,9 +240,9 @@ Score_engraver::get_output_p () } bool -Score_engraver::do_try_music (Music*r) +Score_engraver::try_music (Music*r) { - bool gotcha = Engraver_group_engraver::do_try_music (r); + bool gotcha = Engraver_group_engraver::try_music (r); if (!gotcha) { @@ -244,7 +251,7 @@ Score_engraver::do_try_music (Music*r) gotcha = true; - SCM pen = command_column_l_->get_elt_property ("penalty"); + SCM pen = command_column_l_->get_grob_property ("penalty"); Real total_penalty = gh_number_p (pen) ? gh_scm2double(pen) : 0.0; @@ -256,20 +263,24 @@ Score_engraver::do_try_music (Music*r) if (total_penalty > 10000.0) // ugh. arbitrary. forbid_breaks (); - command_column_l_->set_elt_property ("penalty", + command_column_l_->set_grob_property ("penalty", gh_double2scm (total_penalty)); } } return gotcha; } +/* + TODO: use property Score.breakForbidden = #t + */ + void Score_engraver::forbid_breaks () { /* result is junked. */ - command_column_l_->remove_elt_property ("breakable"); + command_column_l_->remove_grob_property ("breakable"); } ADD_THIS_TRANSLATOR(Score_engraver); diff --git a/lily/script-column-engraver.cc b/lily/script-column-engraver.cc index e621bdfca2..1eaea34a15 100644 --- a/lily/script-column-engraver.cc +++ b/lily/script-column-engraver.cc @@ -17,17 +17,17 @@ Script_column, that will fix the collisions. */ class Script_column_engraver : public Engraver { - Score_element *scol_p_; + Grob *scol_p_; Link_array script_l_arr_; public: Script_column_engraver (); VIRTUAL_COPY_CONS(Translator); protected: - virtual void acknowledge_element (Score_element_info); - virtual void process_acknowledged (); - virtual void do_pre_move_processing (); - virtual void do_post_move_processing (); + virtual void acknowledge_grob (Grob_info); + virtual void create_grobs (); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); }; @@ -37,24 +37,24 @@ Script_column_engraver::Script_column_engraver() } void -Script_column_engraver::do_pre_move_processing () +Script_column_engraver::stop_translation_timestep () { if (scol_p_) { - typeset_element (scol_p_); + typeset_grob (scol_p_); scol_p_ =0; } } void -Script_column_engraver::do_post_move_processing () +Script_column_engraver::start_translation_timestep () { script_l_arr_.clear (); } void -Script_column_engraver::acknowledge_element(Score_element_info inf) +Script_column_engraver::acknowledge_grob(Grob_info inf) { Item *thing = dynamic_cast (inf.elem_l_); if (thing && Side_position::has_interface (inf.elem_l_)) // ugh FIXME @@ -68,14 +68,14 @@ Script_column_engraver::acknowledge_element(Score_element_info inf) } void -Script_column_engraver::process_acknowledged () +Script_column_engraver::create_grobs () { if (!scol_p_ && script_l_arr_.size () > 1) { scol_p_ = new Item (get_property ("ScriptColumn")); - announce_element (scol_p_, 0); + announce_grob (scol_p_, 0); } if (scol_p_) diff --git a/lily/script-column.cc b/lily/script-column.cc index 6247c6a910..f72c122319 100644 --- a/lily/script-column.cc +++ b/lily/script-column.cc @@ -12,9 +12,9 @@ #include "group-interface.hh" void -Script_column::add_staff_sided (Score_element *me, Item *i) +Script_column::add_staff_sided (Grob *me, Item *i) { - SCM p = i->get_elt_property ("script-priority"); + SCM p = i->get_grob_property ("script-priority"); if (!gh_number_p (p)) return; @@ -24,11 +24,11 @@ Script_column::add_staff_sided (Score_element *me, Item *i) } static int -staff_side_compare (Score_element * const &i1, - Score_element * const &i2) +staff_side_compare (Grob * const &i1, + Grob * const &i2) { - SCM p1 = i1->get_elt_property ("script-priority"); - SCM p2 = i2->get_elt_property ("script-priority"); + SCM p1 = i1->get_grob_property ("script-priority"); + SCM p2 = i2->get_grob_property ("script-priority"); return gh_scm2int (p1) - gh_scm2int (p2); } @@ -38,10 +38,10 @@ MAKE_SCHEME_CALLBACK(Script_column,before_line_breaking,1); SCM Script_column::before_line_breaking (SCM smob) { - Score_element* me = unsmob_element (smob); - Drul_array > arrs; - Link_array staff_sided - = Pointer_group_interface__extract_elements (me, (Score_element*)0, "scripts"); + Grob* me = unsmob_element (smob); + Drul_array > arrs; + Link_array staff_sided + = Pointer_group_interface__extract_elements (me, (Grob*)0, "scripts"); for (int i=0; i < staff_sided.size (); i++) @@ -52,18 +52,18 @@ Script_column::before_line_breaking (SCM smob) Direction d = DOWN; do { - Link_array &arr(arrs[d]); + Link_array &arr(arrs[d]); arr.sort (staff_side_compare); - Score_element * last = 0; + Grob * last = 0; for (int i=0; i < arr.size (); i++) { if (last) Side_position::add_support( arr[i],last); - arr[i]->remove_elt_property ("script-priority"); + arr[i]->remove_grob_property ("script-priority"); last = arr[i]; } diff --git a/lily/script-engraver.cc b/lily/script-engraver.cc index 7eba9b7c24..20329c302f 100644 --- a/lily/script-engraver.cc +++ b/lily/script-engraver.cc @@ -13,7 +13,7 @@ #include "engraver.hh" class Script_engraver : public Engraver { - Link_array script_p_arr_; + Link_array script_p_arr_; Link_array script_req_l_arr_; public: @@ -21,22 +21,22 @@ public: Script_engraver(); protected: - virtual bool do_try_music (Music*); + virtual bool try_music (Music*); void deprecated_process_music (); - virtual void do_pre_move_processing (); - virtual void do_post_move_processing (); - virtual void process_acknowledged (); - virtual void acknowledge_element (Score_element_info); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); + virtual void create_grobs (); + virtual void acknowledge_grob (Grob_info); }; Script_engraver::Script_engraver() { - do_post_move_processing(); + start_translation_timestep(); } bool -Script_engraver::do_try_music (Music *r_l) +Script_engraver::try_music (Music *r_l) { if (Articulation_req *mr = dynamic_cast (r_l)) { @@ -52,7 +52,7 @@ Script_engraver::do_try_music (Music *r_l) } void -Script_engraver::process_acknowledged () +Script_engraver::create_grobs () { deprecated_process_music (); } @@ -75,9 +75,9 @@ Script_engraver::deprecated_process_music() continue; } // todo -> use result of articulation-to-scriptdef directly as basic prop list. - Score_element *p =new Item (get_property ("Script")); + Grob *p =new Item (get_property ("Script")); list = gh_cdr (list); - p->set_elt_property ("molecule", + p->set_grob_property ("molecule", gh_car (list)); list = gh_cdr(list); @@ -95,9 +95,9 @@ Script_engraver::deprecated_process_music() if (!isdir_b (force_dir) && to_dir (relative_stem_dir)) - p->set_elt_property ("side-relative-direction", relative_stem_dir); + p->set_grob_property ("side-relative-direction", relative_stem_dir); else - p->set_elt_property ("direction", force_dir); + p->set_grob_property ("direction", force_dir); /* FIXME: should figure this out in relation with basic props! @@ -107,25 +107,25 @@ Script_engraver::deprecated_process_music() Side_position::set_axis (p, xaxis ? X_AXIS : Y_AXIS); if (!follow_staff && ! xaxis) - p->set_elt_property ("staff-support", SCM_BOOL_T); + p->set_grob_property ("staff-support", SCM_BOOL_T); if (!xaxis && follow_staff) p->add_offset_callback (Side_position::quantised_position_proc, Y_AXIS); - p->set_elt_property ("script-priority", priority); + p->set_grob_property ("script-priority", priority); script_p_arr_.push (p); - announce_element (p, l); + announce_grob (p, l); } script_req_l_arr_.clear (); } void -Script_engraver::acknowledge_element (Score_element_info inf) +Script_engraver::acknowledge_grob (Grob_info inf) { - bool them_grace = to_boolean (inf.elem_l_->get_elt_property ("grace")); + bool them_grace = to_boolean (inf.elem_l_->get_grob_property ("grace")); bool us_grace = to_boolean (get_property ("weAreGraceContext")); if (us_grace != them_grace) @@ -135,9 +135,9 @@ Script_engraver::acknowledge_element (Score_element_info inf) { for (int i=0; i < script_p_arr_.size(); i++) { - Score_element*e = script_p_arr_[i]; + Grob*e = script_p_arr_[i]; - e->set_elt_property ("direction-source", inf.elem_l_->self_scm ()); + e->set_grob_property ("direction-source", inf.elem_l_->self_scm ()); Side_position::add_support (e, inf.elem_l_); } } @@ -145,7 +145,7 @@ Script_engraver::acknowledge_element (Score_element_info inf) { for (int i=0; i < script_p_arr_.size(); i++) { - Score_element *e = script_p_arr_[i]; + Grob *e = script_p_arr_[i]; if (!e->parent_l (X_AXIS)) { @@ -161,22 +161,22 @@ Script_engraver::acknowledge_element (Score_element_info inf) } void -Script_engraver::do_pre_move_processing() +Script_engraver::stop_translation_timestep() { for (int i=0; i < script_p_arr_.size(); i++) { - Score_element * sc = script_p_arr_[i]; - if (to_boolean (sc->get_elt_property ("staff-support"))) + Grob * sc = script_p_arr_[i]; + if (to_boolean (sc->get_grob_property ("staff-support"))) { Side_position::add_staff_support (sc); } - typeset_element (sc); + typeset_grob (sc); } script_p_arr_.clear(); } void -Script_engraver::do_post_move_processing() +Script_engraver::start_translation_timestep() { script_req_l_arr_.clear(); } diff --git a/lily/script.cc b/lily/script.cc index 432515c89a..7143a308af 100644 --- a/lily/script.cc +++ b/lily/script.cc @@ -17,9 +17,9 @@ #include "lookup.hh" Molecule -Script::get_molecule(Score_element * me, Direction d) +Script::get_molecule(Grob * me, Direction d) { - SCM s = me->get_elt_property ("molecule"); + SCM s = me->get_grob_property ("molecule"); assert (gh_pair_p (s)); SCM key = gh_car (s); @@ -42,7 +42,7 @@ MAKE_SCHEME_CALLBACK(Script,after_line_breaking,1); SCM Script::after_line_breaking (SCM smob) { - Score_element * me = unsmob_element (smob); + Grob * me = unsmob_element (smob); Direction d = Side_position::get_direction (me); Side_position::set_direction (me,d); @@ -55,10 +55,10 @@ MAKE_SCHEME_CALLBACK(Script,brew_molecule,1); SCM Script::brew_molecule (SCM smob) { - Score_element *me= unsmob_element (smob); + Grob *me= unsmob_element (smob); #if 0 Direction dir = DOWN; - SCM d = me->get_elt_property ("direction"); + SCM d = me->get_grob_property ("direction"); if (isdir_b (d)) dir = to_dir (d); #endif @@ -67,13 +67,13 @@ Script::brew_molecule (SCM smob) } bool -Script::has_interface (Score_element*me) +Script::has_interface (Grob*me) { return me->has_interface (ly_symbol2scm ("script-interface")); } void -Script::set_interface (Score_element*me) +Script::set_interface (Grob*me) { return me->set_interface (ly_symbol2scm ("script-interface")); } diff --git a/lily/separating-group-spanner.cc b/lily/separating-group-spanner.cc index 789a024ce1..4ee5b7b075 100644 --- a/lily/separating-group-spanner.cc +++ b/lily/separating-group-spanner.cc @@ -38,9 +38,9 @@ MAKE_SCHEME_CALLBACK(Separating_group_spanner,set_spacing_rods,1); SCM Separating_group_spanner::set_spacing_rods (SCM smob) { - Score_element*me = unsmob_element (smob); + Grob*me = unsmob_element (smob); - for (SCM s = me->get_elt_property ("elements"); gh_pair_p (s) && gh_pair_p (gh_cdr (s)); s = gh_cdr (s)) + for (SCM s = me->get_grob_property ("elements"); gh_pair_p (s) && gh_pair_p (gh_cdr (s)); s = gh_cdr (s)) { /* Order of elements is reversed! @@ -81,7 +81,7 @@ Separating_group_spanner::set_spacing_rods (SCM smob) /* We've done our job, so we get lost. */ - for (SCM s = me->get_elt_property ("elements"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = me->get_grob_property ("elements"); gh_pair_p (s); s = gh_cdr (s)) { Item * it =dynamic_cast(unsmob_element (gh_car (s))); if (it && it->broken_b ()) @@ -96,7 +96,7 @@ Separating_group_spanner::set_spacing_rods (SCM smob) } void -Separating_group_spanner::add_spacing_unit (Score_element* me ,Item*i) +Separating_group_spanner::add_spacing_unit (Grob* me ,Item*i) { Pointer_group_interface::add_element (me, "elements",i); me->add_dependency (i); @@ -104,7 +104,7 @@ Separating_group_spanner::add_spacing_unit (Score_element* me ,Item*i) void -Separating_group_spanner::set_interface (Score_element*) +Separating_group_spanner::set_interface (Grob*) { } diff --git a/lily/separating-line-group-engraver.cc b/lily/separating-line-group-engraver.cc index 63b66cc2f4..bbbf47e54b 100644 --- a/lily/separating-line-group-engraver.cc +++ b/lily/separating-line-group-engraver.cc @@ -20,10 +20,10 @@ protected: Item * nobreak_malt_p_; Spanner * sep_span_p_; - virtual void acknowledge_element (Score_element_info); + virtual void acknowledge_grob (Grob_info); virtual void do_creation_processing (); virtual void do_removal_processing (); - virtual void do_pre_move_processing (); + virtual void stop_translation_timestep (); public: Separating_line_group_engraver (); VIRTUAL_COPY_CONS (Translator); @@ -41,7 +41,7 @@ Separating_line_group_engraver::do_creation_processing () { sep_span_p_ = new Spanner (get_property ("SeparatingGroupSpanner")); Separating_group_spanner::set_interface (sep_span_p_); - announce_element (sep_span_p_, 0); + announce_grob (sep_span_p_, 0); sep_span_p_->set_bound (LEFT, unsmob_element (get_property ("currentCommandColumn"))); } @@ -49,12 +49,12 @@ void Separating_line_group_engraver::do_removal_processing () { sep_span_p_->set_bound (RIGHT, unsmob_element (get_property ("currentCommandColumn"))); - typeset_element (sep_span_p_); + typeset_grob (sep_span_p_); sep_span_p_ =0; } void -Separating_line_group_engraver::acknowledge_element (Score_element_info i) +Separating_line_group_engraver::acknowledge_grob (Grob_info i) { Item * it = dynamic_cast (i.elem_l_); if (it && !it->parent_l (X_AXIS)) @@ -69,27 +69,27 @@ Separating_line_group_engraver::acknowledge_element (Score_element_info i) (get_property ("SeparationItem")); if (ib) - p_ref_->set_elt_property ("breakable", SCM_BOOL_T); - announce_element (p_ref_, 0); + p_ref_->set_grob_property ("breakable", SCM_BOOL_T); + announce_grob (p_ref_, 0); } Separation_item::add_item (p_ref_,it); } } void -Separating_line_group_engraver::do_pre_move_processing () +Separating_line_group_engraver::stop_translation_timestep () { if (break_malt_p_) { Separating_group_spanner::add_spacing_unit (sep_span_p_, break_malt_p_); - typeset_element (break_malt_p_); + typeset_grob (break_malt_p_); break_malt_p_ =0; } if (nobreak_malt_p_) { Separating_group_spanner::add_spacing_unit (sep_span_p_, nobreak_malt_p_); - typeset_element (nobreak_malt_p_); + typeset_grob (nobreak_malt_p_); nobreak_malt_p_ =0; } } diff --git a/lily/separation-item.cc b/lily/separation-item.cc index ce426d8dcf..1e48e3fec2 100644 --- a/lily/separation-item.cc +++ b/lily/separation-item.cc @@ -13,14 +13,14 @@ #include "group-interface.hh" void -Separation_item::set_interface (Score_element*s) +Separation_item::set_interface (Grob*s) { s->set_extent_callback (SCM_EOL, X_AXIS); s->set_extent_callback (SCM_EOL, Y_AXIS); } void -Separation_item::add_item (Score_element*s,Item* i) +Separation_item::add_item (Grob*s,Item* i) { assert (i); Pointer_group_interface::add_element (s,"elements",i); @@ -28,13 +28,13 @@ Separation_item::add_item (Score_element*s,Item* i) } Interval -Separation_item::my_width (Score_element *me) +Separation_item::my_width (Grob *me) { Item *item = dynamic_cast (me); Paper_column * pc = item->column_l (); Interval w; - for (SCM s = me->get_elt_property ("elements"); gh_pair_p (s); s = gh_cdr (s)) + 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)) @@ -48,7 +48,7 @@ Separation_item::my_width (Score_element *me) continue; /*UGH UGH*/ } - if (to_boolean (il->get_elt_property ("no-spacing-rods"))) + if (to_boolean (il->get_grob_property ("no-spacing-rods"))) { continue; } diff --git a/lily/side-position-interface.cc b/lily/side-position-interface.cc index c7bbf78aaa..7c15bdb86e 100644 --- a/lily/side-position-interface.cc +++ b/lily/side-position-interface.cc @@ -16,7 +16,7 @@ #include "group-interface.hh" void -Side_position::add_support (Score_element*me, Score_element*e) +Side_position::add_support (Grob*me, Grob*e) { Pointer_group_interface::add_element (me, "side-support-elements",e); } @@ -24,21 +24,21 @@ Side_position::add_support (Score_element*me, Score_element*e) Direction -Side_position::get_direction (Score_element*me) +Side_position::get_direction (Grob*me) { - SCM d = me->get_elt_property ("direction"); + SCM d = me->get_grob_property ("direction"); if (isdir_b (d)) return to_dir (d) ? to_dir (d) : DOWN; Direction relative_dir = UP; - SCM reldir = me->get_elt_property ("side-relative-direction"); // should use a lambda. + SCM reldir = me->get_grob_property ("side-relative-direction"); // should use a lambda. if (isdir_b (reldir)) { relative_dir = to_dir (reldir); } - SCM other_elt = me->get_elt_property ("direction-source"); - Score_element * e = unsmob_element(other_elt); + SCM other_elt = me->get_grob_property ("direction-source"); + Grob * e = unsmob_element(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) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (axis); - Score_element *common = me->parent_l (a); - SCM support = me->get_elt_property ("side-support-elements"); + 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)) { - Score_element * e = unsmob_element (gh_car (s)); + Grob * e = unsmob_element (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)) { - Score_element * e = unsmob_element ( gh_car (s)); + Grob * e = unsmob_element ( gh_car (s)); if (e) { dim.unite (e->extent (common, a)); @@ -86,10 +86,10 @@ Side_position::side_position (SCM element_smob, SCM axis) Direction dir = Side_position::get_direction (me); Real off = me->parent_l (a)->relative_coordinate (common, a); - SCM minimum = me->remove_elt_property ("minimum-space"); + SCM minimum = me->remove_grob_property ("minimum-space"); Real total_off = dim[dir] + off; - SCM padding = me->remove_elt_property ("padding"); + SCM padding = me->remove_grob_property ("padding"); if (gh_number_p (padding)) { total_off += gh_scm2double (padding) * dir; @@ -111,13 +111,13 @@ MAKE_SCHEME_CALLBACK(Side_position,aligned_on_self,2); SCM Side_position::aligned_on_self (SCM element_smob, SCM axis) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (axis); String s ("self-alignment-"); s += (a == X_AXIS) ? "X" : "Y"; - SCM align (me->get_elt_property (s.ch_C())); + SCM align (me->get_grob_property (s.ch_C())); if (gh_number_p (align)) { Interval ext(me->extent (me,a)); @@ -160,7 +160,7 @@ MAKE_SCHEME_CALLBACK(Side_position,quantised_position,2); SCM Side_position::quantised_position (SCM element_smob, SCM ) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (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) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (axis); Direction d = Side_position::get_direction (me); @@ -202,7 +202,7 @@ Side_position::aligned_side (SCM element_smob, SCM axis) { o += - iv[-d]; - SCM pad = me->get_elt_property ("padding"); + SCM pad = me->get_grob_property ("padding"); if (gh_number_p (pad)) o += d *gh_scm2double (pad) ; } @@ -216,18 +216,18 @@ MAKE_SCHEME_CALLBACK(Side_position,centered_on_parent,2); SCM Side_position::centered_on_parent (SCM element_smob, SCM axis) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (axis); - Score_element *him = me->parent_l (a); + Grob *him = me->parent_l (a); return gh_double2scm (him->extent (him,a).center ()); } void -Side_position::add_staff_support (Score_element*me) +Side_position::add_staff_support (Grob*me) { - Score_element* st = Staff_symbol_referencer::staff_symbol_l (me); + Grob* st = Staff_symbol_referencer::staff_symbol_l (me); if (st) { add_support (me,st); @@ -235,7 +235,7 @@ Side_position::add_staff_support (Score_element*me) } void -Side_position::set_axis (Score_element*me, Axis a) +Side_position::set_axis (Grob*me, Axis a) { me->add_offset_callback (Side_position::aligned_side_proc, a); } @@ -244,7 +244,7 @@ Side_position::set_axis (Score_element*me, Axis a) // ugh. doesn't cactch all variants. Axis -Side_position::get_axis (Score_element*me) +Side_position::get_axis (Grob*me) { if (me->has_offset_callback_b (Side_position::aligned_side_proc, X_AXIS) || me->has_offset_callback_b (Side_position::aligned_side_proc , X_AXIS)) @@ -255,33 +255,33 @@ Side_position::get_axis (Score_element*me) } void -Side_position::set_direction (Score_element*me, Direction d) +Side_position::set_direction (Grob*me, Direction d) { - me->set_elt_property ("direction", gh_int2scm (d)); + me->set_grob_property ("direction", gh_int2scm (d)); } void -Side_position::set_minimum_space (Score_element*me, Real m) +Side_position::set_minimum_space (Grob*me, Real m) { - me->set_elt_property ("minimum-space", gh_double2scm (m)); + me->set_grob_property ("minimum-space", gh_double2scm (m)); } void -Side_position::set_padding (Score_element*me, Real p) +Side_position::set_padding (Grob*me, Real p) { - me->set_elt_property ("padding", gh_double2scm (p)); + me->set_grob_property ("padding", gh_double2scm (p)); } bool -Side_position::has_interface (Score_element*me) +Side_position::has_interface (Grob*me) { return me->has_interface (ly_symbol2scm ("side-position-interface")); } bool -Side_position::supported_b (Score_element*me) +Side_position::supported_b (Grob*me) { - SCM s = me->get_elt_property ("side-support-elements"); + SCM s = me->get_grob_property ("side-support-elements"); return gh_pair_p(s); } diff --git a/lily/simple-spacer.cc b/lily/simple-spacer.cc index 9e23cb8c52..320867da3c 100644 --- a/lily/simple-spacer.cc +++ b/lily/simple-spacer.cc @@ -165,7 +165,7 @@ Simple_spacer::my_solve_natural_len () } void -Simple_spacer::add_columns (Link_array cols) +Simple_spacer::add_columns (Link_array cols) { for (int i=0; i < cols.size () - 1; i++) { @@ -174,7 +174,7 @@ Simple_spacer::add_columns (Link_array cols) spring_params == SCM_UNDEFINED && gh_pair_p (s); s = gh_cdr (s)) { - Score_element *other = unsmob_element (gh_caar (s)); + Grob *other = unsmob_element (gh_caar (s)); if (other != cols[i+1]) continue; @@ -210,7 +210,7 @@ Simple_spacer::add_columns (Link_array cols) for (SCM s = Spaceable_element::get_minimum_distances (cols[i]); gh_pair_p (s); s = gh_cdr (s)) { - Score_element * other = unsmob_element (gh_caar (s)); + Grob * other = unsmob_element (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 4d363d3d43..09cecda14e 100644 --- a/lily/slur-engraver.cc +++ b/lily/slur-engraver.cc @@ -17,20 +17,20 @@ class Slur_engraver : public Engraver { Link_array requests_arr_; Link_array new_slur_req_l_arr_; - Link_array slur_l_stack_; - Link_array end_slur_l_arr_; + Link_array slur_l_stack_; + Link_array end_slur_l_arr_; Moment last_start_; void set_melisma (bool); protected: - virtual bool do_try_music (Music*); + virtual bool try_music (Music*); void deprecated_process_music (); - virtual void acknowledge_element (Score_element_info); - virtual void do_pre_move_processing (); - virtual void do_post_move_processing (); + virtual void acknowledge_grob (Grob_info); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); virtual void do_removal_processing (); - virtual void process_acknowledged (); + virtual void create_grobs (); public: VIRTUAL_COPY_CONS (Translator); @@ -43,7 +43,7 @@ Slur_engraver::Slur_engraver () } bool -Slur_engraver::do_try_music (Music *req_l) +Slur_engraver::try_music (Music *req_l) { if (Span_req *sl = dynamic_cast (req_l)) { @@ -88,7 +88,7 @@ Slur_engraver::do_try_music (Music *req_l) } void -Slur_engraver::process_acknowledged () +Slur_engraver::create_grobs () { deprecated_process_music (); } @@ -100,11 +100,11 @@ Slur_engraver::set_melisma (bool m) } void -Slur_engraver::acknowledge_element (Score_element_info info) +Slur_engraver::acknowledge_grob (Grob_info info) { if (Note_column::has_interface (info.elem_l_)) { - Score_element *e =info.elem_l_; + Grob *e =info.elem_l_; for (int i = 0; i < slur_l_stack_.size (); i++) Slur::add_column (slur_l_stack_[i], e); for (int i = 0; i < end_slur_l_arr_.size (); i++) @@ -118,7 +118,7 @@ Slur_engraver::do_removal_processing () for (int i = 0; i < slur_l_stack_.size (); i++) { #if 0 - typeset_element (slur_l_stack_[i]); + typeset_grob (slur_l_stack_[i]); #else /* Let's not typeset unterminated stuff @@ -139,7 +139,7 @@ Slur_engraver::do_removal_processing () void Slur_engraver::deprecated_process_music () { - Link_array start_slur_l_arr; + Link_array start_slur_l_arr; for (int i=0; i< new_slur_req_l_arr_.size (); i++) { Span_req* slur_req_l = new_slur_req_l_arr_[i]; @@ -150,11 +150,11 @@ Slur_engraver::deprecated_process_music () slur_req_l->origin ()->warning (_f ("can't find start of slur")); else { - Score_element* slur = slur_l_stack_.pop (); + Grob* slur = slur_l_stack_.pop (); SCM s = get_property ("slurEndAttachment"); if (gh_symbol_p (s)) { - index_set_cell (slur->get_elt_property ("attachment"), STOP, s); + index_set_cell (slur->get_grob_property ("attachment"), STOP, s); } end_slur_l_arr_.push (slur); requests_arr_.pop (); @@ -164,16 +164,16 @@ Slur_engraver::deprecated_process_music () { // push a new slur onto stack. // (use temp. array to wait for all slur STOPs) - Score_element* slur = new Spanner (get_property ("Slur")); + Grob* slur = new Spanner (get_property ("Slur")); Slur::set_interface (slur); SCM s = get_property ("slurBeginAttachment"); if (gh_symbol_p (s)) { - index_set_cell (slur->get_elt_property ("attachment"), START, s); + index_set_cell (slur->get_grob_property ("attachment"), START, s); } start_slur_l_arr.push (slur); requests_arr_.push (slur_req_l); - announce_element (slur, slur_req_l); + announce_grob (slur, slur_req_l); } } for (int i=0; i < start_slur_l_arr.size (); i++) @@ -182,17 +182,17 @@ Slur_engraver::deprecated_process_music () } void -Slur_engraver::do_pre_move_processing () +Slur_engraver::stop_translation_timestep () { for (int i = 0; i < end_slur_l_arr_.size (); i++) { - typeset_element (end_slur_l_arr_[i]); + typeset_grob (end_slur_l_arr_[i]); } end_slur_l_arr_.clear (); } void -Slur_engraver::do_post_move_processing () +Slur_engraver::start_translation_timestep () { new_slur_req_l_arr_.clear (); SCM m = get_property ("automaticMelismata"); diff --git a/lily/slur.cc b/lily/slur.cc index 887df0ea65..257416602d 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -35,16 +35,16 @@ void -Slur::set_interface (Score_element*me) +Slur::set_interface (Grob*me) { - me->set_elt_property ("attachment", gh_cons (SCM_BOOL_F, SCM_BOOL_F)); + me->set_grob_property ("attachment", gh_cons (SCM_BOOL_F, SCM_BOOL_F)); me->set_interface (ly_symbol2scm ("slur-interface")); } void -Slur::add_column (Score_element*me, Score_element*n) +Slur::add_column (Grob*me, Grob*n) { - if (!gh_pair_p (n->get_elt_property ("note-heads"))) + if (!gh_pair_p (n->get_grob_property ("note-heads"))) warning (_ ("Putting slur over rest. Ignoring.")); else { @@ -56,7 +56,7 @@ Slur::add_column (Score_element*me, Score_element*n) } void -Slur::de_uglyfy (Score_element*me, Slur_bezier_bow* bb, Real default_height) +Slur::de_uglyfy (Grob*me, Slur_bezier_bow* bb, Real default_height) { Real length = bb->curve_.control_[3][X_AXIS] ; Real ff = bb->fit_factor (); @@ -67,7 +67,7 @@ Slur::de_uglyfy (Score_element*me, Slur_bezier_bow* bb, Real default_height) Real h = bb->curve_.control_[i][Y_AXIS] * ff / length; Real f = default_height / length; - SCM up = me->get_elt_property ("de-uglify-parameters"); + SCM up = me->get_grob_property ("de-uglify-parameters"); Real c1 = gh_scm2double (gh_car (up)); Real c2 = gh_scm2double (gh_cadr (up)); @@ -89,10 +89,10 @@ Slur::de_uglyfy (Score_element*me, Slur_bezier_bow* bb, Real default_height) } Direction -Slur::get_default_dir (Score_element*me) +Slur::get_default_dir (Grob*me) { - Link_array encompass_arr = - Pointer_group_interface__extract_elements (me, (Score_element*)0, "note-columns"); + Link_array encompass_arr = + Pointer_group_interface__extract_elements (me, (Grob*)0, "note-columns"); Direction d = DOWN; for (int i=0; i < encompass_arr.size (); i ++) @@ -111,8 +111,8 @@ MAKE_SCHEME_CALLBACK (Slur, after_line_breaking,1); SCM Slur::after_line_breaking (SCM smob) { - Score_element *me = unsmob_element (smob); - if (!scm_ilength (me->get_elt_property ("note-columns"))) + Grob *me = unsmob_element (smob); + if (!scm_ilength (me->get_grob_property ("note-columns"))) { me->suicide (); return SCM_UNSPECIFIED; @@ -124,12 +124,12 @@ Slur::after_line_breaking (SCM smob) void -Slur::check_slope (Score_element *me) +Slur::check_slope (Grob *me) { /* Avoid too steep slurs. */ - SCM s = me->get_elt_property ("slope-limit"); + SCM s = me->get_grob_property ("slope-limit"); if (gh_number_p (s)) { Array encompass = get_encompass_offset_arr (me); @@ -148,16 +148,16 @@ Slur::check_slope (Score_element *me) if (slope > limit) { - Real staff_space = Staff_symbol_referencer::staff_space ((Score_element*)me); - Direction dir = (Direction)gh_scm2int (me->get_elt_property ("direction")); + Real staff_space = Staff_symbol_referencer::staff_space ((Grob*)me); + Direction dir = (Direction)gh_scm2int (me->get_grob_property ("direction")); Direction d = (Direction)(- dir * (sign (dy))); - SCM a = me->get_elt_property ("attachment-offset"); + SCM a = me->get_grob_property ("attachment-offset"); Drul_array o; o[LEFT] = ly_scm2offset (index_cell (a, LEFT)); o[RIGHT] = ly_scm2offset (index_cell (a, RIGHT)); o[d][Y_AXIS] -= (limit - slope) * dx * dir / staff_space; //o[d][Y_AXIS] = attachment[-d][Y_AXIS] + (dx * limit * dir / staff_space); - me->set_elt_property ("attachment-offset", + me->set_grob_property ("attachment-offset", gh_cons (ly_offset2scm (o[LEFT]), ly_offset2scm (o[RIGHT]))); } @@ -165,7 +165,7 @@ Slur::check_slope (Score_element *me) } void -Slur::set_extremities (Score_element *me) +Slur::set_extremities (Grob *me) { if (!Directional_element_interface::get (me)) Directional_element_interface::set (me, get_default_dir (me)); @@ -173,16 +173,16 @@ Slur::set_extremities (Score_element *me) Direction dir = LEFT; do { - if (!gh_symbol_p (index_cell (me->get_elt_property ("attachment"), dir))) + if (!gh_symbol_p (index_cell (me->get_grob_property ("attachment"), dir))) { - for (SCM s = me->get_elt_property ("extremity-rules"); + for (SCM s = me->get_grob_property ("extremity-rules"); s != SCM_EOL; s = gh_cdr (s)) { SCM r = gh_call2 (gh_caar (s), me->self_scm (), gh_int2scm ((int)dir)); if (r != SCM_BOOL_F) { - index_set_cell (me->get_elt_property ("attachment"), dir, + index_set_cell (me->get_grob_property ("attachment"), dir, gh_cdar (s)); break; } @@ -196,15 +196,15 @@ Slur::set_extremities (Score_element *me) Real -Slur::get_first_notecolumn_y (Score_element *me, Direction dir) +Slur::get_first_notecolumn_y (Grob *me, Direction dir) { - Score_element *col = dir == LEFT - ? unsmob_element (gh_car (scm_reverse (me->get_elt_property + Grob *col = dir == LEFT + ? unsmob_element (gh_car (scm_reverse (me->get_grob_property ("note-columns")))) : unsmob_element - (gh_car (me->get_elt_property ("note-columns"))); + (gh_car (me->get_grob_property ("note-columns"))); - Score_element *common[] = + Grob *common[] = { 0, me->common_refpoint (col, Y_AXIS) @@ -223,7 +223,7 @@ Slur::get_first_notecolumn_y (Score_element *me, Direction dir) } Offset -Slur::broken_trend_offset (Score_element *me, Direction dir) +Slur::broken_trend_offset (Grob *me, Direction dir) { /* A broken slur should maintain the same vertical trend @@ -238,14 +238,14 @@ Slur::broken_trend_offset (Score_element *me, Direction dir) { if (mother->broken_into_l_arr_[i - dir] == me) { - Score_element *neighbour = mother->broken_into_l_arr_[i]; + Grob *neighbour = mother->broken_into_l_arr_[i]; if (dir == RIGHT) - neighbour->set_elt_property ("direction", - me->get_elt_property ("direction")); + neighbour->set_grob_property ("direction", + me->get_grob_property ("direction")); Real neighbour_y = get_first_notecolumn_y (neighbour, dir); Real y = get_first_notecolumn_y (me, -dir); - int neighbour_cols = scm_ilength (neighbour->get_elt_property ("note-columns")); - int cols = scm_ilength (me->get_elt_property ("note-columns")); + int neighbour_cols = scm_ilength (neighbour->get_grob_property ("note-columns")); + int cols = scm_ilength (me->get_grob_property ("note-columns")); o = Offset (0, (y*neighbour_cols + neighbour_y*cols) / (cols + neighbour_cols)); break; @@ -256,26 +256,26 @@ Slur::broken_trend_offset (Score_element *me, Direction dir) } Offset -Slur::get_attachment (Score_element *me, Direction dir, - Score_element **common) +Slur::get_attachment (Grob *me, Direction dir, + Grob **common) { - SCM s = me->get_elt_property ("attachment"); + SCM s = me->get_grob_property ("attachment"); if (!gh_symbol_p (index_cell (s, dir))) { set_extremities (me); - s = me->get_elt_property ("attachment"); + s = me->get_grob_property ("attachment"); } SCM a = dir == LEFT ? gh_car (s) : gh_cdr (s); Spanner*sp = dynamic_cast(me); String str = ly_symbol2string (a); - Real staff_space = Staff_symbol_referencer::staff_space ((Score_element*)me); + Real staff_space = Staff_symbol_referencer::staff_space ((Grob*)me); Real hs = staff_space / 2.0; Offset o; - Score_element *stem = 0; + Grob *stem = 0; if (Note_column::has_interface (sp->get_bound (dir))) { - Score_element * n =sp->get_bound (dir); + Grob * n =sp->get_bound (dir); if ((stem = Note_column::stem_l (n))) { @@ -334,9 +334,9 @@ Slur::get_attachment (Score_element *me, Direction dir, } - SCM alist = me->get_elt_property ("extremity-offset-alist"); + SCM alist = me->get_grob_property ("extremity-offset-alist"); int stemdir = stem ? Stem::get_direction (stem) : 1; - int slurdir = gh_scm2int (me->get_elt_property ("direction")); + int slurdir = gh_scm2int (me->get_grob_property ("direction")); SCM l = scm_assoc (scm_listify (a, gh_int2scm (stemdir * dir), @@ -358,18 +358,18 @@ int stemdir = stem ? Stem::get_direction (stem) : 1; - me->relative_coordinate (common[Y_AXIS], Y_AXIS); } - o += ly_scm2offset (index_cell (me->get_elt_property ("attachment-offset"), + o += ly_scm2offset (index_cell (me->get_grob_property ("attachment-offset"), dir)) * staff_space; return o; } Offset -Slur::encompass_offset (Score_element*me, - Score_element* col, - Score_element **common) +Slur::encompass_offset (Grob*me, + Grob* col, + Grob **common) { Offset o; - Score_element* stem_l = unsmob_element (col->get_elt_property ("stem")); + Grob* stem_l = unsmob_element (col->get_grob_property ("stem")); Direction dir = Directional_element_interface::get (me); @@ -402,24 +402,24 @@ Slur::encompass_offset (Score_element*me, /* leave a gap: slur mustn't touch head/stem */ - o[Y_AXIS] += dir * gh_scm2double (me->get_elt_property ("y-free")) * + o[Y_AXIS] += dir * gh_scm2double (me->get_grob_property ("y-free")) * 1.0; return o; } Array -Slur::get_encompass_offset_arr (Score_element *me) +Slur::get_encompass_offset_arr (Grob *me) { Spanner*sp = dynamic_cast(me); - SCM eltlist = me->get_elt_property ("note-columns"); - Score_element *common[] = {me->common_refpoint (eltlist, X_AXIS), + SCM eltlist = me->get_grob_property ("note-columns"); + Grob *common[] = {me->common_refpoint (eltlist, X_AXIS), me->common_refpoint (eltlist, Y_AXIS)}; common[X_AXIS] = common[X_AXIS]->common_refpoint (sp->get_bound (RIGHT), X_AXIS); common[X_AXIS] = common[X_AXIS]->common_refpoint (sp->get_bound (LEFT), X_AXIS); - Link_array encompass_arr; + Link_array encompass_arr; while (gh_pair_p (eltlist)) { encompass_arr.push (unsmob_element (gh_car (eltlist))); @@ -482,14 +482,14 @@ MAKE_SCHEME_CALLBACK(Slur,set_spacing_rods,1); SCM Slur::set_spacing_rods (SCM smob) { - Score_element*me = unsmob_element (smob); + Grob*me = unsmob_element (smob); Rod r; Spanner*sp = dynamic_cast(me); r.item_l_drul_[LEFT] = sp->get_bound (LEFT); r.item_l_drul_[RIGHT] = sp->get_bound (RIGHT); r.distance_f_ = - gh_scm2double (me->get_elt_property ("minimum-length")) + gh_scm2double (me->get_grob_property ("minimum-length")) * 1.0; r.add_to_cols (); @@ -504,23 +504,23 @@ MAKE_SCHEME_CALLBACK (Slur, brew_molecule,1); SCM Slur::brew_molecule (SCM smob) { - Score_element * me = unsmob_element (smob); - if (!scm_ilength (me->get_elt_property ("note-columns"))) + Grob * me = unsmob_element (smob); + if (!scm_ilength (me->get_grob_property ("note-columns"))) { me->suicide (); return SCM_EOL; } Real thick = me->paper_l ()->get_var ("stafflinethickness") * - gh_scm2double (me->get_elt_property ("thickness")); + gh_scm2double (me->get_grob_property ("thickness")); Bezier one = get_curve (me); // get_curve may suicide - if (!scm_ilength (me->get_elt_property ("note-columns"))) + if (!scm_ilength (me->get_grob_property ("note-columns"))) return SCM_EOL; Molecule a; - SCM d = me->get_elt_property ("dashed"); + SCM d = me->get_grob_property ("dashed"); if (gh_number_p (d)) a = Lookup::dashed_slur (one, thick, thick * gh_scm2double (d)); else @@ -530,11 +530,11 @@ Slur::brew_molecule (SCM smob) } void -Slur::set_control_points (Score_element*me) +Slur::set_control_points (Grob*me) { - Real staff_space = Staff_symbol_referencer::staff_space ((Score_element*)me); + Real staff_space = Staff_symbol_referencer::staff_space ((Grob*)me); - SCM details = me->get_elt_property ("details"); + SCM details = me->get_grob_property ("details"); SCM h_inf_scm = scm_assq (ly_symbol2scm ("height-limit"), details); SCM r_0_scm = scm_assq (ly_symbol2scm ("ratio"), details); @@ -550,7 +550,7 @@ Slur::set_control_points (Score_element*me) Real length = bb.curve_.control_[3][X_AXIS]; Real default_height = slur_height (length, h_inf, r_0); - SCM ssb = me->get_elt_property ("beautiful"); + SCM ssb = me->get_grob_property ("beautiful"); Real sb = 0; if (gh_number_p (ssb)) sb = gh_scm2double (ssb); @@ -594,28 +594,28 @@ Slur::set_control_points (Score_element*me) } } - me->set_elt_property ("control-points", controls); + me->set_grob_property ("control-points", controls); } Bezier -Slur::get_curve (Score_element*me) +Slur::get_curve (Grob*me) { Bezier b; int i = 0; if (!Directional_element_interface::get (me) - || ! gh_symbol_p (index_cell (me->get_elt_property ("attachment"), LEFT)) - || ! gh_symbol_p (index_cell (me->get_elt_property ("attachment"), RIGHT))) + || ! gh_symbol_p (index_cell (me->get_grob_property ("attachment"), LEFT)) + || ! gh_symbol_p (index_cell (me->get_grob_property ("attachment"), RIGHT))) set_extremities (me); - if (!gh_pair_p (me->get_elt_property ("control-points"))) + if (!gh_pair_p (me->get_grob_property ("control-points"))) set_control_points (me); // set_control_points may suicide - if (!scm_ilength (me->get_elt_property ("note-columns"))) + if (!scm_ilength (me->get_grob_property ("note-columns"))) return b; - for (SCM s= me->get_elt_property ("control-points"); s != SCM_EOL; s = gh_cdr (s)) + for (SCM s= me->get_grob_property ("control-points"); s != SCM_EOL; s = gh_cdr (s)) { b.control_[i] = ly_scm2offset (gh_car (s)); i++; @@ -643,7 +643,7 @@ Slur::get_curve (Score_element*me) bool -Slur::has_interface (Score_element*me) +Slur::has_interface (Grob*me) { return me->has_interface (ly_symbol2scm ("slur-interface")); } diff --git a/lily/spaceable-element.cc b/lily/spaceable-element.cc index f2478b56c4..fe47ec1c65 100644 --- a/lily/spaceable-element.cc +++ b/lily/spaceable-element.cc @@ -8,19 +8,19 @@ */ #include "spaceable-element.hh" -#include "score-element.hh" +#include "grob.hh" #include "warn.hh" SCM -Spaceable_element::get_minimum_distances ( Score_element*me) +Spaceable_element::get_minimum_distances ( Grob*me) { - return me->get_elt_property ("minimum-distances"); + return me->get_grob_property ("minimum-distances"); } /*todo: merge code of spring & rod? */ void -Spaceable_element::add_rod (Score_element *me , Score_element * p, Real d) +Spaceable_element::add_rod (Grob *me , Grob * p, Real d) { SCM mins = get_minimum_distances (me); SCM newdist = gh_double2scm (d); @@ -36,11 +36,11 @@ Spaceable_element::add_rod (Score_element *me , Score_element * p, Real d) } mins = gh_cons (gh_cons (p->self_scm (), newdist), mins); - me->set_elt_property ("minimum-distances", mins); + me->set_grob_property ("minimum-distances", mins); } void -Spaceable_element::add_spring (Score_element*me, Score_element * p, Real d, Real strength) +Spaceable_element::add_spring (Grob*me, Grob * p, Real d, Real strength) { SCM mins = get_ideal_distances (me); SCM newdist= gh_double2scm (d); @@ -56,27 +56,27 @@ Spaceable_element::add_spring (Score_element*me, Score_element * p, Real d, Real SCM newstrength= gh_double2scm (strength); mins = gh_cons (gh_cons (p->self_scm (), gh_cons (newdist, newstrength)), mins); - me->set_elt_property ("ideal-distances", mins); + me->set_grob_property ("ideal-distances", mins); } SCM -Spaceable_element::get_ideal_distances (Score_element*me) +Spaceable_element::get_ideal_distances (Grob*me) { - return me->get_elt_property ("ideal-distances"); + return me->get_grob_property ("ideal-distances"); } void -Spaceable_element::remove_interface (Score_element*me) +Spaceable_element::remove_interface (Grob*me) { - me->remove_elt_property ("minimum-distances"); - me->remove_elt_property ("ideal-distances"); - me->remove_elt_property ("dir-list"); + me->remove_grob_property ("minimum-distances"); + me->remove_grob_property ("ideal-distances"); + me->remove_grob_property ("dir-list"); } void -Spaceable_element::set_interface (Score_element*me) +Spaceable_element::set_interface (Grob*me) { me->set_interface (ly_symbol2scm ("spaceable-element-interface")); } diff --git a/lily/spacing-engraver.cc b/lily/spacing-engraver.cc index 324c05cf2c..3c6cbac76d 100644 --- a/lily/spacing-engraver.cc +++ b/lily/spacing-engraver.cc @@ -16,13 +16,13 @@ struct Rhythmic_tuple { - Score_element_info info_; + Grob_info info_; Moment end_; Rhythmic_tuple () { } - Rhythmic_tuple (Score_element_info i, Moment m ) + Rhythmic_tuple (Grob_info i, Moment m ) { info_ = i; end_ = m; @@ -45,9 +45,9 @@ class Spacing_engraver : public Engraver Spanner * spacing_p_; protected: VIRTUAL_COPY_CONS(Translator); - virtual void acknowledge_element (Score_element_info); - virtual void do_post_move_processing (); - virtual void do_pre_move_processing (); + 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 (); public: @@ -78,25 +78,25 @@ Spacing_engraver::do_creation_processing () spacing_p_ =new Spanner (get_property ("SpacingSpanner")); Spacing_spanner::set_interface (spacing_p_); spacing_p_->set_bound (LEFT, unsmob_element (get_property ("currentCommandColumn"))); - announce_element (spacing_p_, 0); + announce_grob (spacing_p_, 0); } void Spacing_engraver::do_removal_processing () { - Score_element * p = unsmob_element (get_property ("currentCommandColumn")); + Grob * p = unsmob_element (get_property ("currentCommandColumn")); spacing_p_->set_bound (RIGHT, p); - typeset_element (spacing_p_); + typeset_grob (spacing_p_); spacing_p_ =0; } void -Spacing_engraver::acknowledge_element (Score_element_info i) +Spacing_engraver::acknowledge_grob (Grob_info i) { - if (to_boolean (i.elem_l_->get_elt_property ("grace"))) + if (to_boolean (i.elem_l_->get_grob_property ("grace"))) return; - if (to_boolean (i.elem_l_->get_elt_property ("non-rhythmic"))) + if (to_boolean (i.elem_l_->get_grob_property ("non-rhythmic"))) return; if (Rhythmic_req * r = dynamic_cast(i.req_l_)) @@ -107,7 +107,7 @@ Spacing_engraver::acknowledge_element (Score_element_info i) } void -Spacing_engraver::do_pre_move_processing () +Spacing_engraver::stop_translation_timestep () { Moment shortest_playing; shortest_playing.set_infinite (1); @@ -141,12 +141,12 @@ Spacing_engraver::do_pre_move_processing () SCM sh = shortest_playing.smobbed_copy( ); SCM st = starter.smobbed_copy(); - sc->set_elt_property ("shortest-playing-duration", sh); - sc->set_elt_property ("shortest-starter-duration", st); + sc->set_grob_property ("shortest-playing-duration", sh); + sc->set_grob_property ("shortest-starter-duration", st); } void -Spacing_engraver::do_post_move_processing () +Spacing_engraver::start_translation_timestep () { Moment now = now_mom (); stopped_durations_.clear (); diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc index c477bd17c2..3e2e5c7328 100644 --- a/lily/spacing-spanner.cc +++ b/lily/spacing-spanner.cc @@ -17,7 +17,7 @@ #include "misc.hh" void -Spacing_spanner::set_interface (Score_element*me) +Spacing_spanner::set_interface (Grob*me) { me->set_extent_callback (SCM_EOL, X_AXIS); me->set_extent_callback (SCM_EOL, Y_AXIS) ; @@ -37,7 +37,7 @@ Spacing_spanner::set_interface (Score_element*me) */ void -Spacing_spanner::do_measure (Score_element*me, Link_array cols) +Spacing_spanner::do_measure (Grob*me, Link_array cols) { Moment shortest; Moment mean_shortest; @@ -45,7 +45,7 @@ Spacing_spanner::do_measure (Score_element*me, Link_array cols) /* space as if this duration is present. */ - Moment base_shortest_duration = *unsmob_moment (me->get_elt_property ("maximum-duration-for-spacing")); + Moment base_shortest_duration = *unsmob_moment (me->get_grob_property ("maximum-duration-for-spacing")); shortest.set_infinite (1); int n = 0; @@ -53,7 +53,7 @@ Spacing_spanner::do_measure (Score_element*me, Link_array cols) { if (dynamic_cast (cols[i])->musical_b ()) { - SCM st = cols[i]->get_elt_property ("shortest-starter-duration"); + SCM st = cols[i]->get_grob_property ("shortest-starter-duration"); Moment this_shortest = *unsmob_moment(st); shortest = shortest cols) s.item_l_drul_[LEFT] = lc; s.item_l_drul_[RIGHT] = rc; - SCM hint = lc->get_elt_property ("extra-space"); - SCM next_hint = rc->get_elt_property ("extra-space"); - SCM stretch_hint = lc->get_elt_property ("stretch-distance"); - SCM next_stretch_hint = rc->get_elt_property ("stretch-distance"); + SCM hint = lc->get_grob_property ("extra-space"); + SCM next_hint = rc->get_grob_property ("extra-space"); + SCM stretch_hint = lc->get_grob_property ("stretch-distance"); + SCM next_stretch_hint = rc->get_grob_property ("stretch-distance"); Real left_distance; if (gh_pair_p (hint)) @@ -127,11 +127,11 @@ Spacing_spanner::do_measure (Score_element*me, Link_array cols) We want the space before barline to be like the note spacing in the measure. */ - SCM sfac =lc->get_elt_property ("space-factor"); + SCM sfac =lc->get_grob_property ("space-factor"); if (Item::breakable_b (lc) || lc->original_l_) { s.strength_f_ = - gh_scm2double (lc->get_elt_property ("column-space-strength")); + gh_scm2double (lc->get_grob_property ("column-space-strength")); } else if (gh_number_p (sfac)) left_distance *= gh_scm2double (sfac); @@ -153,10 +153,10 @@ Spacing_spanner::do_measure (Score_element*me, Link_array cols) */ if (rc->musical_b ()) { - if (to_boolean (rc->get_elt_property ("contains-grace"))) - right_dist *= gh_scm2double (rc->get_elt_property ("before-grace-spacing-factor")); // fixme. + if (to_boolean (rc->get_grob_property ("contains-grace"))) + right_dist *= gh_scm2double (rc->get_grob_property ("before-grace-spacing-factor")); // fixme. else - right_dist *= gh_scm2double (lc->get_elt_property ("before-musical-spacing-factor")); + right_dist *= gh_scm2double (lc->get_grob_property ("before-musical-spacing-factor")); } s.distance_f_ = left_distance + right_dist; @@ -198,7 +198,7 @@ Spacing_spanner::do_measure (Score_element*me, Link_array cols) Do something if breakable column has no spacing hints set. */ Real -Spacing_spanner::default_bar_spacing (Score_element*me, Score_element *lc, Score_element *rc, +Spacing_spanner::default_bar_spacing (Grob*me, Grob *lc, Grob *rc, Moment shortest) { Real symbol_distance = lc->extent (lc,X_AXIS)[RIGHT] ; @@ -227,24 +227,24 @@ Spacing_spanner::default_bar_spacing (Score_element*me, Score_element *lc, Score */ Real -Spacing_spanner::get_duration_space (Score_element*me, Moment d, Moment shortest) +Spacing_spanner::get_duration_space (Grob*me, Moment d, Moment shortest) { Real log = log_2 (shortest); - Real k = gh_scm2double (me->get_elt_property ("arithmetic-basicspace")) + Real k = gh_scm2double (me->get_grob_property ("arithmetic-basicspace")) - log; - return (log_2 (d) + k) * gh_scm2double (me->get_elt_property ("arithmetic-multiplier")); + return (log_2 (d) + k) * gh_scm2double (me->get_grob_property ("arithmetic-multiplier")); } Real -Spacing_spanner::note_spacing (Score_element*me, Score_element *lc, Score_element *rc, +Spacing_spanner::note_spacing (Grob*me, Grob *lc, Grob *rc, Moment shortest) { Moment shortest_playing_len = 0; - SCM s = lc->get_elt_property ("shortest-playing-duration"); + SCM s = lc->get_grob_property ("shortest-playing-duration"); - // SCM s = lc->get_elt_property ("mean-playing-duration"); + // SCM s = lc->get_grob_property ("mean-playing-duration"); if (unsmob_moment (s)) shortest_playing_len = *unsmob_moment(s); @@ -291,10 +291,10 @@ Spacing_spanner::note_spacing (Score_element*me, Score_element *lc, Score_elemen This routine reads the DIR-LIST property of both its L and R arguments. */ Real -Spacing_spanner::stem_dir_correction (Score_element*me, Score_element*l, Score_element*r) +Spacing_spanner::stem_dir_correction (Grob*me, Grob*l, Grob*r) { - SCM dl = l->get_elt_property ("dir-list"); - SCM dr = r->get_elt_property ("dir-list"); + SCM dl = l->get_grob_property ("dir-list"); + SCM dr = r->get_grob_property ("dir-list"); if (scm_ilength (dl) != 1 || scm_ilength (dr) != 1) return 0.; @@ -311,7 +311,7 @@ Spacing_spanner::stem_dir_correction (Score_element*me, Score_element*l, Score_e Real correction = 0.0; - Real ssc = gh_scm2double (me->get_elt_property("stem-spacing-correction")); + Real ssc = gh_scm2double (me->get_grob_property("stem-spacing-correction")); if (d1 && d2 && d1 * d2 == -1) { @@ -327,17 +327,17 @@ MAKE_SCHEME_CALLBACK(Spacing_spanner, set_springs,1); SCM Spacing_spanner::set_springs (SCM smob) { - Score_element *me = unsmob_element (smob); - Link_array all (me->pscore_l_->line_l_->column_l_arr ()) ; + Grob *me = unsmob_element (smob); + Link_array all (me->pscore_l_->line_l_->column_l_arr ()) ; int j = 0; for (int i = 1; i < all.size (); i++) { - Score_element *sc = all[i]; + Grob *sc = all[i]; if (Item::breakable_b (sc)) { - Link_array measure (all.slice (j, i+1)); + Link_array measure (all.slice (j, i+1)); do_measure (me, measure); j = i; } diff --git a/lily/span-arpeggio-engraver.cc b/lily/span-arpeggio-engraver.cc index d90b51df24..c1f92a775d 100644 --- a/lily/span-arpeggio-engraver.cc +++ b/lily/span-arpeggio-engraver.cc @@ -26,13 +26,13 @@ public: Span_arpeggio_engraver (); protected: - virtual void acknowledge_element (Score_element_info); - virtual void process_acknowledged (); - virtual void do_pre_move_processing (); + virtual void acknowledge_grob (Grob_info); + virtual void create_grobs (); + virtual void stop_translation_timestep (); private: Item *span_arpeggio_; - Link_array arpeggios_; + Link_array arpeggios_; }; @@ -42,7 +42,7 @@ Span_arpeggio_engraver::Span_arpeggio_engraver () } void -Span_arpeggio_engraver::acknowledge_element (Score_element_info info) +Span_arpeggio_engraver::acknowledge_grob (Grob_info info) { if (info.origin_trans_l_arr (this).size () && Arpeggio::has_interface (info.elem_l_)) @@ -52,7 +52,7 @@ Span_arpeggio_engraver::acknowledge_element (Score_element_info info) } void -Span_arpeggio_engraver::process_acknowledged () +Span_arpeggio_engraver::create_grobs () { /* connectArpeggios is slightly brusque; we should really read a elt @@ -66,12 +66,12 @@ Span_arpeggio_engraver::process_acknowledged () && to_boolean (get_property ("connectArpeggios"))) { span_arpeggio_ = new Item (get_property ("Arpeggio")); - announce_element (span_arpeggio_, 0); + announce_grob (span_arpeggio_, 0); } } void -Span_arpeggio_engraver::do_pre_move_processing () +Span_arpeggio_engraver::stop_translation_timestep () { if (span_arpeggio_) { @@ -81,10 +81,10 @@ Span_arpeggio_engraver::do_pre_move_processing () */ for (int i=0; i < arpeggios_.size (); i ++) { - for (SCM s = arpeggios_[i]->get_elt_property ("stems"); + for (SCM s = arpeggios_[i]->get_grob_property ("stems"); gh_pair_p (s); s = gh_cdr (s)) Group_interface::add_thing (span_arpeggio_, "stems", gh_car (s)); - for (SCM s = arpeggios_[i]->get_elt_property ("side-support-elements"); + for (SCM s = arpeggios_[i]->get_grob_property ("side-support-elements"); gh_pair_p (s); s = gh_cdr (s)) Group_interface::add_thing (span_arpeggio_, "side-support-elements", gh_car (s)); @@ -92,10 +92,10 @@ Span_arpeggio_engraver::do_pre_move_processing () we can't kill the children, since we don't want to the previous note to bump into the span arpeggio; so we make it transparent. */ - arpeggios_[i]->set_elt_property ("molecule-callback", SCM_BOOL_T); + arpeggios_[i]->set_grob_property ("molecule-callback", SCM_BOOL_T); } - typeset_element (span_arpeggio_); + typeset_grob (span_arpeggio_); span_arpeggio_ = 0; } arpeggios_.clear (); diff --git a/lily/span-bar-engraver.cc b/lily/span-bar-engraver.cc index 4ac4a896cd..7674d05dc1 100644 --- a/lily/span-bar-engraver.cc +++ b/lily/span-bar-engraver.cc @@ -32,8 +32,8 @@ public: VIRTUAL_COPY_CONS(Translator); Span_bar_engraver(); protected: - virtual void acknowledge_element (Score_element_info); - virtual void do_pre_move_processing(); + virtual void acknowledge_grob (Grob_info); + virtual void stop_translation_timestep(); }; @@ -46,7 +46,7 @@ Span_bar_engraver::Span_bar_engraver() void -Span_bar_engraver::acknowledge_element (Score_element_info i) +Span_bar_engraver::acknowledge_grob (Grob_info i) { int depth = i.origin_trans_l_arr (this).size(); if (depth > 1 @@ -63,12 +63,12 @@ Span_bar_engraver::acknowledge_element (Score_element_info i) spanbar_p_->set_parent (bar_l_arr_[0], Y_AXIS); spanbar_p_->set_parent (bar_l_arr_[0], X_AXIS); - announce_element (spanbar_p_,0); + announce_grob (spanbar_p_,0); } } } void -Span_bar_engraver::do_pre_move_processing() +Span_bar_engraver::stop_translation_timestep() { if (spanbar_p_) { @@ -76,11 +76,11 @@ Span_bar_engraver::do_pre_move_processing() Span_bar::add_bar( spanbar_p_,bar_l_arr_[i]); SCM vissym =ly_symbol2scm ("visibility-lambda"); - SCM vis = bar_l_arr_[0]->get_elt_property (vissym); - if (scm_equal_p (spanbar_p_->get_elt_property (vissym), vis) != SCM_BOOL_T) - spanbar_p_->set_elt_property (vissym, vis); + SCM vis = bar_l_arr_[0]->get_grob_property (vissym); + if (scm_equal_p (spanbar_p_->get_grob_property (vissym), vis) != SCM_BOOL_T) + spanbar_p_->set_grob_property (vissym, vis); - typeset_element (spanbar_p_); + typeset_grob (spanbar_p_); spanbar_p_ =0; } bar_l_arr_.set_size (0); diff --git a/lily/span-bar.cc b/lily/span-bar.cc index 1da4c197af..bd02b8afc6 100644 --- a/lily/span-bar.cc +++ b/lily/span-bar.cc @@ -14,11 +14,11 @@ #include "warn.hh" #include "axis-group-interface.hh" #include "group-interface.hh" -#include "score-element.hh" +#include "grob.hh" #include "bar.hh" void -Span_bar::add_bar (Score_element*me, Score_element*b) +Span_bar::add_bar (Grob*me, Grob*b) { Pointer_group_interface::add_element (me,"elements", b); @@ -29,10 +29,10 @@ MAKE_SCHEME_CALLBACK(Span_bar,width_callback,2); SCM Span_bar::width_callback (SCM element_smob, SCM scm_axis) { - Score_element *se = unsmob_element (element_smob); + Grob *se = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (scm_axis); assert (a == X_AXIS); - String gl = ly_scm2string (se->get_elt_property ("glyph")); + String gl = ly_scm2string (se->get_grob_property ("glyph")); /* urg. @@ -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) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Axis a = (Axis) gh_scm2int (axis); assert (a == Y_AXIS); Interval i (get_spanned_interval (me)); @@ -74,7 +74,7 @@ Span_bar::center_on_spanned_callback (SCM element_smob, SCM axis) } void -Span_bar::evaluate_empty (Score_element*me) +Span_bar::evaluate_empty (Grob*me) { /* TODO: filter all hara-kiried out of ELEMENS list, and then @@ -82,19 +82,19 @@ Span_bar::evaluate_empty (Score_element*me) center_on_spanned_callback() as well. */ - if (!gh_pair_p (me->get_elt_property ("elements"))) + if (!gh_pair_p (me->get_grob_property ("elements"))) { me->suicide (); } } void -Span_bar::evaluate_glyph (Score_element*me) +Span_bar::evaluate_glyph (Grob*me) { - SCM elts = me->get_elt_property ("elements"); - Score_element * b = unsmob_element (gh_car (elts)); + SCM elts = me->get_grob_property ("elements"); + Grob * b = unsmob_element (gh_car (elts)); SCM glsym =ly_symbol2scm ("glyph"); - SCM gl =b ->get_elt_property (glsym); + SCM gl =b ->get_grob_property (glsym); if (!gh_string_p (gl)) { me->suicide (); @@ -117,12 +117,12 @@ Span_bar::evaluate_glyph (Score_element*me) } gl = ly_str02scm (type.ch_C()); - if (scm_equal_p (me->get_elt_property (glsym), gl) != SCM_BOOL_T) - me->set_elt_property (glsym, gl); + if (scm_equal_p (me->get_grob_property (glsym), gl) != SCM_BOOL_T) + me->set_grob_property (glsym, gl); } Interval -Span_bar::get_spanned_interval (Score_element*me) +Span_bar::get_spanned_interval (Grob*me) { return ly_scm2interval (Axis_group_interface::group_extent_callback (me->self_scm(), gh_int2scm (Y_AXIS))); } @@ -132,7 +132,7 @@ MAKE_SCHEME_CALLBACK(Span_bar,get_bar_size,1); SCM Span_bar::get_bar_size (SCM smob) { - Score_element* me = unsmob_element (smob); + Grob* me = unsmob_element (smob); Interval iv (get_spanned_interval (me)); if (iv.empty_b ()) { @@ -146,7 +146,7 @@ Span_bar::get_bar_size (SCM smob) } void -Span_bar::set_interface (Score_element *me) +Span_bar::set_interface (Grob *me) { Bar::set_interface (me); @@ -155,7 +155,7 @@ Span_bar::set_interface (Score_element *me) } bool -Span_bar::has_interface (Score_element*m) +Span_bar::has_interface (Grob*m) { return m && m->has_interface (ly_symbol2scm ("span-bar-interface")); } diff --git a/lily/span-dynamic-performer.cc b/lily/span-dynamic-performer.cc index 2fb2e818a2..9f6d490fee 100644 --- a/lily/span-dynamic-performer.cc +++ b/lily/span-dynamic-performer.cc @@ -28,12 +28,12 @@ public: Span_dynamic_performer (); protected: - virtual bool do_try_music (Music*); - virtual void acknowledge_element (Audio_element_info); - virtual void process_acknowledged (); + virtual bool try_music (Music*); + virtual void acknowledge_grob (Audio_element_info); + virtual void create_grobs (); void deprecated_process_music (); - virtual void do_pre_move_processing (); - virtual void do_post_move_processing (); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); private: Audio_dynamic* audio_p_; @@ -58,7 +58,7 @@ Span_dynamic_performer::Span_dynamic_performer () } void -Span_dynamic_performer::acknowledge_element (Audio_element_info i) +Span_dynamic_performer::acknowledge_grob (Audio_element_info i) { if (Audio_dynamic * d = dynamic_cast (i.elem_l_)) { @@ -109,7 +109,7 @@ Span_dynamic_performer::deprecated_process_music () } void -Span_dynamic_performer::process_acknowledged () +Span_dynamic_performer::create_grobs () { deprecated_process_music (); if (span_req_l_drul_[STOP]) @@ -127,7 +127,7 @@ Span_dynamic_performer::process_acknowledged () } void -Span_dynamic_performer::do_pre_move_processing () +Span_dynamic_performer::stop_translation_timestep () { if (finished_dynamic_tuple_arr_.size () > 1) { @@ -173,14 +173,14 @@ Span_dynamic_performer::do_pre_move_processing () } void -Span_dynamic_performer::do_post_move_processing () +Span_dynamic_performer::start_translation_timestep () { span_req_l_drul_[STOP] = 0; span_req_l_drul_[START] = 0; } bool -Span_dynamic_performer::do_try_music (Music* r) +Span_dynamic_performer::try_music (Music* r) { if (Span_req * s = dynamic_cast(r)) { diff --git a/lily/spanner.cc b/lily/spanner.cc index 40d6710d02..56bce58a58 100644 --- a/lily/spanner.cc +++ b/lily/spanner.cc @@ -68,7 +68,7 @@ Spanner::do_break_processing () span_p->set_bound (RIGHT, bound); assert (span_p->line_l ()); - span_p->line_l ()->typeset_element (span_p); + span_p->line_l ()->typeset_grob (span_p); broken_into_l_arr_.push (span_p); } } @@ -126,7 +126,7 @@ Spanner::do_break_processing () } else { - bounds[LEFT]->line_l ()->typeset_element (span_p); + bounds[LEFT]->line_l ()->typeset_grob (span_p); broken_into_l_arr_.push (span_p); } } @@ -169,7 +169,7 @@ Spanner::get_bound (Direction d) const } void -Spanner::set_bound(Direction d, Score_element*s) +Spanner::set_bound(Direction d, Grob*s) { Item * i = dynamic_cast (s); if (!i) @@ -204,14 +204,14 @@ Spanner::set_bound(Direction d, Score_element*s) Spanner::Spanner (SCM s) - : Score_element (s) + : Grob (s) { spanned_drul_[LEFT]=0; spanned_drul_[RIGHT]=0; } Spanner::Spanner (Spanner const &s) - : Score_element (s) + : Grob (s) { spanned_drul_[LEFT] = spanned_drul_[RIGHT] =0; } @@ -240,7 +240,7 @@ Spanner::line_l() const } -Score_element* +Grob* Spanner::find_broken_piece (Line_of_score*l) const { int idx = binsearch_link_array (broken_into_l_arr_, (Spanner*)l, Spanner::compare); @@ -369,7 +369,7 @@ extend_spanner_over_elements (SCM value, SCM extremal_pair) a pointer to the staffsymbol in S */ void -extend_spanner_over_elements (Score_element*s) +extend_spanner_over_elements (Grob*s) { Spanner*sp = dynamic_cast (s); @@ -379,8 +379,8 @@ extend_spanner_over_elements (Score_element*s) SCM pair = gh_cons (s1,s2); extend_spanner_over_elements (sp->mutable_property_alist_, pair); - Score_element *p1 = unsmob_element (gh_car (pair)); - Score_element* p2 = unsmob_element (gh_cdr (pair)); + Grob *p1 = unsmob_element (gh_car (pair)); + Grob* p2 = unsmob_element (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 e7d7561fc9..e4381f941c 100644 --- a/lily/staff-performer.cc +++ b/lily/staff-performer.cc @@ -33,8 +33,8 @@ protected: virtual void play_element (Audio_element* p); virtual void do_removal_processing (); virtual void do_creation_processing (); - virtual void process_acknowledged (); - virtual void do_pre_move_processing (); + virtual void create_grobs (); + virtual void stop_translation_timestep (); private: Audio_staff* audio_staff_p_; @@ -75,7 +75,7 @@ Staff_performer::do_creation_processing () } void -Staff_performer::process_acknowledged () +Staff_performer::create_grobs () { String str = new_instrument_str (); if (str.length_i ()) @@ -89,7 +89,7 @@ Staff_performer::process_acknowledged () } void -Staff_performer::do_pre_move_processing () +Staff_performer::stop_translation_timestep () { if (name_p_) { @@ -111,7 +111,7 @@ Staff_performer::do_pre_move_processing () play_element (instrument_p_); instrument_p_ = 0; } - Performer_group_performer::do_pre_move_processing (); + Performer_group_performer::stop_translation_timestep (); } void diff --git a/lily/staff-symbol-engraver.cc b/lily/staff-symbol-engraver.cc index 4abe57d181..1686426734 100644 --- a/lily/staff-symbol-engraver.cc +++ b/lily/staff-symbol-engraver.cc @@ -25,7 +25,7 @@ public: protected: virtual ~Staff_symbol_engraver(); - virtual void acknowledge_element (Score_element_info); + virtual void acknowledge_grob (Grob_info); virtual void do_removal_processing(); virtual void do_creation_processing(); }; @@ -48,21 +48,21 @@ Staff_symbol_engraver::do_creation_processing() span_p_->set_bound(LEFT, unsmob_element (get_property ("currentCommandColumn"))); - announce_element (span_p_, 0); + announce_grob (span_p_, 0); } void Staff_symbol_engraver::do_removal_processing() { span_p_->set_bound(RIGHT,unsmob_element (get_property ("currentCommandColumn"))); - typeset_element (span_p_); + typeset_grob (span_p_); span_p_ =0; } void -Staff_symbol_engraver::acknowledge_element (Score_element_info s) +Staff_symbol_engraver::acknowledge_grob (Grob_info s) { - s.elem_l_->set_elt_property ("staff-symbol", span_p_->self_scm ()); + s.elem_l_->set_grob_property ("staff-symbol", span_p_->self_scm ()); // remove this. probly not necessary? s.elem_l_->add_dependency (span_p_); // UGH. UGH. UGH diff --git a/lily/staff-symbol-referencer.cc b/lily/staff-symbol-referencer.cc index 327ff2141e..9b1ae4ad08 100644 --- a/lily/staff-symbol-referencer.cc +++ b/lily/staff-symbol-referencer.cc @@ -13,43 +13,43 @@ #include "paper-def.hh" bool -Staff_symbol_referencer::has_interface (Score_element*e) +Staff_symbol_referencer::has_interface (Grob*e) { - return unsmob_element (e->get_elt_property ("staff-symbol")) - || gh_number_p (e->get_elt_property ("staff-position")); + return unsmob_element (e->get_grob_property ("staff-symbol")) + || gh_number_p (e->get_grob_property ("staff-position")); } int -Staff_symbol_referencer::line_count (Score_element*me) +Staff_symbol_referencer::line_count (Grob*me) { - Score_element *st = staff_symbol_l (me); + Grob *st = staff_symbol_l (me); return st ? Staff_symbol::line_count (st) : 0; } bool -Staff_symbol_referencer::on_staffline (Score_element*me) +Staff_symbol_referencer::on_staffline (Grob*me) { return on_staffline (me, (int) position_f (me)); } bool -Staff_symbol_referencer::on_staffline (Score_element*me, int pos) +Staff_symbol_referencer::on_staffline (Grob*me, int pos) { int sz = line_count (me)-1; return ((pos + sz) % 2) == 0; } -Score_element* -Staff_symbol_referencer::staff_symbol_l (Score_element*me) +Grob* +Staff_symbol_referencer::staff_symbol_l (Grob*me) { - SCM st = me->get_elt_property ("staff-symbol"); + SCM st = me->get_grob_property ("staff-symbol"); return unsmob_element(st); } Real -Staff_symbol_referencer::staff_space (Score_element*me) +Staff_symbol_referencer::staff_space (Grob*me) { - Score_element * st = staff_symbol_l (me); + Grob * st = staff_symbol_l (me); if (st) return Staff_symbol::staff_space (st); @@ -59,11 +59,11 @@ Staff_symbol_referencer::staff_space (Score_element*me) Real -Staff_symbol_referencer::position_f (Score_element*me) +Staff_symbol_referencer::position_f (Grob*me) { Real p =0.0; - Score_element * st = staff_symbol_l (me); - Score_element * c = st ? me->common_refpoint (st, Y_AXIS) : 0; + Grob * st = staff_symbol_l (me); + Grob * c = st ? me->common_refpoint (st, Y_AXIS) : 0; if (st && c) { Real y = me->relative_coordinate (c, Y_AXIS) @@ -73,7 +73,7 @@ Staff_symbol_referencer::position_f (Score_element*me) } else { - SCM pos = me->get_elt_property ("staff-position"); + SCM pos = me->get_grob_property ("staff-position"); if (gh_number_p (pos)) return gh_scm2double (pos); } @@ -90,10 +90,10 @@ MAKE_SCHEME_CALLBACK(Staff_symbol_referencer,callback,2); SCM Staff_symbol_referencer::callback (SCM element_smob, SCM ) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); - SCM pos = me->get_elt_property ("staff-position"); + SCM pos = me->get_grob_property ("staff-position"); Real off =0.0; if (gh_number_p (pos)) { @@ -101,7 +101,7 @@ Staff_symbol_referencer::callback (SCM element_smob, SCM ) off = gh_scm2double (pos) * space/2.0; } - me->set_elt_property ("staff-position", gh_double2scm (0.0)); + me->set_grob_property ("staff-position", gh_double2scm (0.0)); return gh_double2scm (off); } @@ -122,17 +122,17 @@ Staff_symbol_referencer::callback (SCM element_smob, SCM ) */ void -Staff_symbol_referencer::set_position (Score_element*me,Real p) +Staff_symbol_referencer::set_position (Grob*me,Real p) { - Score_element * st = staff_symbol_l (me); + Grob * st = staff_symbol_l (me); if (st && me->common_refpoint(st, Y_AXIS)) { Real oldpos = position_f (me); - me->set_elt_property ("staff-position", gh_double2scm (p - oldpos)); + me->set_grob_property ("staff-position", gh_double2scm (p - oldpos)); } else { - me->set_elt_property ("staff-position", + me->set_grob_property ("staff-position", gh_double2scm (p)); } @@ -147,25 +147,25 @@ Staff_symbol_referencer::set_position (Score_element*me,Real p) half of the height, in staff space. */ Real -Staff_symbol_referencer::staff_radius (Score_element*me) +Staff_symbol_referencer::staff_radius (Grob*me) { return (line_count (me) -1) / 2; } int -compare_position (Score_element *const &a, Score_element * const &b) +compare_position (Grob *const &a, Grob * const &b) { - return sign (Staff_symbol_referencer::position_f((Score_element*)a) - - Staff_symbol_referencer::position_f((Score_element*)b)); + return sign (Staff_symbol_referencer::position_f((Grob*)a) - + Staff_symbol_referencer::position_f((Grob*)b)); } void -Staff_symbol_referencer::set_interface (Score_element * e) +Staff_symbol_referencer::set_interface (Grob * e) { - if (!gh_number_p (e->get_elt_property ("staff-position"))) - e->set_elt_property ("staff-position", gh_double2scm (0.0)); + if (!gh_number_p (e->get_grob_property ("staff-position"))) + e->set_grob_property ("staff-position", gh_double2scm (0.0)); e->add_offset_callback (Staff_symbol_referencer::callback_proc, Y_AXIS); } diff --git a/lily/staff-symbol.cc b/lily/staff-symbol.cc index f8ebefe16f..7fa97b3e35 100644 --- a/lily/staff-symbol.cc +++ b/lily/staff-symbol.cc @@ -22,9 +22,9 @@ MAKE_SCHEME_CALLBACK(Staff_symbol,brew_molecule,1); SCM Staff_symbol::brew_molecule (SCM smob) { - Score_element *me = unsmob_element (smob); + Grob *me = unsmob_element (smob); Spanner* sp = dynamic_cast (me); - Score_element * common + Grob * common = sp->get_bound (LEFT)->common_refpoint (sp->get_bound (RIGHT), X_AXIS); Real width = @@ -52,15 +52,15 @@ Staff_symbol::brew_molecule (SCM smob) } int -Staff_symbol::steps_i(Score_element*me) +Staff_symbol::steps_i(Grob*me) { return line_count (me) * 2; } int -Staff_symbol::line_count (Score_element*me) +Staff_symbol::line_count (Grob*me) { - SCM c = me->get_elt_property ("line-count"); + SCM c = me->get_grob_property ("line-count"); if (gh_number_p (c)) return gh_scm2int (c); else @@ -68,18 +68,18 @@ Staff_symbol::line_count (Score_element*me) } Real -Staff_symbol::staff_space (Score_element*me ) +Staff_symbol::staff_space (Grob*me ) { Real ss = 1.0; - SCM s = me->get_elt_property ("staff-space"); + SCM s = me->get_grob_property ("staff-space"); if (gh_number_p (s)) ss *= gh_scm2double (s); return ss; } bool -Staff_symbol::has_interface (Score_element*m) +Staff_symbol::has_interface (Grob*m) { return m && m->has_interface (ly_symbol2scm ("staff-symbol-interface")); } diff --git a/lily/stanza-number-engraver.cc b/lily/stanza-number-engraver.cc index 11e8eea1b2..e08808f02e 100644 --- a/lily/stanza-number-engraver.cc +++ b/lily/stanza-number-engraver.cc @@ -26,8 +26,8 @@ public: VIRTUAL_COPY_CONS(Translator); Stanza_number_engraver (); - virtual void acknowledge_element (Score_element_info); - virtual void do_pre_move_processing (); + virtual void acknowledge_grob (Grob_info); + virtual void stop_translation_timestep (); }; ADD_THIS_TRANSLATOR(Stanza_number_engraver); @@ -39,7 +39,7 @@ Stanza_number_engraver::Stanza_number_engraver () } void -Stanza_number_engraver::acknowledge_element(Score_element_info i) +Stanza_number_engraver::acknowledge_grob(Grob_info i) { SCM s = get_property ("stanza"); @@ -63,11 +63,11 @@ Stanza_number_engraver::acknowledge_element(Score_element_info i) void -Stanza_number_engraver::do_pre_move_processing () +Stanza_number_engraver::stop_translation_timestep () { if (text_) { - typeset_element (text_); + typeset_grob (text_); text_ = 0; } } @@ -78,8 +78,8 @@ Stanza_number_engraver::create_text (SCM txt) if(!text_) { text_ = new Item (get_property ("StanzaNumber")); - text_->set_elt_property ("text", txt); - announce_element (text_,0); + text_->set_grob_property ("text", txt); + announce_grob (text_,0); } } diff --git a/lily/stem-engraver.cc b/lily/stem-engraver.cc index c909039b50..f5f9546c4c 100644 --- a/lily/stem-engraver.cc +++ b/lily/stem-engraver.cc @@ -27,13 +27,13 @@ public: Stem_engraver(); protected: - virtual void acknowledge_element (Score_element_info); - virtual void do_pre_move_processing (); - virtual bool do_try_music (Music*); + virtual void acknowledge_grob (Grob_info); + virtual void stop_translation_timestep (); + virtual bool try_music (Music*); private: - Score_element *stem_p_; - Score_element *tremolo_p_; + Grob *stem_p_; + Grob *tremolo_p_; Rhythmic_req *rhythmic_req_l_; Tremolo_req* tremolo_req_l_; }; @@ -50,9 +50,9 @@ Stem_engraver::Stem_engraver () void -Stem_engraver::acknowledge_element(Score_element_info i) +Stem_engraver::acknowledge_grob(Grob_info i) { - Score_element* h = i.elem_l_; + Grob* h = i.elem_l_; if (Rhythmic_head::has_interface (h)) { if (Rhythmic_head::stem_l (h)) @@ -67,7 +67,7 @@ Stem_engraver::acknowledge_element(Score_element_info i) Staff_symbol_referencer::set_interface(stem_p_); - stem_p_->set_elt_property ("duration-log", gh_int2scm (duration_log)); + stem_p_->set_grob_property ("duration-log", gh_int2scm (duration_log)); if (tremolo_req_l_) { @@ -93,7 +93,7 @@ Stem_engraver::acknowledge_element(Score_element_info i) tremolo_p_ = new Item (get_property ("StemTremolo")); Stem_tremolo::set_interface (tremolo_p_); - announce_element (tremolo_p_, tremolo_req_l_); + announce_grob (tremolo_p_, tremolo_req_l_); /* The number of tremolo flags is the number of flags of the tremolo-type minus the number of flags of the note @@ -103,11 +103,11 @@ Stem_engraver::acknowledge_element(Score_element_info i) - (duration_log > 2 ? duration_log - 2 : 0); if (tremolo_flags < 0) tremolo_flags = 0; - tremolo_p_->set_elt_property ("tremolo-flags", + tremolo_p_->set_grob_property ("tremolo-flags", gh_int2scm (tremolo_flags)); } } - announce_element (stem_p_, i.req_l_); + announce_grob (stem_p_, i.req_l_); } if (Stem::flag_i (stem_p_) != duration_log) @@ -120,12 +120,12 @@ Stem_engraver::acknowledge_element(Score_element_info i) } void -Stem_engraver::do_pre_move_processing() +Stem_engraver::stop_translation_timestep() { if (tremolo_p_) { Stem_tremolo::set_stem (tremolo_p_, stem_p_); - typeset_element (tremolo_p_); + typeset_grob (tremolo_p_); tremolo_p_ = 0; } @@ -151,13 +151,13 @@ Stem_engraver::do_pre_move_processing() aargh: I don't get it. direction is being set (and then set to forced), if we have a Chord_tremolo. */ - SCM dir = stem_p_->get_elt_property ("direction"); + SCM dir = stem_p_->get_grob_property ("direction"); if (gh_number_p (dir) && to_dir(dir)) { - stem_p_->set_elt_property ("dir-forced", SCM_BOOL_T); + stem_p_->set_grob_property ("dir-forced", SCM_BOOL_T); } - typeset_element(stem_p_); + typeset_grob(stem_p_); stem_p_ = 0; } @@ -166,7 +166,7 @@ Stem_engraver::do_pre_move_processing() } bool -Stem_engraver::do_try_music (Music* r) +Stem_engraver::try_music (Music* r) { if (Tremolo_req* a = dynamic_cast (r)) { diff --git a/lily/stem-tremolo.cc b/lily/stem-tremolo.cc index 45fe3dba7d..70d3b0f782 100644 --- a/lily/stem-tremolo.cc +++ b/lily/stem-tremolo.cc @@ -23,13 +23,13 @@ */ void -Stem_tremolo::set_interface (Score_element *me) +Stem_tremolo::set_interface (Grob *me) { me->set_interface (ly_symbol2scm ("stem-tremolo")); } bool -Stem_tremolo::has_interface (Score_element *me) +Stem_tremolo::has_interface (Grob *me) { return me->has_interface (ly_symbol2scm ("stem-tremolo")); } @@ -42,7 +42,7 @@ MAKE_SCHEME_CALLBACK(Stem_tremolo,dim_callback,2); SCM Stem_tremolo::dim_callback (SCM e, SCM ) { - Score_element * se = unsmob_element (e); + Grob * se = unsmob_element (e); Real space = Staff_symbol_referencer::staff_space (se); return ly_interval2scm ( Interval (-space, space)); @@ -54,15 +54,15 @@ MAKE_SCHEME_CALLBACK(Stem_tremolo,brew_molecule,1); SCM Stem_tremolo::brew_molecule (SCM smob) { - Score_element *me= unsmob_element (smob); - Score_element * stem = unsmob_element (me->get_elt_property ("stem")); - Score_element * beam = Stem::beam_l (stem); + Grob *me= unsmob_element (smob); + Grob * stem = unsmob_element (me->get_grob_property ("stem")); + Grob * beam = Stem::beam_l (stem); Real dydx; if (beam) { Real dy = 0; - SCM s = beam->get_elt_property ("height"); + SCM s = beam->get_grob_property ("height"); if (gh_number_p (s)) dy = gh_scm2double (s); Real dx = Beam::last_visible_stem (beam)->relative_coordinate (0, X_AXIS) @@ -74,8 +74,8 @@ Stem_tremolo::brew_molecule (SCM smob) dydx = 0.25; Real ss = Staff_symbol_referencer::staff_space (stem); - Real thick = gh_scm2double (me->get_elt_property ("beam-thickness")); - Real width = gh_scm2double (me->get_elt_property ("beam-width")); + Real thick = gh_scm2double (me->get_grob_property ("beam-thickness")); + Real width = gh_scm2double (me->get_grob_property ("beam-width")); width *= ss; thick *= ss; @@ -83,7 +83,7 @@ Stem_tremolo::brew_molecule (SCM smob) a.translate (Offset (-width/2, width / 2 * dydx)); int tremolo_flags; - SCM s = me->get_elt_property ("tremolo-flags"); + SCM s = me->get_grob_property ("tremolo-flags"); if (gh_number_p (s)) tremolo_flags = gh_scm2int (s); else @@ -91,7 +91,7 @@ Stem_tremolo::brew_molecule (SCM smob) tremolo_flags = 1; int mult = beam ? Beam::get_multiplicity (beam) : 0; - SCM space_proc = me->get_elt_property ("beam-space-function"); + SCM space_proc = me->get_grob_property ("beam-space-function"); SCM space = gh_call1 (space_proc, gh_int2scm (mult)); Real interbeam_f = gh_scm2double (space) * ss; @@ -127,7 +127,7 @@ Stem_tremolo::brew_molecule (SCM smob) Real whole_note_correction; if (Stem::invisible_b (stem )) { - Score_element *hed = Stem::support_head (stem ); + Grob *hed = Stem::support_head (stem ); whole_note_correction = -Stem::get_direction (stem ) *hed->extent (hed, X_AXIS).length () / 2; } @@ -143,8 +143,8 @@ Stem_tremolo::brew_molecule (SCM smob) void -Stem_tremolo::set_stem (Score_element*me,Score_element *s) +Stem_tremolo::set_stem (Grob*me,Grob *s) { - me->set_elt_property ("stem", s->self_scm ()); + me->set_grob_property ("stem", s->self_scm ()); } diff --git a/lily/stem.cc b/lily/stem.cc index 46cc32163d..316cebb520 100644 --- a/lily/stem.cc +++ b/lily/stem.cc @@ -30,22 +30,22 @@ void -Stem::set_beaming (Score_element*me ,int i, Direction d ) +Stem::set_beaming (Grob*me ,int i, Direction d ) { - SCM pair = me->get_elt_property ("beaming"); + SCM pair = me->get_grob_property ("beaming"); if (!gh_pair_p (pair)) { pair = gh_cons (gh_int2scm (0),gh_int2scm (0)); - me-> set_elt_property ("beaming", pair); + me-> set_grob_property ("beaming", pair); } index_set_cell (pair, d, gh_int2scm (i)); } int -Stem::beam_count (Score_element*me,Direction d) +Stem::beam_count (Grob*me,Direction d) { - SCM p=me->get_elt_property ("beaming"); + SCM p=me->get_grob_property ("beaming"); if (gh_pair_p (p)) return gh_scm2int (index_cell (p,d)); else @@ -53,7 +53,7 @@ Stem::beam_count (Score_element*me,Direction d) } Interval -Stem::head_positions (Score_element*me) +Stem::head_positions (Grob*me) { if (!heads_i (me)) { @@ -61,7 +61,7 @@ Stem::head_positions (Score_element*me) return iv; } - Drul_array e (extremal_heads (me)); + Drul_array e (extremal_heads (me)); return Interval (Staff_symbol_referencer::position_f (e[DOWN]), Staff_symbol_referencer::position_f ( e[UP])); @@ -69,22 +69,22 @@ Stem::head_positions (Score_element*me) Real -Stem::chord_start_f (Score_element*me) +Stem::chord_start_f (Grob*me) { return head_positions(me)[get_direction (me)] * Staff_symbol_referencer::staff_space (me)/2.0; } Real -Stem::stem_end_position (Score_element*me) +Stem::stem_end_position (Grob*me) { - SCM p =me->get_elt_property ("stem-end-position"); + SCM p =me->get_grob_property ("stem-end-position"); Real pos; if (!gh_number_p (p)) { pos = get_default_stem_end_position (me); - me->set_elt_property ("stem-end-position", gh_double2scm (pos)); + me->set_grob_property ("stem-end-position", gh_double2scm (pos)); } else pos = gh_scm2double (p); @@ -93,7 +93,7 @@ Stem::stem_end_position (Score_element*me) } Direction -Stem::get_direction (Score_element*me) +Stem::get_direction (Grob*me) { Direction d = Directional_element_interface::get (me); @@ -108,7 +108,7 @@ Stem::get_direction (Score_element*me) void -Stem::set_stemend (Score_element*me, Real se) +Stem::set_stemend (Grob*me, Real se) { // todo: margins Direction d= get_direction (me); @@ -116,11 +116,11 @@ Stem::set_stemend (Score_element*me, Real se) if (d && d * head_positions(me)[get_direction (me)] >= se*d) warning (_ ("Weird stem size; check for narrow beams")); - me->set_elt_property ("stem-end-position", gh_double2scm (se)); + me->set_grob_property ("stem-end-position", gh_double2scm (se)); } int -Stem::type_i (Score_element*me) +Stem::type_i (Grob*me) { return first_head (me) ? Rhythmic_head::balltype_i (first_head (me)) : 2; } @@ -128,11 +128,11 @@ Stem::type_i (Score_element*me) /* Note head that determines hshift for upstems */ -Score_element* -Stem::support_head (Score_element*me) +Grob* +Stem::support_head (Grob*me) { - SCM h = me->get_elt_property ("support-head"); - Score_element * nh = unsmob_element (h); + SCM h = me->get_grob_property ("support-head"); + Grob * nh = unsmob_element (h); if (nh) return nh; else if (heads_i (me) == 1) @@ -141,7 +141,7 @@ Stem::support_head (Score_element*me) UGH. */ - return unsmob_element (gh_car (me->get_elt_property ("heads"))); + return unsmob_element (gh_car (me->get_grob_property ("heads"))); } else return first_head (me); @@ -149,7 +149,7 @@ Stem::support_head (Score_element*me) int -Stem::heads_i (Score_element*me) +Stem::heads_i (Grob*me) { return Pointer_group_interface::count (me, "heads"); } @@ -157,8 +157,8 @@ Stem::heads_i (Score_element*me) /* The note head which forms one end of the stem. */ -Score_element* -Stem::first_head (Score_element*me) +Grob* +Stem::first_head (Grob*me) { return extremal_heads (me)[-get_direction (me)]; } @@ -166,20 +166,20 @@ Stem::first_head (Score_element*me) /* START is part where stem reaches `last' head. */ -Drul_array -Stem::extremal_heads (Score_element*me) +Drul_array +Stem::extremal_heads (Grob*me) { const int inf = 1000000; Drul_array extpos; extpos[DOWN] = inf; extpos[UP] = -inf; - Drul_array exthead; + Drul_array exthead; exthead[LEFT] = exthead[RIGHT] =0; - for (SCM s = me->get_elt_property ("heads"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = me->get_grob_property ("heads"); gh_pair_p (s); s = gh_cdr (s)) { - Score_element * n = unsmob_element (gh_car (s)); + Grob * n = unsmob_element (gh_car (s)); int p = int(Staff_symbol_referencer::position_f (n)); @@ -198,9 +198,9 @@ Stem::extremal_heads (Score_element*me) } void -Stem::add_head (Score_element*me, Score_element *n) +Stem::add_head (Grob*me, Grob *n) { - n->set_elt_property ("stem", me->self_scm ()); + n->set_grob_property ("stem", me->self_scm ()); n->add_dependency (me); if (Note_head::has_interface (n)) @@ -209,18 +209,18 @@ Stem::add_head (Score_element*me, Score_element *n) } else { - n->set_elt_property ("rest", n->self_scm ()); + n->set_grob_property ("rest", n->self_scm ()); } } bool -Stem::invisible_b (Score_element*me) +Stem::invisible_b (Grob*me) { return !(heads_i (me) && Rhythmic_head::balltype_i (support_head (me)) >= 1); } int -Stem::get_center_distance (Score_element*me, Direction d) +Stem::get_center_distance (Grob*me, Direction d) { int staff_center = 0; int distance = (int) (d*(head_positions(me)[d] - staff_center)); @@ -228,7 +228,7 @@ Stem::get_center_distance (Score_element*me, Direction d) } Direction -Stem::get_default_dir (Score_element*me) +Stem::get_default_dir (Grob*me) { int du = get_center_distance (me,UP); int dd = get_center_distance (me,DOWN); @@ -236,25 +236,25 @@ Stem::get_default_dir (Score_element*me) if (sign (dd - du)) return Direction (sign (dd -du)); - return to_dir (me->get_elt_property ("default-neutral-direction")); + return to_dir (me->get_grob_property ("default-neutral-direction")); } Real -Stem::get_default_stem_end_position (Score_element*me) +Stem::get_default_stem_end_position (Grob*me) { - bool grace_b = to_boolean (me->get_elt_property ("grace")); + bool grace_b = to_boolean (me->get_grob_property ("grace")); SCM s; Array a; Real length_f = 0.; - SCM scm_len = me->get_elt_property("length"); + SCM scm_len = me->get_grob_property("length"); if (gh_number_p (scm_len)) { length_f = gh_scm2double (scm_len); } else { - s = me->get_elt_property("lengths"); + s = me->get_grob_property("lengths"); for (SCM q = s; q != SCM_EOL; q = gh_cdr (q)) a.push (gh_scm2double (gh_car (q))); @@ -264,7 +264,7 @@ Stem::get_default_stem_end_position (Score_element*me) a.clear (); - s = me->get_elt_property ("stem-shorten"); + s = me->get_grob_property ("stem-shorten"); for (SCM q = s; gh_pair_p (q); q = gh_cdr (q)) a.push (gh_scm2double (gh_car (q))); @@ -295,7 +295,7 @@ Stem::get_default_stem_end_position (Score_element*me) Real st = head_positions(me)[dir] + dir * length_f; - bool no_extend_b = to_boolean (me->get_elt_property ("no-stem-extend")); + bool no_extend_b = to_boolean (me->get_grob_property ("no-stem-extend")); if (!grace_b && !no_extend_b && dir * st < 0) // junkme? st = 0.0; @@ -306,20 +306,20 @@ Stem::get_default_stem_end_position (Score_element*me) Number of hooks on the flag, ie. the log of the duration. */ int -Stem::flag_i (Score_element*me) +Stem::flag_i (Grob*me) { - SCM s = me->get_elt_property ("duration-log"); + SCM s = me->get_grob_property ("duration-log"); return (gh_number_p (s)) ? gh_scm2int (s) : 2; } void -Stem::position_noteheads (Score_element*me) +Stem::position_noteheads (Grob*me) { if (!heads_i (me)) return; - Link_array heads = - Pointer_group_interface__extract_elements (me, (Score_element*)0, "heads"); + Link_array heads = + Pointer_group_interface__extract_elements (me, (Grob*)0, "heads"); heads.sort (compare_position); Direction dir =get_direction (me); @@ -328,7 +328,7 @@ Stem::position_noteheads (Score_element*me) heads.reverse (); - Score_element *hed = support_head (me); + Grob *hed = support_head (me); Real w = hed->extent (hed, X_AXIS)[dir]; for (int i=0; i < heads.size (); i++) { @@ -362,13 +362,13 @@ MAKE_SCHEME_CALLBACK(Stem,before_line_breaking,1); SCM Stem::before_line_breaking (SCM smob) { - Score_element*me = unsmob_element (smob); + Grob*me = unsmob_element (smob); stem_end_position (me); // ugh. Trigger direction calc. position_noteheads (me); if (invisible_b (me)) { - me->remove_elt_property ("molecule-callback"); + me->remove_grob_property ("molecule-callback"); // suicide(); } @@ -386,7 +386,7 @@ Stem::before_line_breaking (SCM smob) TODO: more advanced: supply height of noteheads as well, for more advanced spacing possibilities */ void -Stem::set_spacing_hints (Score_element*me) +Stem::set_spacing_hints (Grob*me) { if (!invisible_b (me)) { @@ -394,20 +394,20 @@ Stem::set_spacing_hints (Score_element*me) Item* item = dynamic_cast (me); Item * col = item->column_l (); - SCM dirlist =col->get_elt_property ("dir-list"); + SCM dirlist =col->get_grob_property ("dir-list"); if (scm_sloppy_memq (scmdir, dirlist) == SCM_BOOL_F) { dirlist = gh_cons (scmdir, dirlist); - col->set_elt_property ("dir-list", dirlist); + col->set_grob_property ("dir-list", dirlist); } } } Molecule -Stem::flag (Score_element*me) +Stem::flag (Grob*me) { String style; - SCM st = me->get_elt_property ("flag-style"); + SCM st = me->get_grob_property ("flag-style"); if ( gh_string_p (st)) { style = ly_scm2string (st); @@ -427,9 +427,9 @@ Stem::dim_callback (SCM e, SCM ax) { Axis a = (Axis) gh_scm2int (ax); assert (a == X_AXIS); - Score_element *se = unsmob_element (e); + Grob *se = unsmob_element (e); Interval r (0, 0); - if (unsmob_element (se->get_elt_property ("beam")) || abs (flag_i (se)) <= 2) + if (unsmob_element (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) { - Score_element*me = unsmob_element (smob); + Grob*me = unsmob_element (smob); Molecule mol; Direction d = get_direction (me); @@ -461,13 +461,13 @@ Stem::brew_molecule (SCM smob) Real dy = Staff_symbol_referencer::staff_space (me)/2.0; Real head_wid = 0; - if (Score_element *hed = support_head (me)) + if (Grob *hed = support_head (me)) head_wid = hed->extent (hed,X_AXIS).length (); stem_y[Direction(-d)] += d * head_wid * tan(ANGLE)/(2*dy); if (!invisible_b (me)) { - Real stem_width = gh_scm2double (me->get_elt_property ("thickness")) * me->paper_l ()->get_var ("stafflinethickness"); + Real stem_width = gh_scm2double (me->get_grob_property ("thickness")) * me->paper_l ()->get_var ("stafflinethickness"); Molecule ss =Lookup::filledbox (Box (Interval (-stem_width/2, stem_width/2), Interval (stem_y[DOWN]*dy, stem_y[UP]*dy))); mol.add_molecule (ss); @@ -487,17 +487,17 @@ MAKE_SCHEME_CALLBACK(Stem,off_callback,2); SCM Stem::off_callback (SCM element_smob, SCM ) { - Score_element *me = unsmob_element (element_smob); + Grob *me = unsmob_element (element_smob); Real r=0; - if (Score_element * f = first_head (me)) + if (Grob * f = first_head (me)) { Interval head_wid(0, f->extent (f,X_AXIS).length ()); - if (to_boolean (me->get_elt_property ("stem-centered"))) + if (to_boolean (me->get_grob_property ("stem-centered"))) return gh_double2scm ( head_wid.center ()); - Real rule_thick = gh_scm2double (me->get_elt_property ("thickness")) * me->paper_l ()->get_var ("stafflinethickness"); + Real rule_thick = gh_scm2double (me->get_grob_property ("thickness")) * me->paper_l ()->get_var ("stafflinethickness"); Direction d = get_direction (me); r = head_wid[d] - d * rule_thick ; } @@ -506,19 +506,19 @@ Stem::off_callback (SCM element_smob, SCM ) -Score_element* -Stem::beam_l (Score_element*me) +Grob* +Stem::beam_l (Grob*me) { - SCM b= me->get_elt_property ("beam"); + SCM b= me->get_grob_property ("beam"); return unsmob_element (b); } // ugh still very long. Stem_info -Stem::calc_stem_info (Score_element*me) +Stem::calc_stem_info (Grob*me) { - Score_element * beam = beam_l (me); + Grob * beam = beam_l (me); Direction beam_dir = Directional_element_interface::get (beam); if (!beam_dir) @@ -533,31 +533,31 @@ Stem::calc_stem_info (Score_element*me) int multiplicity = Beam::get_multiplicity (beam); - SCM space_proc = beam->get_elt_property ("space-function"); + SCM space_proc = beam->get_grob_property ("space-function"); SCM space = gh_call1 (space_proc, gh_int2scm (multiplicity)); Real interbeam_f = gh_scm2double (space) * staff_space; - Real thick = gh_scm2double (beam->get_elt_property ("thickness")); + Real thick = gh_scm2double (beam->get_grob_property ("thickness")); Stem_info info; info.idealy_f_ = chord_start_f (me); // for simplicity, we calculate as if dir == UP info.idealy_f_ *= beam_dir; - SCM grace_prop = me->get_elt_property ("grace"); + SCM grace_prop = me->get_grob_property ("grace"); bool grace_b = to_boolean (grace_prop); Array a; SCM s; - s = me->get_elt_property("beamed-minimum-lengths"); + s = me->get_grob_property("beamed-minimum-lengths"); a.clear (); for (SCM q = s; q != SCM_EOL; q = gh_cdr (q)) a.push (gh_scm2double (gh_car (q))); Real minimum_length = a[multiplicity get_elt_property ("beamed-lengths"); + s = me->get_grob_property ("beamed-lengths"); a.clear(); for (SCM q = s; q != SCM_EOL; q = gh_cdr (q)) @@ -588,7 +588,7 @@ Stem::calc_stem_info (Score_element*me) than middle staffline, just as normal stems. */ - bool no_extend_b = to_boolean (me->get_elt_property ("no-stem-extend")); + bool no_extend_b = to_boolean (me->get_grob_property ("no-stem-extend")); if (!grace_b && !no_extend_b) { /* highest beam of (UP) beam must never be lower than middle @@ -615,7 +615,7 @@ Stem::calc_stem_info (Score_element*me) info.idealy_f_ = (info.maxy_f_ ? info.miny_f_; - s = beam->get_elt_property ("shorten"); + s = beam->get_grob_property ("shorten"); if (gh_number_p (s)) info.idealy_f_ -= gh_scm2double (s); @@ -629,13 +629,13 @@ Stem::calc_stem_info (Score_element*me) } bool -Stem::has_interface (Score_element*m) +Stem::has_interface (Grob*m) { return m && m->has_interface (ly_symbol2scm ("stem-interface")); } void -Stem::set_interface (Score_element*me) +Stem::set_interface (Grob*me) { me->set_interface (ly_symbol2scm ("stem-interface")); } diff --git a/lily/sustain-pedal.cc b/lily/sustain-pedal.cc index 39e6499a17..91a8308114 100644 --- a/lily/sustain-pedal.cc +++ b/lily/sustain-pedal.cc @@ -6,7 +6,7 @@ (c) 2000 Han-Wen Nienhuys */ -#include "score-element.hh" +#include "grob.hh" #include "molecule.hh" #include "font-interface.hh" #include "string.hh" @@ -38,10 +38,10 @@ MAKE_SCHEME_CALLBACK(Sustain_pedal,brew_molecule,1); SCM Sustain_pedal::brew_molecule (SCM smob) { - Score_element * e = unsmob_element (smob); + Grob * e = unsmob_element (smob); Molecule mol; - SCM glyph = e->get_elt_property ("text"); + SCM glyph = e->get_grob_property ("text"); if (!gh_string_p (glyph)) return mol.smobbed_copy (); String text = ly_scm2string (glyph); diff --git a/lily/swallow-engraver.cc b/lily/swallow-engraver.cc index 476184e6cb..0a86e7163a 100644 --- a/lily/swallow-engraver.cc +++ b/lily/swallow-engraver.cc @@ -13,7 +13,7 @@ ADD_THIS_TRANSLATOR(Swallow_engraver); bool -Swallow_engraver::do_try_music (Music*) +Swallow_engraver::try_music (Music*) { return true; } diff --git a/lily/syllable-group.cc b/lily/syllable-group.cc index c03b26a4b6..5b1e5c6cfe 100644 --- a/lily/syllable-group.cc +++ b/lily/syllable-group.cc @@ -53,7 +53,7 @@ Syllable_group::set_first_in_phrase(bool f) } void -Syllable_group::set_notehead(Score_element * notehead) +Syllable_group::set_notehead(Grob * notehead) { if(!notehead_l_) { /* there should only be a single notehead, so silently ignore any extras */ @@ -62,7 +62,7 @@ Syllable_group::set_notehead(Score_element * notehead) } void -Syllable_group::add_lyric(Score_element * lyric) +Syllable_group::add_lyric(Grob * lyric) { lyric_list_.push(lyric); /* record longest and shortest lyrics */ @@ -77,7 +77,7 @@ Syllable_group::add_lyric(Score_element * lyric) } void -Syllable_group::add_extender(Score_element * extender) +Syllable_group::add_extender(Grob * extender) { if(notehead_l_ && melisma_b_) { dynamic_cast(extender)->set_bound (RIGHT, notehead_l_); @@ -85,24 +85,24 @@ Syllable_group::add_extender(Score_element * extender) // Comments in lyric-extender.hh say left, but right looks better to me. GP. // Left: -// extender->set_elt_property("right-trim-amount", gh_double2scm(0.0)); +// extender->set_grob_property("right-trim-amount", gh_double2scm(0.0)); // Right: Real ss = 1.0; - extender->set_elt_property("right-trim-amount", + extender->set_grob_property("right-trim-amount", gh_double2scm(-notehead_l_->extent(notehead_l_, X_AXIS).length()/ss)); } } bool -Syllable_group::set_lyric_align(const char *punc, Score_element *default_notehead_l) +Syllable_group::set_lyric_align(const char *punc, Grob *default_notehead_l) { if(lyric_list_.size()==0) { // No lyrics: nothing to do. return true; } - Score_element * lyric; + Grob * lyric; alignment_i_ = appropriate_alignment(punc); // If there was no notehead in the matching voice context, use the first @@ -116,7 +116,7 @@ Syllable_group::set_lyric_align(const char *punc, Score_element *default_notehea // set the x alignment of each lyric for(int l = 0; l < lyric_list_.size(); l++) { lyric = lyric_list_[l]; - lyric->set_elt_property("self-alignment-X", gh_int2scm(alignment_i_)); + lyric->set_grob_property("self-alignment-X", gh_int2scm(alignment_i_)); // centre on notehead ... if we have one. if(notehead_l_) { lyric->set_parent(notehead_l_, X_AXIS); @@ -163,12 +163,12 @@ Syllable_group::appropriate_alignment(const char *punc) if(first_in_phrase_b_) return LEFT; - Score_element * lyric; + Grob * lyric; bool end_phrase = true; for(int l = 0; l < lyric_list_.size() && end_phrase; l++) { lyric = lyric_list_[l]; - SCM lyric_scm = lyric->get_elt_property("text"); + SCM lyric_scm = lyric->get_grob_property("text"); String lyric_str = gh_string_p(lyric_scm)?ly_scm2string(lyric_scm):""; char lastchar; if(lyric_str.length_i()>0) { diff --git a/lily/system-start-delimiter-engraver.cc b/lily/system-start-delimiter-engraver.cc index 628ad64fe7..36a9aec7df 100644 --- a/lily/system-start-delimiter-engraver.cc +++ b/lily/system-start-delimiter-engraver.cc @@ -24,7 +24,7 @@ public: protected: Spanner * delim_; - virtual void acknowledge_element (Score_element_info); + virtual void acknowledge_grob (Grob_info); virtual void do_creation_processing (); virtual void do_removal_processing (); }; @@ -32,7 +32,7 @@ protected: ADD_THIS_TRANSLATOR(System_start_delimiter_engraver); void -System_start_delimiter_engraver::acknowledge_element (Score_element_info inf) +System_start_delimiter_engraver::acknowledge_grob (Grob_info inf) { if (Staff_symbol::has_interface (inf.elem_l_)) { @@ -44,8 +44,8 @@ System_start_delimiter_engraver::acknowledge_element (Score_element_info inf) } else if (System_start_delimiter::has_interface (inf.elem_l_)) { - SCM gl = inf.elem_l_->get_elt_property ("glyph"); - SCM my_gl = delim_->get_elt_property ("glyph"); + SCM gl = inf.elem_l_->get_grob_property ("glyph"); + SCM my_gl = delim_->get_grob_property ("glyph"); /* UGH UGH @@ -70,13 +70,13 @@ System_start_delimiter_engraver::do_creation_processing() delim_->set_bound (LEFT, unsmob_element (get_property ("currentCommandColumn"))); - announce_element (delim_,0); + announce_grob (delim_,0); } void System_start_delimiter_engraver::do_removal_processing () { delim_->set_bound (RIGHT, unsmob_element (get_property ("currentCommandColumn"))); - typeset_element (delim_); + typeset_grob (delim_); } diff --git a/lily/system-start-delimiter.cc b/lily/system-start-delimiter.cc index fa961c081a..f75ec5591c 100644 --- a/lily/system-start-delimiter.cc +++ b/lily/system-start-delimiter.cc @@ -14,22 +14,22 @@ #include "molecule.hh" #include "font-interface.hh" #include "all-font-metrics.hh" -#include "score-element.hh" +#include "grob.hh" #include "lookup.hh" Molecule -System_start_delimiter::staff_bracket (Score_element*me,Real height) +System_start_delimiter::staff_bracket (Grob*me,Real height) { - Real arc_height = gh_scm2double (me->get_elt_property("arch-height")) ; + Real arc_height = gh_scm2double (me->get_grob_property("arch-height")) ; SCM at = gh_list (ly_symbol2scm ("bracket"), - me->get_elt_property ("arch-angle"), - me->get_elt_property ("arch-width"), + me->get_grob_property ("arch-angle"), + me->get_grob_property ("arch-width"), gh_double2scm (arc_height), - me->get_elt_property ("bracket-width"), + me->get_grob_property ("bracket-width"), gh_double2scm (height), - me->get_elt_property ("arch-thick"), - me->get_elt_property ("bracket-thick"), + me->get_grob_property ("arch-thick"), + me->get_grob_property ("bracket-thick"), SCM_UNDEFINED); Real h = height + 2 * arc_height; @@ -40,22 +40,22 @@ System_start_delimiter::staff_bracket (Score_element*me,Real height) } void -System_start_delimiter::set_interface (Score_element*me) +System_start_delimiter::set_interface (Grob*me) { me->set_interface (ly_symbol2scm ("system-start-delimiter-interface")); } bool -System_start_delimiter::has_interface (Score_element*me) +System_start_delimiter::has_interface (Grob*me) { return me->has_interface (ly_symbol2scm ("system-start-delimiter-interface")); } Molecule -System_start_delimiter::simple_bar (Score_element*me,Real h) +System_start_delimiter::simple_bar (Grob*me,Real h) { Real w = me->paper_l ()->get_var ("stafflinethickness") * - gh_scm2double (me->get_elt_property ("thickness")); + gh_scm2double (me->get_grob_property ("thickness")); return Lookup::filledbox (Box (Interval(0,w), Interval(-h/2, h/2))); } @@ -69,11 +69,11 @@ System_start_delimiter::after_line_breaking (SCM smob) } void -System_start_delimiter::try_collapse (Score_element*me) +System_start_delimiter::try_collapse (Grob*me) { - SCM gl = me->get_elt_property ("glyph"); + SCM gl = me->get_grob_property ("glyph"); - if (scm_ilength (me->get_elt_property ("elements")) <= 1 && gl == ly_symbol2scm ("bar-line")) + if (scm_ilength (me->get_grob_property ("elements")) <= 1 && gl == ly_symbol2scm ("bar-line")) { me->suicide (); } @@ -86,19 +86,19 @@ MAKE_SCHEME_CALLBACK(System_start_delimiter,brew_molecule,1); SCM System_start_delimiter::brew_molecule (SCM smob) { - Score_element * me = unsmob_element (smob); + Grob * me = unsmob_element (smob); Interval ext = ly_scm2interval (Axis_group_interface::group_extent_callback (me->self_scm(), gh_int2scm (Y_AXIS))); Real l = ext.length (); Molecule m; - SCM s = me->get_elt_property ("collapse-height"); + SCM s = me->get_grob_property ("collapse-height"); if (gh_number_p (s) && l < gh_scm2double (s)) { me->suicide(); return SCM_EOL; } - s = me->get_elt_property ("glyph"); + s = me->get_grob_property ("glyph"); if (!gh_symbol_p(s)) return SCM_EOL; @@ -115,7 +115,7 @@ System_start_delimiter::brew_molecule (SCM smob) } Molecule -System_start_delimiter::staff_brace (Score_element*me,Real y) +System_start_delimiter::staff_brace (Grob*me,Real y) { int lo = 0; int hi = 255; diff --git a/lily/tempo-performer.cc b/lily/tempo-performer.cc index 3b57dccd47..015914aefb 100644 --- a/lily/tempo-performer.cc +++ b/lily/tempo-performer.cc @@ -20,9 +20,9 @@ public: protected: - virtual bool do_try_music (Music* req_l); - virtual void do_pre_move_processing (); - virtual void process_acknowledged (); + virtual bool try_music (Music* req_l); + virtual void stop_translation_timestep (); + virtual void create_grobs (); private: Tempo_req* tempo_req_l_; @@ -43,7 +43,7 @@ Tempo_performer::~Tempo_performer () void -Tempo_performer::process_acknowledged () +Tempo_performer::create_grobs () { if (tempo_req_l_) { @@ -60,7 +60,7 @@ Tempo_performer::process_acknowledged () } void -Tempo_performer::do_pre_move_processing () +Tempo_performer::stop_translation_timestep () { if (audio_p_) { @@ -70,7 +70,7 @@ Tempo_performer::do_pre_move_processing () } bool -Tempo_performer::do_try_music (Music* req_l) +Tempo_performer::try_music (Music* req_l) { if (tempo_req_l_) return false; diff --git a/lily/text-engraver.cc b/lily/text-engraver.cc index c463fdb275..05b078285d 100644 --- a/lily/text-engraver.cc +++ b/lily/text-engraver.cc @@ -26,16 +26,16 @@ class Text_engraver : public Engraver public: VIRTUAL_COPY_CONS(Translator); protected: - virtual bool do_try_music (Music* m); - virtual void do_pre_move_processing (); - virtual void do_post_move_processing (); - virtual void process_acknowledged (); + virtual bool try_music (Music* m); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); + virtual void create_grobs (); void deprecated_process_music (); - virtual void acknowledge_element (Score_element_info); + virtual void acknowledge_grob (Grob_info); }; bool -Text_engraver::do_try_music (Music *m) +Text_engraver::try_music (Music *m) { if (dynamic_cast (m) && m->get_mus_property ("text-type") != ly_symbol2scm ("dynamic")) @@ -47,13 +47,13 @@ Text_engraver::do_try_music (Music *m) } void -Text_engraver::acknowledge_element (Score_element_info inf) +Text_engraver::acknowledge_grob (Grob_info inf) { if (Rhythmic_head::has_interface (inf.elem_l_)) { for (int i=0; i < texts_.size (); i++) { - Score_element*t = texts_[i]; + Grob*t = texts_[i]; Side_position::add_support (t,inf.elem_l_); /* @@ -78,7 +78,7 @@ Text_engraver::acknowledge_element (Score_element_info inf) } void -Text_engraver::process_acknowledged () +Text_engraver::create_grobs () { deprecated_process_music (); } @@ -126,40 +126,40 @@ Text_engraver::deprecated_process_music () /* make sure they're in order by adding i to the priority field. */ - text->set_elt_property ("script-priority", + text->set_grob_property ("script-priority", gh_int2scm (200 + i)); if (r->get_direction ()) Side_position::set_direction (text, r->get_direction ()); - text->set_elt_property ("text", r->get_mus_property ("text")); + text->set_grob_property ("text", r->get_mus_property ("text")); SCM nonempty = get_property ("textNonEmpty"); if (to_boolean (nonempty)) /* empty text: signal that no rods should be applied. */ - text->set_elt_property ("no-spacing-rods" , SCM_BOOL_F); + text->set_grob_property ("no-spacing-rods" , SCM_BOOL_F); - announce_element (text, r); + announce_grob (text, r); texts_.push (text); } } void -Text_engraver::do_pre_move_processing () +Text_engraver::stop_translation_timestep () { for (int i=0; i < texts_.size (); i++) { Item *ti = texts_[i]; Side_position::add_staff_support (ti); - typeset_element (ti); + typeset_grob (ti); } texts_.clear (); } void -Text_engraver::do_post_move_processing () +Text_engraver::start_translation_timestep () { reqs_.clear (); } diff --git a/lily/text-item.cc b/lily/text-item.cc index 6e159dd3f0..eb95bbf367 100644 --- a/lily/text-item.cc +++ b/lily/text-item.cc @@ -54,7 +54,7 @@ */ Molecule -Text_item::text2molecule (Score_element *me, SCM text, SCM alist_chain) +Text_item::text2molecule (Grob *me, SCM text, SCM alist_chain) { if (gh_string_p (text)) return string2molecule (me, text, alist_chain); @@ -69,7 +69,7 @@ Text_item::text2molecule (Score_element *me, SCM text, SCM alist_chain) } Molecule -Text_item::string2molecule (Score_element *me, SCM text, SCM alist_chain) +Text_item::string2molecule (Grob *me, SCM text, SCM alist_chain) { SCM style = ly_assoc_chain (ly_symbol2scm ("font-style"), alist_chain); @@ -90,21 +90,21 @@ Text_item::string2molecule (Score_element *me, SCM text, SCM alist_chain) } Molecule -Text_item::lookup_character (Score_element *, Font_metric*fm, SCM char_name) +Text_item::lookup_character (Grob *, Font_metric*fm, SCM char_name) { return fm->find_by_name (ly_scm2string (char_name)); } Molecule -Text_item::lookup_text (Score_element *me, Font_metric*fm, SCM text) +Text_item::lookup_text (Grob *me, Font_metric*fm, SCM text) { #if 0 /* Fixme; should be done differently, move to font-interface? */ - SCM magnification = me->get_elt_property ("font-magnification"); + SCM magnification = me->get_grob_property ("font-magnification"); Font_metric* metric = 0; if (gh_number_p (magnification)) @@ -125,7 +125,7 @@ Text_item::lookup_text (Score_element *me, Font_metric*fm, SCM text) } Molecule -Text_item::markup_sentence2molecule (Score_element *me, SCM markup_sentence, +Text_item::markup_sentence2molecule (Grob *me, SCM markup_sentence, SCM alist_chain) { /* @@ -180,14 +180,14 @@ MAKE_SCHEME_CALLBACK (Text_item, brew_molecule, 1); SCM Text_item::brew_molecule (SCM smob) { - Score_element *me = unsmob_element (smob); + Grob *me = unsmob_element (smob); - SCM text = me->get_elt_property ("text"); + SCM text = me->get_grob_property ("text"); SCM properties = Font_interface::font_alist_chain (me); Molecule mol = Text_item::text2molecule (me, text, properties); - SCM space = me->get_elt_property ("word-space"); + SCM space = me->get_grob_property ("word-space"); if (gh_number_p (space)) { Molecule m; diff --git a/lily/text-spanner-engraver.cc b/lily/text-spanner-engraver.cc index 1c843c4555..1a8280ab81 100644 --- a/lily/text-spanner-engraver.cc +++ b/lily/text-spanner-engraver.cc @@ -27,12 +27,12 @@ public: protected: virtual void do_removal_processing (); - virtual void acknowledge_element (Score_element_info); - virtual bool do_try_music (Music *); + virtual void acknowledge_grob (Grob_info); + virtual bool try_music (Music *); void deprecated_process_music (); - virtual void do_pre_move_processing (); - virtual void do_post_move_processing (); - virtual void process_acknowledged (); + virtual void stop_translation_timestep (); + virtual void start_translation_timestep (); + virtual void create_grobs (); private: Spanner *span_; @@ -55,14 +55,14 @@ Text_spanner_engraver::Text_spanner_engraver () } void -Text_spanner_engraver::do_post_move_processing () +Text_spanner_engraver::start_translation_timestep () { req_drul_[START] = 0; req_drul_[STOP] = 0; } bool -Text_spanner_engraver::do_try_music (Music *m) +Text_spanner_engraver::try_music (Music *m) { if (Span_req *s = dynamic_cast (m)) { @@ -85,7 +85,7 @@ Text_spanner_engraver::do_try_music (Music *m) } void -Text_spanner_engraver::process_acknowledged () +Text_spanner_engraver::create_grobs () { deprecated_process_music (); } @@ -104,7 +104,7 @@ Text_spanner_engraver::deprecated_process_music () else { assert (!finished_); - Score_element* e = unsmob_element (get_property ("currentMusicalColumn")); + Grob* e = unsmob_element (get_property ("currentMusicalColumn")); span_->set_bound (RIGHT, e); finished_ = span_; @@ -125,15 +125,15 @@ Text_spanner_engraver::deprecated_process_music () current_req_ = req_drul_[START]; span_ = new Spanner (get_property ("TextSpanner")); Side_position::set_axis (span_, Y_AXIS); - Score_element *e = unsmob_element (get_property ("currentMusicalColumn")); + Grob *e = unsmob_element (get_property ("currentMusicalColumn")); span_->set_bound (LEFT, e); - announce_element (span_, req_drul_[START]); + announce_grob (span_, req_drul_[START]); } } } void -Text_spanner_engraver::acknowledge_element (Score_element_info info) +Text_spanner_engraver::acknowledge_grob (Grob_info info) { if (span_ && Note_column::has_interface (info.elem_l_)) { @@ -148,13 +148,13 @@ Text_spanner_engraver::typeset_all () if (finished_) { Side_position::add_staff_support (finished_); - typeset_element (finished_); + typeset_grob (finished_); finished_ = 0; } } void -Text_spanner_engraver::do_pre_move_processing () +Text_spanner_engraver::stop_translation_timestep () { typeset_all (); } diff --git a/lily/text-spanner.cc b/lily/text-spanner.cc index 313c0db21b..cce4e27b93 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) { - Score_element *me= unsmob_element (smob); + Grob *me= unsmob_element (smob); Spanner *spanner = dynamic_cast (me); Real staff_space = Staff_symbol_referencer::staff_space (me); @@ -48,7 +48,7 @@ Text_spanner::brew_molecule (SCM smob) while (flip (&d) != LEFT); #if 0 - SCM s = me->get_elt_property ("text-style"); + SCM s = me->get_grob_property ("text-style"); String text_style = "italic"; if (gh_string_p (s)) @@ -57,7 +57,7 @@ Text_spanner::brew_molecule (SCM smob) SCM properties = Font_interface::font_alist_chain (me); - SCM edge_text = me->get_elt_property ("edge-text"); + SCM edge_text = me->get_grob_property ("edge-text"); Drul_array edge; if (gh_pair_p (edge_text)) { @@ -76,7 +76,7 @@ Text_spanner::brew_molecule (SCM smob) shorten[LEFT] = 0; shorten[RIGHT] = 0; - SCM s = me->get_elt_property ("shorten"); + SCM s = me->get_grob_property ("shorten"); if (gh_pair_p (s)) { shorten[LEFT] = gh_scm2double (gh_car (s)) * staff_space; @@ -85,7 +85,7 @@ Text_spanner::brew_molecule (SCM smob) Real broken_left = spanner->get_broken_left_end_align (); Real width = spanner->spanner_length (); - Score_element *bnd = spanner->get_bound (RIGHT); + Grob *bnd = spanner->get_bound (RIGHT); width += bnd->extent (bnd, X_AXIS).length (); width -= broken_left; width -= shorten[LEFT] + shorten[RIGHT]; @@ -100,7 +100,7 @@ Text_spanner::brew_molecule (SCM smob) String type = "dashed-line"; - s = me->get_elt_property ("type"); + s = me->get_grob_property ("type"); if (gh_string_p (s)) type = ly_scm2string (s); @@ -111,18 +111,18 @@ Text_spanner::brew_molecule (SCM smob) || type == "dotted-line") { Real thick = thickness; - s = me->get_elt_property ("line-thickness"); + s = me->get_grob_property ("line-thickness"); if (gh_number_p (s)) thick *= gh_scm2double (s); // maybe these should be in line-thickness? Real length = staff_space; - s = me->get_elt_property ("dash-length"); + s = me->get_grob_property ("dash-length"); if (gh_number_p (s)) length = gh_scm2double (s) * staff_space; Real period = 2 * length + thick; - s = me->get_elt_property ("dash-period"); + s = me->get_grob_property ("dash-period"); if (gh_number_p (s)) period = gh_scm2double (s) * staff_space; @@ -146,11 +146,11 @@ Text_spanner::brew_molecule (SCM smob) Box b (Interval (0, width), Interval (-thick / 2, thick / 2)); line = Molecule (b, list); - s = me->get_elt_property ("edge-height"); + s = me->get_grob_property ("edge-height"); if (gh_pair_p (s)) { Direction d = LEFT; - int dir = to_dir (me->get_elt_property ("direction")); + int dir = to_dir (me->get_grob_property ("direction")); do { Real dy = gh_scm2double (index_cell (s, d)) * - dir; diff --git a/lily/thread-devnull-engraver.cc b/lily/thread-devnull-engraver.cc index 6436f0c2ef..2599d6b4f2 100644 --- a/lily/thread-devnull-engraver.cc +++ b/lily/thread-devnull-engraver.cc @@ -17,13 +17,13 @@ public: VIRTUAL_COPY_CONS (Translator); protected: - virtual void acknowledge_element (Score_element_info); + virtual void acknowledge_grob (Grob_info); }; ADD_THIS_TRANSLATOR (Thread_devnull_engraver); void -Thread_devnull_engraver::acknowledge_element (Score_element_info i) +Thread_devnull_engraver::acknowledge_grob (Grob_info i) { if (daddy_trans_l_->id_str_ == "two" && (to_boolean (get_property ("unison")) diff --git a/lily/tie-column.cc b/lily/tie-column.cc index 58d3db3dca..552c98de70 100644 --- a/lily/tie-column.cc +++ b/lily/tie-column.cc @@ -17,7 +17,7 @@ void -Tie_column::set_interface (Score_element*me) +Tie_column::set_interface (Grob*me) { me->set_interface (ly_symbol2scm ("tie-column-interface")); me->set_extent_callback (SCM_EOL, X_AXIS); @@ -25,7 +25,7 @@ Tie_column::set_interface (Score_element*me) } bool -Tie_column::has_interface (Score_element*me) +Tie_column::has_interface (Grob*me) { return me->has_interface (ly_symbol2scm ("tie-column-interface")); } @@ -36,7 +36,7 @@ Tie_column::has_interface (Score_element*me) */ void -Tie_column::add_tie (Score_element*me,Score_element *s) +Tie_column::add_tie (Grob*me,Grob *s) { if (! Pointer_group_interface ::count (me, "ties")) { @@ -50,8 +50,8 @@ Tie_column::add_tie (Score_element*me,Score_element *s) int -tie_compare (Score_element* const & s1, - Score_element* const & s2) +tie_compare (Grob* const & s1, + Grob* const & s2) { return sign (Tie::position_f (s1) - Tie::position_f(s2)); } @@ -66,10 +66,10 @@ tie_compare (Score_element* const & s1, Ross forgets about the tie that is *on* the middle staff line. We assume it goes UP. (TODO: make me settable) */ void -Tie_column::set_directions (Score_element*me) +Tie_column::set_directions (Grob*me) { - Link_array ties = - Pointer_group_interface__extract_elements (me, (Score_element*)0, "ties"); + Link_array ties = + Pointer_group_interface__extract_elements (me, (Grob*)0, "ties"); for (int i = ties.size (); i--; ) if (Directional_element_interface::get (ties[i])) @@ -85,7 +85,7 @@ Tie_column::set_directions (Score_element*me) { for (int i = ties.size (); i--;) { - Score_element * t = ties[i]; + Grob * t = ties[i]; Directional_element_interface::set (t, d); } return; @@ -93,7 +93,7 @@ Tie_column::set_directions (Score_element*me) if (ties.size () == 1) { - Score_element * t = ties[0]; + Grob * t = ties[0]; Directional_element_interface::set (t,Tie::get_default_dir (t)); return; } @@ -105,7 +105,7 @@ Tie_column::set_directions (Score_element*me) Directional_element_interface ::set(ties.pop (), UP); for (int i=ties.size(); i--; ) { - Score_element * t = ties[i]; + Grob * t = ties[i]; Real p = Tie::position_f (t); Direction d = (Direction) sign (p); if (!d) diff --git a/lily/tie-engraver.cc b/lily/tie-engraver.cc index d58cc35da6..981e71c028 100644 --- a/lily/tie-engraver.cc +++ b/lily/tie-engraver.cc @@ -21,10 +21,10 @@ struct CHead_melodic_tuple { Melodic_req *req_l_ ; - Score_element *head_l_; + Grob *head_l_; Moment end_; CHead_melodic_tuple (); - CHead_melodic_tuple (Score_element*, Melodic_req*, Moment); + CHead_melodic_tuple (Grob*, Melodic_req*, Moment); static int pitch_compare (CHead_melodic_tuple const &, CHead_melodic_tuple const &); static int time_compare (CHead_melodic_tuple const &, CHead_melodic_tuple const &); }; @@ -52,19 +52,19 @@ class Tie_engraver : public Engraver Tie_req *req_l_; Array now_heads_; Array stopped_heads_; - Link_array tie_p_arr_; + Link_array tie_p_arr_; Spanner * tie_column_p_; void set_melisma (bool); protected: - virtual void do_post_move_processing (); - virtual void do_pre_move_processing (); - virtual void acknowledge_element (Score_element_info); - virtual bool do_try_music (Music*); - virtual void process_acknowledged (); - void typeset_tie (Score_element*); + virtual void start_translation_timestep (); + virtual void stop_translation_timestep (); + virtual void acknowledge_grob (Grob_info); + virtual bool try_music (Music*); + virtual void create_grobs (); + void typeset_tie (Grob*); public: VIRTUAL_COPY_CONS(Translator); Tie_engraver(); @@ -80,7 +80,7 @@ Tie_engraver::Tie_engraver() bool -Tie_engraver::do_try_music (Music *m) +Tie_engraver::try_music (Music *m) { if (Tie_req * c = dynamic_cast (m)) { @@ -106,7 +106,7 @@ Tie_engraver::set_melisma (bool m) } void -Tie_engraver::acknowledge_element (Score_element_info i) +Tie_engraver::acknowledge_grob (Grob_info i) { if (Rhythmic_head::has_interface (i.elem_l_)) { @@ -118,7 +118,7 @@ Tie_engraver::acknowledge_element (Score_element_info i) } void -Tie_engraver::process_acknowledged () +Tie_engraver::create_grobs () { if (req_l_ && !done_) { @@ -182,18 +182,18 @@ Tie_engraver::process_acknowledged () Tie::set_head (p,RIGHT, dynamic_cast (unsmob_element (gh_cdr (pair)))); tie_p_arr_.push (p); - announce_element (p, req_l_); + announce_grob (p, req_l_); } else for (SCM s = head_list; gh_pair_p (s); s = gh_cdr (s)) { - Score_element * p = new Spanner (basic); + Grob * p = new Spanner (basic); Tie::set_interface (p); Tie::set_head (p, LEFT, dynamic_cast (unsmob_element (gh_caar (s)))); Tie::set_head (p, RIGHT, dynamic_cast (unsmob_element (gh_cdar (s)))); tie_p_arr_.push (p); - announce_element (p, req_l_); + announce_grob (p, req_l_); } if (!tie_p_arr_.size ()) @@ -206,14 +206,14 @@ Tie_engraver::process_acknowledged () Tie_column::set_interface (tie_column_p_); for (int i = tie_p_arr_.size (); i--; ) Tie_column::add_tie (tie_column_p_,tie_p_arr_ [i]); - announce_element (tie_column_p_, 0); + announce_grob (tie_column_p_, 0); } } } void -Tie_engraver::do_pre_move_processing () +Tie_engraver::stop_translation_timestep () { for (int i=0; i < now_heads_.size (); i++) { @@ -228,19 +228,19 @@ Tie_engraver::do_pre_move_processing () tie_p_arr_.clear (); if (tie_column_p_) { - typeset_element (tie_column_p_); + typeset_grob (tie_column_p_); tie_column_p_ =0; } } void -Tie_engraver::typeset_tie (Score_element *her) +Tie_engraver::typeset_tie (Grob *her) { if (!(Tie::head (her,LEFT) && Tie::head (her,RIGHT))) warning (_ ("lonely tie")); Direction d = LEFT; - Drul_array new_head_drul; + Drul_array new_head_drul; new_head_drul[LEFT] = Tie::head(her,LEFT); new_head_drul[RIGHT] = Tie::head (her,RIGHT); do { @@ -248,14 +248,14 @@ Tie_engraver::typeset_tie (Score_element *her) new_head_drul[d] = Tie::head(her,(Direction)-d); } while (flip(&d) != LEFT); - index_set_cell (her->get_elt_property ("heads"), LEFT, new_head_drul[LEFT]->self_scm () ); - index_set_cell (her->get_elt_property ("heads"), RIGHT, new_head_drul[RIGHT]->self_scm () ); + index_set_cell (her->get_grob_property ("heads"), LEFT, new_head_drul[LEFT]->self_scm () ); + index_set_cell (her->get_grob_property ("heads"), RIGHT, new_head_drul[RIGHT]->self_scm () ); - typeset_element (her); + typeset_grob (her); } void -Tie_engraver::do_post_move_processing () +Tie_engraver::start_translation_timestep () { SCM m = get_property ("automaticMelismata"); if (to_boolean (m)) @@ -279,7 +279,7 @@ CHead_melodic_tuple::CHead_melodic_tuple () end_ = 0; } -CHead_melodic_tuple::CHead_melodic_tuple (Score_element *h, Melodic_req*m, Moment mom) +CHead_melodic_tuple::CHead_melodic_tuple (Grob *h, Melodic_req*m, Moment mom) { head_l_ = h; req_l_ = m; diff --git a/lily/tie-performer.cc b/lily/tie-performer.cc index c25e51ea13..6edbf83333 100644 --- a/lily/tie-performer.cc +++ b/lily/tie-performer.cc @@ -50,17 +50,17 @@ private: Link_array tie_p_arr_; protected: - virtual void do_post_move_processing (); - virtual void do_pre_move_processing (); - virtual void acknowledge_element (Audio_element_info); - virtual bool do_try_music (Music*); - virtual void process_acknowledged (); + virtual void start_translation_timestep (); + virtual void stop_translation_timestep (); + virtual void acknowledge_grob (Audio_element_info); + virtual bool try_music (Music*); + virtual void create_grobs (); }; ADD_THIS_TRANSLATOR (Tie_performer); bool -Tie_performer::do_try_music (Music *m) +Tie_performer::try_music (Music *m) { if (!req_l_) { @@ -74,7 +74,7 @@ Tie_performer::do_try_music (Music *m) } void -Tie_performer::acknowledge_element (Audio_element_info i) +Tie_performer::acknowledge_grob (Audio_element_info i) { if (Audio_note *nh = dynamic_cast (i.elem_l_)) { @@ -86,7 +86,7 @@ Tie_performer::acknowledge_element (Audio_element_info i) } void -Tie_performer::process_acknowledged () +Tie_performer::create_grobs () { if (req_l_ && ! done_) { @@ -149,7 +149,7 @@ Tie_performer::process_acknowledged () } void -Tie_performer::do_pre_move_processing () +Tie_performer::stop_translation_timestep () { for (int i=0; i < now_notes_.size (); i++) { @@ -166,7 +166,7 @@ Tie_performer::do_pre_move_processing () } void -Tie_performer::do_post_move_processing () +Tie_performer::start_translation_timestep () { req_l_ =0; done_ = false; diff --git a/lily/tie.cc b/lily/tie.cc index 403b991a32..bf8805d1b7 100644 --- a/lily/tie.cc +++ b/lily/tie.cc @@ -37,39 +37,39 @@ void -Tie::set_head (Score_element*me,Direction d, Item * head_l) +Tie::set_head (Grob*me,Direction d, Item * head_l) { assert (!head (me,d)); - index_set_cell (me->get_elt_property ("heads"), d, head_l->self_scm ()); + index_set_cell (me->get_grob_property ("heads"), d, head_l->self_scm ()); dynamic_cast (me)->set_bound (d, head_l); me->add_dependency (head_l); } void -Tie::set_interface (Score_element*me) +Tie::set_interface (Grob*me) { - me->set_elt_property ("heads", gh_cons (SCM_EOL, SCM_EOL)); + me->set_grob_property ("heads", gh_cons (SCM_EOL, SCM_EOL)); me->set_interface (ly_symbol2scm ("tie-interface")); } bool -Tie::has_interface (Score_element*me) +Tie::has_interface (Grob*me) { return me->has_interface (ly_symbol2scm ("tie-interface")); } -Score_element* -Tie::head (Score_element*me, Direction d) +Grob* +Tie::head (Grob*me, Direction d) { - SCM c = me->get_elt_property ("heads"); + SCM c = me->get_grob_property ("heads"); c = index_cell (c, d); return unsmob_element (c); } Real -Tie::position_f (Score_element*me) +Tie::position_f (Grob*me) { Direction d = head (me,LEFT) ? LEFT:RIGHT; return Staff_symbol_referencer::position_f (head (me,d)); @@ -85,7 +85,7 @@ Tie::position_f (Score_element*me) further). */ Direction -Tie::get_default_dir (Score_element*me) +Tie::get_default_dir (Grob*me) { Item * sl = head(me,LEFT) ? Rhythmic_head::stem_l (head (me,LEFT)) :0; Item * sr = head(me,RIGHT) ? Rhythmic_head::stem_l (head (me,RIGHT)) :0; @@ -128,12 +128,12 @@ Tie::get_control_points (SCM smob) Real staff_space = Staff_symbol_referencer::staff_space (me); - Real x_gap_f = gh_scm2double (me->get_elt_property ("x-gap")); + Real x_gap_f = gh_scm2double (me->get_grob_property ("x-gap")); - Score_element* l = me->get_bound (LEFT); - Score_element* r = me->get_bound (RIGHT); + Grob* l = me->get_bound (LEFT); + Grob* r = me->get_bound (RIGHT); - Score_element* commonx = me->common_refpoint (l, X_AXIS); + Grob* commonx = me->common_refpoint (l, X_AXIS); commonx = me->common_refpoint (r, X_AXIS); Real left_x; @@ -176,7 +176,7 @@ Tie::get_control_points (SCM smob) Direction dir = Directional_element_interface::get(me); - SCM details = me->get_elt_property ("details"); + SCM details = me->get_grob_property ("details"); SCM lim // groetjes aan de chirurgendochter. = scm_assq (ly_symbol2scm ("height-limit"),details); @@ -188,7 +188,7 @@ Tie::get_control_points (SCM smob) Offset leave_dir = b.control_[1] - b.control_[0]; - Score_element *hed =head (me, headdir); + Grob *hed =head (me, headdir); Real dx = (hed->extent (hed, X_AXIS).length () + x_gap_f)/2.0; Real max_gap = leave_dir[Y_AXIS] * dx / leave_dir[X_AXIS]; @@ -241,7 +241,7 @@ Tie::get_control_points (SCM smob) Real diff = ry - y; Real newy = y; - Real clear = staff_space * gh_scm2double (me->get_elt_property ("staffline-clearance")); + Real clear = staff_space * gh_scm2double (me->get_grob_property ("staffline-clearance")); if (fabs (y) <= Staff_symbol_referencer::staff_radius (me) && fabs (diff) < clear) @@ -286,7 +286,7 @@ MAKE_SCHEME_CALLBACK(Tie,set_spacing_rods,1); SCM Tie::set_spacing_rods (SCM smob) { - Score_element*me = unsmob_element (smob); + Grob*me = unsmob_element (smob); Spanner*sp = dynamic_cast (me); Rod r; @@ -294,7 +294,7 @@ Tie::set_spacing_rods (SCM smob) r.item_l_drul_ [RIGHT]=sp->get_bound (RIGHT); r.distance_f_ - = gh_scm2double (me->get_elt_property ("minimum-length")) + = gh_scm2double (me->get_grob_property ("minimum-length")) * 1.0; r.add_to_cols (); return SCM_UNSPECIFIED; @@ -304,17 +304,17 @@ MAKE_SCHEME_CALLBACK(Tie,brew_molecule,1); SCM Tie::brew_molecule (SCM smob) { - Score_element*me = unsmob_element (smob); + Grob*me = unsmob_element (smob); - SCM cp = me->get_elt_property ("control-points"); + SCM cp = me->get_grob_property ("control-points"); if (cp == SCM_EOL) { cp = get_control_points (smob); - me->set_elt_property ("control-points", cp); + me->set_grob_property ("control-points", cp); } Real thick = - gh_scm2double (me->get_elt_property ("thickness")) + gh_scm2double (me->get_grob_property ("thickness")) * me->paper_l ()->get_var ("stafflinethickness"); Bezier b; diff --git a/lily/time-signature-engraver.cc b/lily/time-signature-engraver.cc index e6181a17b1..69646280db 100644 --- a/lily/time-signature-engraver.cc +++ b/lily/time-signature-engraver.cc @@ -19,8 +19,8 @@ */ class Time_signature_engraver : public Engraver { protected: - virtual void do_pre_move_processing(); - virtual void process_acknowledged (); + virtual void stop_translation_timestep(); + virtual void create_grobs (); public: VIRTUAL_COPY_CONS(Translator); Item * time_signature_p_; @@ -36,7 +36,7 @@ Time_signature_engraver::Time_signature_engraver() } void -Time_signature_engraver::process_acknowledged() +Time_signature_engraver::create_grobs() { /* not rigorously safe, since the value might get GC'd and @@ -46,10 +46,10 @@ Time_signature_engraver::process_acknowledged() { last_time_fraction_ = fr; time_signature_p_ = new Item (get_property ("TimeSignature")); - time_signature_p_->set_elt_property ("fraction",fr); + time_signature_p_->set_grob_property ("fraction",fr); if (time_signature_p_) - announce_element (time_signature_p_, 0); + announce_grob (time_signature_p_, 0); } } @@ -57,11 +57,11 @@ Time_signature_engraver::process_acknowledged() void -Time_signature_engraver::do_pre_move_processing() +Time_signature_engraver::stop_translation_timestep() { if (time_signature_p_) { - typeset_element (time_signature_p_); + typeset_grob (time_signature_p_); time_signature_p_ =0; } } diff --git a/lily/time-signature-performer.cc b/lily/time-signature-performer.cc index c544be8180..66d2acc428 100644 --- a/lily/time-signature-performer.cc +++ b/lily/time-signature-performer.cc @@ -21,8 +21,8 @@ public: protected: - virtual void do_pre_move_processing (); - virtual void process_acknowledged (); + virtual void stop_translation_timestep (); + virtual void create_grobs (); SCM prev_fraction_; private: @@ -43,7 +43,7 @@ Time_signature_performer::~Time_signature_performer () void -Time_signature_performer::process_acknowledged () +Time_signature_performer::create_grobs () { SCM fr = get_property ("timeSignatureFraction"); if (gh_pair_p (fr) @@ -60,7 +60,7 @@ Time_signature_performer::process_acknowledged () } void -Time_signature_performer::do_pre_move_processing () +Time_signature_performer::stop_translation_timestep () { if (audio_p_) { diff --git a/lily/time-signature.cc b/lily/time-signature.cc index 04725d8adc..263cccb149 100644 --- a/lily/time-signature.cc +++ b/lily/time-signature.cc @@ -21,9 +21,9 @@ MAKE_SCHEME_CALLBACK(Time_signature,brew_molecule,1); SCM Time_signature::brew_molecule (SCM smob) { - Score_element * me = unsmob_element (smob); - SCM st = me->get_elt_property ("style"); - SCM frac = me->get_elt_property ("fraction"); + Grob * me = unsmob_element (smob); + SCM st = me->get_grob_property ("style"); + SCM frac = me->get_grob_property ("fraction"); int n = 4; int d = 4; if (gh_pair_p (frac)) @@ -33,9 +33,9 @@ Time_signature::brew_molecule (SCM smob) } - if (gh_string_p (st)) + if (gh_symbol_p (st)) { - String style (ly_scm2string (st)); + String style (ly_scm2string (scm_symbol_to_string (st))); if (style[0]=='1') { return time_signature (me, n, 0).smobbed_copy (); @@ -50,7 +50,7 @@ Time_signature::brew_molecule (SCM smob) } Molecule -Time_signature::special_time_signature (Score_element*me, String s, int n, int d) +Time_signature::special_time_signature (Grob*me, String s, int n, int d) { /* Randomly probing the font sucks? @@ -86,7 +86,7 @@ Time_signature::special_time_signature (Score_element*me, String s, int n, int d Molecule -Time_signature::time_signature (Score_element*me,int num, int den) +Time_signature::time_signature (Grob*me,int num, int den) { SCM chain = Font_interface::font_alist_chain (me); diff --git a/lily/timing-engraver.cc b/lily/timing-engraver.cc index acf416664a..5134e67233 100644 --- a/lily/timing-engraver.cc +++ b/lily/timing-engraver.cc @@ -9,7 +9,7 @@ #include "translator-group.hh" #include "command-request.hh" -#include "score-element-info.hh" +#include "grob-info.hh" #include "multi-measure-rest.hh" #include "timing-translator.hh" #include "engraver.hh" @@ -20,8 +20,8 @@ class Timing_engraver : public Timing_translator, public Engraver { protected: - virtual void do_post_move_processing (); - virtual void do_pre_move_processing (); + virtual void start_translation_timestep (); + virtual void stop_translation_timestep (); public: VIRTUAL_COPY_CONS(Translator); }; @@ -29,9 +29,9 @@ public: ADD_THIS_TRANSLATOR(Timing_engraver); void -Timing_engraver::do_post_move_processing( ) +Timing_engraver::start_translation_timestep( ) { - Timing_translator::do_post_move_processing (); + Timing_translator::start_translation_timestep (); SCM nonauto = get_property ("barNonAuto"); @@ -54,9 +54,9 @@ Timing_engraver::do_post_move_processing( ) } void -Timing_engraver::do_pre_move_processing () +Timing_engraver::stop_translation_timestep () { - Timing_translator::do_pre_move_processing (); + Timing_translator::stop_translation_timestep (); daddy_trans_l_->set_property ("whichBar", SCM_EOL); } diff --git a/lily/timing-translator.cc b/lily/timing-translator.cc index 1f356c7c19..9efa2fd4b5 100644 --- a/lily/timing-translator.cc +++ b/lily/timing-translator.cc @@ -20,7 +20,7 @@ class declaration can go here. */ bool -Timing_translator::do_try_music (Music*r) +Timing_translator::try_music (Music*r) { if (dynamic_cast (r)) { @@ -54,7 +54,7 @@ Timing_translator::deprecated_process_music() void -Timing_translator::do_pre_move_processing() +Timing_translator::stop_translation_timestep() { check_ = 0; @@ -149,7 +149,7 @@ Timing_translator::measure_position () const } void -Timing_translator::do_post_move_processing() +Timing_translator::start_translation_timestep() { check_ =00; Translator *t = this; diff --git a/lily/translator-group.cc b/lily/translator-group.cc index 5aad20793e..57713c5d18 100644 --- a/lily/translator-group.cc +++ b/lily/translator-group.cc @@ -149,7 +149,6 @@ bool Translator_group::try_music_on_nongroup_children (Music *m) { bool hebbes_b =false; - for (SCM p = simple_trans_list_; !hebbes_b && gh_pair_p (p); p = gh_cdr (p)) { @@ -159,7 +158,7 @@ Translator_group::try_music_on_nongroup_children (Music *m) } bool -Translator_group::do_try_music (Music* m) +Translator_group::try_music (Music* m) { bool hebbes_b = try_music_on_nongroup_children (m); @@ -324,48 +323,10 @@ Translator_group::execute_single_pushpop_property (SCM prop, SCM eltprop, SCM va if (gh_pair_p (prev) || prev == SCM_EOL) { - bool ok = true; - - SCM errport = scm_current_error_port (); + bool ok = type_check_assignment (val, eltprop, ly_symbol2scm ("backend-type?")); - SCM meta = scm_assoc (ly_symbol2scm ("meta"), prev); - /* - We're probably in a performer. - */ - if (!gh_pair_p (meta)) - return; - SCM props = scm_assoc (ly_symbol2scm ("properties"), gh_cdr (meta)); - SCM type_p = scm_assoc (eltprop, gh_cdr (props)); - if (!gh_pair_p (type_p)) - { - scm_puts (_("Couldn't find property description for #'").ch_C(),errport); - scm_display (eltprop, errport); - - scm_puts (_(" in element description ").ch_C(),errport); - scm_display (prop, errport); - - scm_puts (_(". Perhaps you made a typing error?\n").ch_C(),errport); - } - else - { - type_p = gh_cdr (type_p); - if (val != SCM_EOL - && gh_call1 (type_p, val) == SCM_BOOL_F) - { - ok = false; - scm_puts (_("Failed typecheck for #'").ch_C (),errport); - scm_display (eltprop,errport); - scm_puts ( _(", value ").ch_C (), errport); - scm_write (val, errport); - scm_puts (_(" must be of type ").ch_C (), errport); - SCM typefunc = scm_eval2 (ly_symbol2scm ("type-name"), SCM_EOL); - scm_display (gh_call1 (typefunc, type_p), errport); - scm_puts ("\n", errport); - } - } - if (ok) { prev = gh_cons (gh_cons (eltprop, val), prev); @@ -406,13 +367,13 @@ Translator_group::execute_single_pushpop_property (SCM prop, SCM eltprop, SCM va STUBS */ void -Translator_group::do_pre_move_processing () +Translator_group::stop_translation_timestep () { each (&Translator::pre_move_processing); } void -Translator_group::do_post_move_processing () +Translator_group::start_translation_timestep () { each (&Translator::post_move_processing); } @@ -434,3 +395,42 @@ Translator_group::do_removal_processing () { each (&Translator::removal_processing); } + + +bool +type_check_assignment (SCM val, SCM sym, SCM type_symbol) +{ + bool ok = true; + SCM type_p = SCM_EOL; + SCM errport = scm_current_error_port (); + + if (SCM_IMP(sym)) + type_p = scm_object_property (sym, type_symbol); + + if (type_p != SCM_EOL && !gh_procedure_p (type_p)) + { + scm_puts (_("Couldn't find property type-check for `").ch_C(),errport); + scm_puts (String ("'").ch_C(), errport); + scm_display (sym, errport); + + scm_puts (_(". Perhaps you made a typing error?\n").ch_C(),errport); + } + else + { + if (val != SCM_EOL + && gh_procedure_p (type_p) + && gh_call1 (type_p, val) == SCM_BOOL_F) + { + ok = false; + scm_puts (_("Failed typecheck for `").ch_C (),errport); + scm_display (sym,errport); + scm_puts ( _("', value `").ch_C (), errport); + scm_write (val, errport); + scm_puts (_("' must be of type ").ch_C (), errport); + SCM typefunc = scm_eval2 (ly_symbol2scm ("type-name"), SCM_EOL); + scm_display (gh_call1 (typefunc, type_p), errport); + scm_puts ("\n", errport); + } + } + return ok; +} diff --git a/lily/translator.cc b/lily/translator.cc index 25e6ca3bad..485f807eb1 100644 --- a/lily/translator.cc +++ b/lily/translator.cc @@ -59,7 +59,7 @@ Translator::is_alias_b (String s) const } bool -Translator::do_try_music (Music *) +Translator::try_music (Music *) { return false; } @@ -87,7 +87,7 @@ Translator::do_add_processing () void Translator::post_move_processing () { - do_post_move_processing (); + start_translation_timestep (); } void @@ -96,11 +96,6 @@ Translator::removal_processing () do_removal_processing (); } -bool -Translator::try_music (Music * r) -{ - return do_try_music (r); -} void Translator::announces () @@ -112,7 +107,7 @@ Translator::announces () void Translator::pre_move_processing () { - do_pre_move_processing (); + stop_translation_timestep (); } @@ -136,12 +131,12 @@ Translator::get_property (SCM sym) const } void -Translator:: do_pre_move_processing () +Translator:: stop_translation_timestep () { } void -Translator::do_post_move_processing () +Translator::start_translation_timestep () { } diff --git a/lily/tuplet-engraver.cc b/lily/tuplet-engraver.cc index 87446d86eb..042541746e 100644 --- a/lily/tuplet-engraver.cc +++ b/lily/tuplet-engraver.cc @@ -33,15 +33,15 @@ protected: Link_array started_span_p_arr_; virtual void do_removal_processing (); - virtual void acknowledge_element (Score_element_info); - virtual bool do_try_music (Music*r); + virtual void acknowledge_grob (Grob_info); + virtual bool try_music (Music*r); void deprecated_process_music (); - virtual void do_post_move_processing (); - virtual void process_acknowledged (); + virtual void start_translation_timestep (); + virtual void create_grobs (); }; bool -Tuplet_engraver::do_try_music (Music *r) +Tuplet_engraver::try_music (Music *r) { if (Time_scaled_music * c = dynamic_cast (r)) { @@ -64,7 +64,7 @@ Tuplet_engraver::do_try_music (Music *r) } void -Tuplet_engraver::process_acknowledged () +Tuplet_engraver::create_grobs () { deprecated_process_music (); } @@ -88,17 +88,17 @@ Tuplet_engraver::deprecated_process_music () else started_span_p_arr_[i] = glep; - glep->set_elt_property ("text", + glep->set_grob_property ("text", ly_str02scm (to_str (time_scaled_music_arr_[i]->den_i_).ch_C())); - announce_element (glep, time_scaled_music_arr_ [i]); + announce_grob (glep, time_scaled_music_arr_ [i]); } } void -Tuplet_engraver::acknowledge_element (Score_element_info i) +Tuplet_engraver::acknowledge_grob (Grob_info i) { - bool grace= to_boolean (i.elem_l_->get_elt_property ("grace")); + bool grace= to_boolean (i.elem_l_->get_grob_property ("grace")); SCM wg = get_property ("weAreGraceContext"); bool wgb = to_boolean (wg); if (grace != wgb) @@ -119,7 +119,7 @@ Tuplet_engraver::acknowledge_element (Score_element_info i) } void -Tuplet_engraver::do_post_move_processing () +Tuplet_engraver::start_translation_timestep () { Moment now = now_mom (); @@ -134,7 +134,7 @@ Tuplet_engraver::do_post_move_processing () { if (started_span_p_arr_[i]) { - typeset_element (started_span_p_arr_[i]); + typeset_grob (started_span_p_arr_[i]); started_span_p_arr_[i] =0; } @@ -158,7 +158,7 @@ Tuplet_engraver::do_removal_processing () for (int i=0; i < started_span_p_arr_.size (); i++) { if (started_span_p_arr_[i]) - typeset_element (started_span_p_arr_[i]); + typeset_grob (started_span_p_arr_[i]); } } diff --git a/lily/tuplet-spanner.cc b/lily/tuplet-spanner.cc index af67ac641c..3e1d173400 100644 --- a/lily/tuplet-spanner.cc +++ b/lily/tuplet-spanner.cc @@ -24,7 +24,7 @@ #include "spanner.hh" void -Tuplet_spanner::set_interface (Score_element*me) +Tuplet_spanner::set_interface (Grob*me) { me->set_interface (ly_symbol2scm ("tuplet-bracket")); } @@ -38,15 +38,15 @@ MAKE_SCHEME_CALLBACK(Tuplet_spanner,brew_molecule,1); SCM Tuplet_spanner::brew_molecule (SCM smob) { - Score_element *me= unsmob_element (smob); + Grob *me= unsmob_element (smob); Molecule mol; // Default behaviour: number always, bracket when no beam! - bool par_beam = to_boolean (me->get_elt_property ("parallel-beam")); + bool par_beam = to_boolean (me->get_grob_property ("parallel-beam")); bool bracket_visibility = !par_beam; bool number_visibility = true; - SCM bracket = me->get_elt_property ("tuplet-bracket-visibility"); + SCM bracket = me->get_grob_property ("tuplet-bracket-visibility"); if (gh_boolean_p (bracket)) { bracket_visibility = gh_scm2bool (bracket); @@ -54,7 +54,7 @@ Tuplet_spanner::brew_molecule (SCM smob) else if (bracket == ly_symbol2scm ("if-no-beam")) bracket_visibility = !par_beam; - SCM numb = me->get_elt_property ("tuplet-number-visibility"); + SCM numb = me->get_grob_property ("tuplet-number-visibility"); if (gh_boolean_p (numb)) { number_visibility = gh_scm2bool (numb); @@ -62,18 +62,18 @@ Tuplet_spanner::brew_molecule (SCM smob) else if (bracket == ly_symbol2scm ("if-no-beam")) number_visibility = !par_beam; - if (gh_pair_p (me->get_elt_property ("columns"))) + if (gh_pair_p (me->get_grob_property ("columns"))) { - Link_array column_arr= - Pointer_group_interface__extract_elements (me, (Score_element*)0, "columns"); + Link_array column_arr= + Pointer_group_interface__extract_elements (me, (Grob*)0, "columns"); Real ncw = column_arr.top ()->extent(column_arr.top (), X_AXIS).length (); Real w = dynamic_cast(me)->spanner_length () + ncw; Real staff_space = 1.0; Direction dir = Directional_element_interface::get (me); - Real dy = gh_scm2double (me->get_elt_property ("delta-y")); - SCM number = me->get_elt_property ("text"); + Real dy = gh_scm2double (me->get_grob_property ("delta-y")); + SCM number = me->get_grob_property ("text"); if (gh_string_p (number) && number_visibility) { SCM properties = Font_interface::font_alist_chain (me); @@ -92,8 +92,8 @@ Tuplet_spanner::brew_molecule (SCM smob) { Real lt = me->paper_l ()->get_var ("stafflinethickness"); - SCM thick = me->get_elt_property ("thick"); - SCM gap = me->get_elt_property ("number-gap"); + SCM thick = me->get_grob_property ("thick"); + SCM gap = me->get_grob_property ("number-gap"); SCM at =gh_list(ly_symbol2scm ("tuplet"), gh_double2scm (1.0), @@ -118,14 +118,14 @@ Tuplet_spanner::brew_molecule (SCM smob) use first -> last note for slope, and then correct for disturbing notes in between. */ void -Tuplet_spanner::calc_position_and_height (Score_element*me,Real *offset, Real * dy) +Tuplet_spanner::calc_position_and_height (Grob*me,Real *offset, Real * dy) { - Link_array column_arr= - Pointer_group_interface__extract_elements (me, (Score_element*)0, "columns"); + Link_array column_arr= + Pointer_group_interface__extract_elements (me, (Grob*)0, "columns"); - Score_element * commony = me->common_refpoint (me->get_elt_property ("columns"), Y_AXIS); - Score_element * commonx = me->common_refpoint (me->get_elt_property ("columns"), X_AXIS); + Grob * commony = me->common_refpoint (me->get_grob_property ("columns"), Y_AXIS); + Grob * commonx = me->common_refpoint (me->get_grob_property ("columns"), X_AXIS); Direction d = Directional_element_interface::get (me); @@ -176,10 +176,10 @@ Tuplet_spanner::calc_position_and_height (Score_element*me,Real *offset, Real * use first -> last note for slope, */ void -Tuplet_spanner::calc_dy (Score_element*me,Real * dy) +Tuplet_spanner::calc_dy (Grob*me,Real * dy) { - Link_array column_arr= - Pointer_group_interface__extract_elements (me, (Score_element*)0, "columns"); + Link_array column_arr= + Pointer_group_interface__extract_elements (me, (Grob*)0, "columns"); /* ugh. refps. @@ -193,7 +193,7 @@ MAKE_SCHEME_CALLBACK(Tuplet_spanner,after_line_breaking,1); SCM Tuplet_spanner::after_line_breaking (SCM smob) { - Score_element * me = unsmob_element (smob); + Grob * me = unsmob_element (smob); Link_array column_arr= Pointer_group_interface__extract_elements (me, (Note_column*)0, "columns"); Spanner *sp = dynamic_cast (me); @@ -216,29 +216,29 @@ Tuplet_spanner::after_line_breaking (SCM smob) calc_position_and_height (me,&offset,&dy); - me->set_elt_property ("delta-y", gh_double2scm (dy)); + me->set_grob_property ("delta-y", gh_double2scm (dy)); me->translate_axis (offset, Y_AXIS); - if (scm_ilength (me->get_elt_property ("beams")) == 1) + if (scm_ilength (me->get_grob_property ("beams")) == 1) { - SCM bs = me->get_elt_property ("beams"); - Score_element *b = unsmob_element (gh_car (bs)); + SCM bs = me->get_grob_property ("beams"); + Grob *b = unsmob_element (gh_car (bs)); Spanner * beam_l = dynamic_cast (b); if (!sp->broken_b () && sp->get_bound (LEFT)->column_l () == beam_l->get_bound (LEFT)->column_l () && sp->get_bound (RIGHT)->column_l () == beam_l->get_bound (RIGHT)->column_l ()) - me->set_elt_property ("parallel-beam", SCM_BOOL_T); + me->set_grob_property ("parallel-beam", SCM_BOOL_T); } return SCM_UNSPECIFIED; } Direction -Tuplet_spanner::get_default_dir (Score_element*me) +Tuplet_spanner::get_default_dir (Grob*me) { Direction d = UP; - SCM dir_sym =me->get_elt_property ("dir-forced"); + SCM dir_sym =me->get_grob_property ("dir-forced"); if (isdir_b (dir_sym)) { d= to_dir (dir_sym); @@ -247,9 +247,9 @@ Tuplet_spanner::get_default_dir (Score_element*me) } d = UP ; - for (SCM s = me->get_elt_property ("columns"); gh_pair_p (s); s = gh_cdr (s)) + for (SCM s = me->get_grob_property ("columns"); gh_pair_p (s); s = gh_cdr (s)) { - Score_element * nc = unsmob_element (gh_car (s)); + Grob * nc = unsmob_element (gh_car (s)); if (Note_column::dir (nc) < 0) { d = DOWN; @@ -261,14 +261,14 @@ Tuplet_spanner::get_default_dir (Score_element*me) } void -Tuplet_spanner::add_beam (Score_element*me, Score_element *b) +Tuplet_spanner::add_beam (Grob*me, Grob *b) { me->add_dependency (b); Pointer_group_interface::add_element (me, "beams",b); } void -Tuplet_spanner::add_column (Score_element*me, Item*n) +Tuplet_spanner::add_column (Grob*me, Item*n) { Pointer_group_interface::add_element (me, "columns",n); me->add_dependency (n); diff --git a/lily/type-swallow-translator.cc b/lily/type-swallow-translator.cc index 1aa529cd52..1f5a9ca00a 100644 --- a/lily/type-swallow-translator.cc +++ b/lily/type-swallow-translator.cc @@ -11,7 +11,7 @@ bool -Type_swallow_translator::do_try_music (Music*r) +Type_swallow_translator::try_music (Music*r) { if (classname (r) == swallow_str_) return true; diff --git a/lily/vertical-align-engraver.cc b/lily/vertical-align-engraver.cc index 9fa4ac78e5..408359e329 100644 --- a/lily/vertical-align-engraver.cc +++ b/lily/vertical-align-engraver.cc @@ -16,12 +16,12 @@ class Vertical_align_engraver : public Engraver { Spanner * valign_p_; - bool qualifies_b (Score_element_info) const; + bool qualifies_b (Grob_info) const; public: VIRTUAL_COPY_CONS(Translator); Vertical_align_engraver(); protected: - virtual void acknowledge_element (Score_element_info); + virtual void acknowledge_grob (Grob_info); virtual void do_creation_processing(); virtual void do_removal_processing(); }; @@ -36,20 +36,20 @@ Vertical_align_engraver::do_creation_processing() { valign_p_ =new Spanner (get_property ("VerticalAlignment")); valign_p_->set_bound(LEFT,unsmob_element (get_property ("currentCommandColumn"))); - announce_element (valign_p_ , 0); + announce_grob (valign_p_ , 0); } void Vertical_align_engraver::do_removal_processing() { valign_p_->set_bound(RIGHT,unsmob_element (get_property ("currentCommandColumn"))); - typeset_element (valign_p_); + typeset_grob (valign_p_); valign_p_ =0; } bool -Vertical_align_engraver::qualifies_b (Score_element_info i) const +Vertical_align_engraver::qualifies_b (Grob_info i) const { int sz = i.origin_trans_l_arr ((Translator*)this).size() ; @@ -58,7 +58,7 @@ Vertical_align_engraver::qualifies_b (Score_element_info i) const } void -Vertical_align_engraver::acknowledge_element (Score_element_info i) +Vertical_align_engraver::acknowledge_grob (Grob_info i) { if (qualifies_b (i)) { diff --git a/lily/voice-devnull-engraver.cc b/lily/voice-devnull-engraver.cc index f334a4c07d..6b5e540363 100644 --- a/lily/voice-devnull-engraver.cc +++ b/lily/voice-devnull-engraver.cc @@ -17,8 +17,8 @@ public: VIRTUAL_COPY_CONS (Translator); protected: - virtual bool do_try_music (Music *m); - virtual void acknowledge_element (Score_element_info); + virtual bool try_music (Music *m); + virtual void acknowledge_grob (Grob_info); }; ADD_THIS_TRANSLATOR (Voice_devnull_engraver); @@ -32,7 +32,7 @@ static char const *eat_spanners[] = { }; bool -Voice_devnull_engraver::do_try_music (Music *m) +Voice_devnull_engraver::try_music (Music *m) { if (daddy_trans_l_->id_str_ == "two" && (to_boolean (get_property ("unison")) @@ -67,7 +67,7 @@ static char const *junk_interfaces[] = { }; void -Voice_devnull_engraver::acknowledge_element (Score_element_info i) +Voice_devnull_engraver::acknowledge_grob (Grob_info i) { if (daddy_trans_l_->id_str_ == "two" && (to_boolean (get_property ("unison")) diff --git a/lily/volta-engraver.cc b/lily/volta-engraver.cc index 47a0cb19d2..d53dbbedd7 100644 --- a/lily/volta-engraver.cc +++ b/lily/volta-engraver.cc @@ -26,29 +26,37 @@ public: VIRTUAL_COPY_CONS(Translator); protected: - virtual void acknowledge_element (Score_element_info); + virtual void start_translation_timestep (); + virtual void acknowledge_grob (Grob_info); virtual void do_removal_processing (); - virtual void do_pre_move_processing (); + virtual void stop_translation_timestep (); void deprecated_process_music (); - virtual void process_acknowledged (); + virtual void create_grobs (); Moment started_mom_; - Spanner * volta_span_p_; - Spanner* end_volta_span_p_; + Spanner *volta_span_p_; + Spanner *end_volta_span_p_; + + bool first_b_; }; ADD_THIS_TRANSLATOR(Volta_engraver); Volta_engraver::Volta_engraver () { + first_b_ = true; volta_span_p_ = 0; end_volta_span_p_ = 0; } void -Volta_engraver::process_acknowledged () +Volta_engraver::create_grobs () { - deprecated_process_music (); + if (first_b_) + { + deprecated_process_music (); + first_b_ = false; + } } void @@ -91,11 +99,11 @@ Volta_engraver::deprecated_process_music () volta_span_p_ =0; /* - maybe do typeset_element () directly? + maybe do typeset_grob () directly? */ if (!gh_string_p (str)) - end_volta_span_p_->set_elt_property ("last-volta", SCM_BOOL_T); + end_volta_span_p_->set_grob_property ("last-volta", SCM_BOOL_T); } if (gh_string_p (str)) @@ -119,13 +127,13 @@ Volta_engraver::deprecated_process_music () volta_span_p_ = new Spanner (get_property ("VoltaBracket")); Volta_spanner::set_interface (volta_span_p_); - announce_element (volta_span_p_,0); - volta_span_p_->set_elt_property ("text", str); + announce_grob (volta_span_p_,0); + volta_span_p_->set_grob_property ("text", str); } } void -Volta_engraver::acknowledge_element (Score_element_info i) +Volta_engraver::acknowledge_grob (Grob_info i) { if (Item* item = dynamic_cast (i.elem_l_)) { @@ -151,22 +159,28 @@ Volta_engraver::do_removal_processing () { if (volta_span_p_) { - typeset_element(volta_span_p_); + typeset_grob(volta_span_p_); } if (end_volta_span_p_) { - typeset_element (end_volta_span_p_); + typeset_grob (end_volta_span_p_); } } +void +Volta_engraver::start_translation_timestep () +{ + first_b_ = true; +} + void -Volta_engraver::do_pre_move_processing () +Volta_engraver::stop_translation_timestep () { if (end_volta_span_p_) { Side_position::add_staff_support (end_volta_span_p_); - typeset_element (end_volta_span_p_ ); + typeset_grob (end_volta_span_p_ ); end_volta_span_p_ =0; } } diff --git a/lily/volta-spanner.cc b/lily/volta-spanner.cc index 981d1e7629..942dd73a5e 100644 --- a/lily/volta-spanner.cc +++ b/lily/volta-spanner.cc @@ -21,7 +21,7 @@ void -Volta_spanner::set_interface (Score_element*) +Volta_spanner::set_interface (Grob*) { } @@ -39,7 +39,7 @@ MAKE_SCHEME_CALLBACK(Volta_spanner,brew_molecule,1); SCM Volta_spanner::brew_molecule (SCM smob) { - Score_element *me = unsmob_element (smob); + Grob *me = unsmob_element (smob); Link_array bar_arr = Pointer_group_interface__extract_elements (me, (Item*)0, "bars"); @@ -47,7 +47,7 @@ Volta_spanner::brew_molecule (SCM smob) return SCM_EOL; bool no_vertical_start = false; - bool no_vertical_end = to_boolean (me->get_elt_property ("last-volta")); + bool no_vertical_end = to_boolean (me->get_grob_property ("last-volta")); Spanner *orig_span = dynamic_cast (me->original_l_); if (orig_span && (orig_span->broken_into_l_arr_[0] != (Spanner*)me)) no_vertical_start = true; @@ -56,7 +56,7 @@ Volta_spanner::brew_molecule (SCM smob) #if 0 // FIXME - if (bar_arr.top ()->me->get_elt_property (type_str_.length_i () > 1) + if (bar_arr.top ()->me->get_grob_property (type_str_.length_i () > 1) no_vertical_end = false; #endif @@ -69,8 +69,8 @@ Volta_spanner::brew_molecule (SCM smob) */ Real left = 0.0; Real w = dynamic_cast(me)->spanner_length () - left - half_space; - Real h = gh_scm2double (me->get_elt_property ("height")); - Real t = staff_thick * gh_scm2double (me->get_elt_property ("thickness")); + Real h = gh_scm2double (me->get_grob_property ("height")); + Real t = staff_thick * gh_scm2double (me->get_grob_property ("thickness")); /* ugh: should build from line segments. @@ -85,7 +85,7 @@ Volta_spanner::brew_molecule (SCM smob) Box b (Interval (0, w), Interval (0, h)); Molecule mol (b, at); - SCM text = me->get_elt_property("text"); + SCM text = me->get_grob_property("text"); SCM properties = gh_list (me->mutable_property_alist_, me->immutable_property_alist_,SCM_UNDEFINED); Molecule num = Text_item::text2molecule (me, text, properties); @@ -97,7 +97,7 @@ Volta_spanner::brew_molecule (SCM smob) void -Volta_spanner::add_bar (Score_element *me, Item* b) +Volta_spanner::add_bar (Grob *me, Item* b) { Pointer_group_interface::add_element(me, "bars",b); Side_position::add_support (me,b); @@ -105,7 +105,7 @@ Volta_spanner::add_bar (Score_element *me, Item* b) } void -Volta_spanner::add_column (Score_element*me, Score_element* c) +Volta_spanner::add_column (Grob*me, Grob* c) { Side_position::add_support (me,c); } diff --git a/ly/engraver.ly b/ly/engraver.ly index be2d0f15e7..82de65e7b5 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/out/lilypond.lsm b/make/out/lilypond.lsm index af983620e8..88a2bc76e3 100644 --- a/make/out/lilypond.lsm +++ b/make/out/lilypond.lsm @@ -1,15 +1,15 @@ Begin3 Title: LilyPond -Version: 1.3.108 -Entered-date: 15NOV00 +Version: 1.3.109 +Entered-date: 21NOV00 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.108.tar.gz + 1000k lilypond-1.3.109.tar.gz Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/ - 1000k lilypond-1.3.108.tar.gz + 1000k lilypond-1.3.109.tar.gz Copying-policy: GPL End diff --git a/make/out/lilypond.spec b/make/out/lilypond.spec index 6c4f55c114..16d75c1faf 100644 --- a/make/out/lilypond.spec +++ b/make/out/lilypond.spec @@ -1,11 +1,11 @@ %define info yes Name: lilypond -Version: 1.3.108 +Version: 1.3.109 Release: 1 License: GPL Group: Applications/Publishing -Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.108.tar.gz +Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.3.109.tar.gz Summary: A program for printing sheet music. URL: http://www.cs.uu.nl/~hanwen/lilypond # Icon: lilypond-icon.gif diff --git a/mutopia/Coriolan/corni-part.ly b/mutopia/Coriolan/corni-part.ly index 6df2dd9e39..187677232a 100644 --- a/mutopia/Coriolan/corni-part.ly +++ b/mutopia/Coriolan/corni-part.ly @@ -11,6 +11,7 @@ copyright = "public domain"; \include "global.ly" \include "corni.ly" + \score{ \corniStaff \include "coriolan-part-combine-paper.ly" diff --git a/mutopia/Coriolan/corni.ly b/mutopia/Coriolan/corni.ly index 33010ced5b..00bef26000 100644 --- a/mutopia/Coriolan/corni.ly +++ b/mutopia/Coriolan/corni.ly @@ -16,6 +16,7 @@ corniStaff = \context VoiceCombineStaff = corni < \property VoiceCombineStaff.midiInstrument = #"french horn" \property VoiceCombineStaff.instrument = #"2 Corni\n(E\\textflat)" \property VoiceCombineStaff.instr = #"Cor.\n(E\\textflat)" + % urg: can't; only My_midi_lexer: () parses pitch? %\property VoiceCombineStaff.transposing = "es" \property VoiceCombineStaff.transposing = #3 diff --git a/scm/backend-documentation-lib.scm b/scm/backend-documentation-lib.scm index 33ca2f2a19..0667b1bc49 100644 --- a/scm/backend-documentation-lib.scm +++ b/scm/backend-documentation-lib.scm @@ -11,30 +11,37 @@ ;; alist of property descriptions -(define (document-element-property property-def element-description only-doc-if-set) - " -" +(define (backend-property->texi sym) (let* ( - (handle (assoc (car property-def) element-description)) - (def-val-str (if (eq? handle #f) - "not set" - (scm->texi (cdr handle)))) - - (name (symbol->string (car property-def))) - (type (type-name (cadr property-def))) - (desc (caddr property-def)) + (name (symbol->string sym)) + (type (object-property sym 'backend-type?)) + (typename (type-name type)) + (desc (object-property sym 'backend-doc)) ) - (if (and (eq? handle #f) only-doc-if-set) - '("" . "") - (cons (string-append "@code{" name "} " - "(" type ")" + (cons (string-append "@code{" name "} " + "(" typename ")" ":" ) - (string-append desc - "\nDefault value: " - def-val-str)) + desc) + )) + +(define (document-element-property sym element-description only-doc-if-set) + (let* + ( + (handle (assoc sym element-description)) + (defval (if (eq? handle #f) + "" + (scm->texi (cdr handle)) + )) + (propdoc (backend-property->texi sym)) + ) + + (if (and only-doc-if-set (eq? handle #f) ) + '("" . "") + (cons (car propdoc) (string-append (cdr propdoc) + "\nDefault value: " + defval))) )) - ) (define (document-interface where interface element-description) " @@ -44,10 +51,10 @@ (name (car interface)) (desc (cadr interface)) (props (caddr interface)) - (docfun (lambda (x) + (docfunc (lambda (x) (document-element-property x element-description (eq? where 'element)))) - (docs (map docfun props)) + (docs (map docfunc props)) ) (string-append @@ -133,7 +140,7 @@ (and (pair? x) (number? (car x)) (number? (cdr x)))) (define (ly-gulp-file x) "") - (define (ly-element? x) #f) + (define (ly-grob? x) #f) (define (ly-input-location? x) #f) (define (dir? x) #f) (define (moment? x) #f) @@ -142,6 +149,7 @@ (use-modules (ice-9 string-fun)) (define interface-file-str (string-append (ly-gulp-file "interface.scm") "\n(define ")) + (define (list-interface-names) (let* ((text interface-file-str) (r (make-regexp @@ -151,12 +159,17 @@ (l (separate-fields-discarding-char #\ ugh list))) (reverse (cdr (reverse l))))) + + + (eval (ly-gulp-file "interface.scm")) (define interface-description-alist (map (lambda (x) (cons (string->symbol x) (eval-string x))) (list-interface-names))) +(set! interface-description-alist (sort interface-description-alist aliststring all-backend-properties) stringtexi (string->symbol prop))) + ps)) + (texi (description-list->texi descs)) + ) + + (string-append + (node name) + (texi-section 1 name #f) + texi) + ) + ) + diff --git a/scm/backend-property.scm b/scm/backend-property.scm new file mode 100644 index 0000000000..8601635a43 --- /dev/null +++ b/scm/backend-property.scm @@ -0,0 +1,300 @@ +(define all-backend-properties '()) + +(define (elt-property-description symbol type? description) + (set-object-property! symbol 'backend-type? type?) + (set-object-property! symbol 'backend-doc description) + (set! all-backend-properties (cons symbol all-backend-properties)) + ) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + +(elt-property-description 'stems list? "list of stem objects, corresponding to the notes that the arpeggio has to be before.") +(elt-property-description 'merge-differently-dotted boolean? " Merge noteheads in collisions, even if they have a different number of dots. This normal notation for some types of polyphonic music. The value of this setting is used by @ref{note-collision-interface} ") +(elt-property-description 'note-width 'number? "unit for horizontal translation, measured in staff-space.") + +(elt-property-description 'style symbol? "a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. ") +(elt-property-description 'glyph symbol? "a string determining what style of glyph is typeset. Valid choices depend on the function that is reading this property. ") + + +(elt-property-description 'dot-count integer? "number of dots") +(elt-property-description 'font-style symbol? "a precooked set of font definitions, eg. finger volta timesig mark script large Large dynamic") +(elt-property-description 'font-series symbol? "partial font definition: medium, bold") +(elt-property-description 'font-shape symbol? "partial font definition: upright or italic") +(elt-property-description 'font-family symbol? "partial font definition: music roman braces dynamic math ...") +(elt-property-description 'font-name symbol? "partial font definition: base name of font file FIXME: should override other partials") +(elt-property-description 'font-point-size number? "partial font definition: exact font size in points FIXME: should override font-relative-size") +(elt-property-description 'font-relative-size number? "partial font definition: the relative size, 0 is style-sheet's normal size, -1 is smaller, +1 is bigger") +(elt-property-description 'text markup? " +Scheme markup text. It is defined as follows: + +@example + +TEXT : STRING | (MARKUP SENTENCE) +MARKUP: PROPERTY | ABBREV +SENTENCE: TEXT | SENTENCE TEXT +PROPERTY: (key . value) +ABBREV: rows lines roman music bold italic named super sub text, or any font-style + +@end example + +So, TEXT is either a string, or a list of which the CAR is a MARKUP. +MARKUP is either a CONS: an element property '(key . value) or a symbol: +a predefined abbreviation for a list of element properties. + + +The following abbreviations are currently defined: +@table @samp +@item rows +horizontal mode: set all text on one line (default) +@item lines + vertical mode: set every text on new line +@item roman + select roman font +@item music + select feta font +@item bold + select bold series +@item italic + select italic shape +@item named + lookup by character name +@item text + plain text lookup (by character value) +@item super + superscript +@item sub + subscript +@item any font-style + finger volta timesig mmrest mark script large Large dynamic +@end table +" ) + +(elt-property-description 'maximum-duration-for-spacing moment? "space as if a duration of this type is available in this measure.") +(elt-property-description 'arithmetic-basicspace number? "") +(elt-property-description 'staff-space number? "Amount of line leading relative to global staffspace") +(elt-property-description 'line-count integer? "Number of staff lines") +(elt-property-description 'elements list? " -- list of items.") +(elt-property-description 'collapse-height number? "") + +(elt-property-description 'bars list? "list of barline ptrs.") +(elt-property-description 'thickness number? "thickness, measured in stafflinethickness") +(elt-property-description 'height number? "in staffspace ") +(elt-property-description 'arch-height number? "") +(elt-property-description 'arch-angle number? "") +(elt-property-description 'arch-thick number? "") +(elt-property-description 'arch-width number? "") +(elt-property-description 'bracket-thick number? "") +(elt-property-description 'bracket-width number? "") +(elt-property-description 'dash-period number? "the length of one dash + white space") +(elt-property-description 'dash-length number? "the length of a dash") +(elt-property-description 'line-thickness number? "the thickness[stafflinethickness] of the line") +(elt-property-description 'edge-height pair? "a cons that specifies the heights of the vertical egdes '(LEFT-height . RIGHT-height)") +(elt-property-description 'edge-text pair? "a cons that specifies the texts to be set at the edges '(LEFT-text . RIGHT-text)") +(elt-property-description 'type string? "one of: line, dashed-line or dotted-line") ; SYMBOL!!? +(elt-property-description 'staffline-clearance number? "don't get closer than this to stafflines.") +(elt-property-description 'control-points list? "List of 4 offsets (number-pairs) controlling the tie shape") +(elt-property-description 'heads pair? "pair of element pointers, pointing to the two heads of the tie. ") +(elt-property-description 'details list? "alist of parameters for the curve shape") +(elt-property-description 'x-gap number? "horizontal gap between notehead and tie") +(elt-property-description 'direction dir? "up or down, left or right?") +(elt-property-description 'minimum-length number? "minimum length in staffspace") + +(elt-property-description 'arithmetic-multiplier number? "see arithmetic-basicspace") +(elt-property-description 'stem ly-grob? "pointer to the stem object.") +(elt-property-description 'beam-width number? "width of the tremolo sign") +(elt-property-description 'beam-thickness number? "thickness, measured in staffspace") +(elt-property-description 'beam-space-function procedure? "function returning space given multiplicity") +(elt-property-description 'beam-width number? "width of the tremolo sign") +(elt-property-description 'beam-thickness number? "thickness, measured in staffspace") +(elt-property-description 'beam-space-function procedure? "function returning space given multiplicity") +(elt-property-description 'horizontal-space number? "amount of space to add after a note (in staff-space)") +(elt-property-description 'items-worth-living list? "list of interesting items. If empty in a particular system, clear that system.") +(elt-property-description 'align number? "the alignment of the text, 0 is horizontal, 1 is vertical") +(elt-property-description 'lookup symbol? "lookup method: 'value for plain text, 'name for character-name") +(elt-property-description 'raise number? "height for text to be raised (a negative value lowers the text") +(elt-property-description 'kern number? "amount of extra white space to add before text. This is `relative'(?) to the current alignment.") +(elt-property-description 'magnify number? "the magnification factor. FIXME: doesn't work for feta fonts") +(elt-property-description 'minimum-distances list? "list of rods (ie. (OBJ . DIST) pairs)") +(elt-property-description 'maximum-rest-count integer? "kill off rests so we don't more than this number left.") +(elt-property-description 'minimum-distance number? "minimum distance between notes and rests.") +(elt-property-description 'elements list? "list of elements (NoteColumn, +generally) participating in the collision. The +@code{rest-collision} property in @code{elements} is set +to a pointer to the collision") +(elt-property-description 'ideal-distances list? "(OBJ . (DIST . STRENGTH)) pairs") +(elt-property-description 'script-priority number? "A sorting key that determines in what order a script is within a stack of scripts") +(elt-property-description 'dir-list list? "list of stem directions, needed for optical spacing correction.") +(elt-property-description 'columns list? "list of paper-columns") +(elt-property-description 'expand-limit integer? "maximum number of measures expanded in church rests") +(elt-property-description 'minimum-width number? "minimum-width of rest symbol, in staffspace") +(elt-property-description 'padding number? "padding between number and rest. Measured in staffspace.") +(elt-property-description 'column-space-strength number? "relative strength of space following breakable columns (eg. prefatory matter)") +(elt-property-description 'before-musical-spacing-factor number? + "space before musical columns (eg. taken by accidentals) get this much +stretched when they follow a musical column, in absence of grace +notes. 0.0 means no extra space (accidentals are ignored)") +(elt-property-description 'stem-spacing-correction number? "optical correction amount.") +(elt-property-description 'before-grace-spacing-factor number? " stretch space this much if there are grace notes before the column") +(elt-property-description 'when moment? "when does this column happen?") +(elt-property-description 'bounded-by-me list? "list of spanners that have this +column as start/begin point. Only columns that have elements or act as bounds are spaced.") +(elt-property-description 'shortest-playing-duration moment? "duration of the shortest playing in that column.") +(elt-property-description 'shortest-starter-duration moment? "duration of the shortest notes that starts exactly in this column.") +(elt-property-description 'contains-grace boolean? "Used to widen entries for grace notes.") +(elt-property-description 'extra-space number-pair? "pair of distances") +(elt-property-description 'stretch-distance number-pair? "pair of distances") + +(elt-property-description 'barsize-procedure procedure? "how to compute the size of a bar line") +(elt-property-description 'kern number? "space after a thick line") +(elt-property-description 'thin-kern number? "space after a hair-line") +(elt-property-description 'hair-thickness number? "thickness, measured in stafflinethickness") +(elt-property-description 'thick-thickness number? "thickness, measured in stafflinethickness") +(elt-property-description 'glyph string? "what kind barline? A concatenation of |, : and .") +(elt-property-description 'bar-size number? "") +(elt-property-description 'break-glyph-function procedure? "function taking glyph and break-direction, returning the glyph at a line break") +(elt-property-description 'grow-direction dir? "crescendo or decrescendo?") +(elt-property-description 'padding number? "horizontal padding. This is useful if a crescendo is set next to a text like `mf'") +(elt-property-description 'c0-position integer? "integer indicating the position of central C") +(elt-property-description 'old-accidentals list? "list of (pitch, accidental) pairs") +(elt-property-description 'new-accidentals list? "list of (pitch, accidental) pairs") + +(elt-property-description 'minimum-length number? "try to make the hyphens at least this long. Also works as a scaling parameter for the length") +(elt-property-description 'word-space number? "elongate left by this much (FIXME: cumbersome semantics)") +(elt-property-description 'right-trim-amount number? "") + +(elt-property-description 'pitches list? "list of musical-pitch") +(elt-property-description 'inversion list? " musical-pitch, optional") +(elt-property-description 'bass list? " musical-pitch, optional") +(elt-property-description 'fraction number-pair? "") +(elt-property-description 'break-align-symbol symbol? "the index in the spacing table (symbol) of the to be aligned item.") +(elt-property-description 'visibility-lambda procedure? "a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY)") +(elt-property-description 'breakable boolean? "boolean indicating if this is a breakable item (clef, barline, key sig, etc.)") +(elt-property-description 'minimum-space number-pair? "(cons LEFT RIGHT)") +(elt-property-description 'extra-space number-pair? "(cons LEFT RIGHT)") + +(elt-property-description 'stacking-dir dir? "stack contents of elements in which direction ?") +(elt-property-description 'align-dir dir? "Which side to align? -1: left side, 0: around center of width, 1: right side") +(elt-property-description 'threshold number-pair? "(cons MIN MAX), where MIN and MAX are dimensions in staffspace") +(elt-property-description 'alignment-done boolean? "boolean to administrate whether we've done the alignment already (to ensure that the process is done only once)") +(elt-property-description 'center-element ly-grob? "element which will be at the +center of the group after aligning (when using +Align_interface::center_on_element). ") +(elt-property-description 'elements list? "to be aligned elements ") +(elt-property-description 'axes list? "list of axis numbers. Should contain only one number.") + +(elt-property-description 'beams list? "list of beam ptrs.") +(elt-property-description 'columns list? " list of note-columns.") +(elt-property-description 'number-gap number? "") +(elt-property-description 'delta-y number? "amount of ascension") +(elt-property-description 'tuplet-bracket-visibility boolean-or-symbol? " +This controls the visibility of the tuplet bracket. +Setting it to false will prevent printing of the +bracket. Setting the property to #'if-no-beam will make it +print only if there is no beam associated with this tuplet bracket.") +(elt-property-description 'tuplet-number-visibility boolean-or-symbol? " +Like @code{tuplet-bracket-visibility}, but for the number.") +(elt-property-description 'parallel-beam boolean? "internal: true if there is a beam just as wide as the bracket ") +(elt-property-description 'thick number? "thickness, in stafflinethickness") +(elt-property-description 'dot ly-grob? "reference to Dots object.") +(elt-property-description 'stem ly-grob? "pointer to Stem object") +(elt-property-description 'duration-log integer? "2-log of the notehead duration") +(elt-property-description 'between-system-string string? "string + to dump between two systems. Useful for forcing pagebreaks") +(elt-property-description 'spacing-procedure procedure? "procedure taking +graphical element as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored") +(elt-property-description 'before-line-breaking-callback procedure? + "Procedure taking graphical element as argument. +This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored") +(elt-property-description 'after-line-breaking-callback procedure? + "Procedure taking graphical element as argument. +This procedure is called (using dependency resolution) after line breaking. Return value is ignored") +(elt-property-description 'all-elements list? "list of all score elements in this line. Needed for protecting elements from GC.") +(elt-property-description 'columns list? "list of all paper columns") +(elt-property-description 'left-padding number? "space left of accs") +(elt-property-description 'right-padding number? "space right of accs") +(elt-property-description 'side-support list? "the support, a list of score elements") +(elt-property-description 'direction-source ly-grob? "in case side-relative-direction is set, which element to get the direction from ") +(elt-property-description 'side-relative-direction dir? "if set: get the direction from a different object, and multiply by this.") +(elt-property-description 'minimum-space number? "minimum distance that the victim should move (after padding)") +(elt-property-description 'padding number? "add this much extra space between victim and support") +(elt-property-description 'self-alignment-X number? "real number: -1 = +left aligned, 0 = center, 1 right-aligned in X direction. + + Set to an element pointer, if you want that element to be the center. +In this case, the center element should have this object as a +reference point. +") +(elt-property-description 'self-alignment-Y number? "like self-alignment-X but for Y axis") + +(elt-property-description 'de-uglify-parameters list? "list of 3 real constants. They define the valid areas for the middle control points. Used in de_uglyfy. They are a bit empirical.") +(elt-property-description 'details list? "alist containing contaning a few magic constants.") +(elt-property-description 'attachment pair? "cons of symbols, '(LEFT-TYPE . RIGHT-TYPE), where both types may be alongside-stem, stem, head or loose-end") +(elt-property-description 'attachment-offset pair? "cons of offsets, '(LEFT-offset . RIGHT-offset). This offset is added to the attachments to prevent ugly slurs.") +(elt-property-description 'beautiful number? "number that dictates when a slur should be de-uglyfied. It correlates with the enclosed area between noteheads and slurs. A value of 0.1 yields only undisturbed slurs, a value of 5 will tolerate quite high blown slurs.") +(elt-property-description 'y-free number? "minimal vertical gap between slur and noteheads or stems") +(elt-property-description 'control-points list? "[internal] control points of bezier curve") +(elt-property-description 'extremity-rules list? "an alist (procedure slur dir) -> attachment to determine the attachment (see above). If procedure returns #t, attachment is used. Otherwise, the next procedure is tried.") +(elt-property-description 'extremity-offset-alist list? "an alist (attachment stem-dir*dir slur-dir*dir) -> offset. The offset adds to the centre of the notehead, or stem.") +(elt-property-description 'dashed number? "[FIXME: use dash-period/dash length; see text-spanner] number representing the length of the dashes.") +(elt-property-description 'non-default boolean? "not set because of existence of a bar?") +(elt-property-description 'full-size-change boolean? "if set, don't make a change clef smaller.") +(elt-property-description 'glyph string? "a string determining what glyph is typeset") +(elt-property-description 'axes list? "list of axis (number) in which this group works") +(elt-property-description 'horizontal-shift integer? "integer that identifies ranking of note-column for horizontal shifting. This is used by @ref{note-collision-interface}") +(elt-property-description 'force-hshift number? "amount of collision_note_width that overides automatic collision settings. This is used by @ref{note-collision-interface}") +(elt-property-description 'beamed-lengths list? "list of stem lengths given beam multiplicity ") +(elt-property-description 'beamed-minimum-lengths list? "list of minimum stem lengths given beam multiplicity") +(elt-property-description 'stem-centered boolean? "Center stems on note heads. Useful for mensural notation") +(elt-property-description 'lengths list? "Stem length given multiplicity of flag") +(elt-property-description 'beam ly-grob? "pointer to the beam, if applicable") +(elt-property-description 'stem-shorten list? "shorten stems in forced directions given flag multiplicity") +(elt-property-description 'duration-log integer? "log of the duration, ie. 0=whole note, 1 = half note, etc.") +(elt-property-description 'beaming number-pair? "number of beams extending to left and right") +(elt-property-description 'default-neutral-direction dir? "Where to go if we're in the middle of the staff") +(elt-property-description 'stem-end-position number? "Where does the stem end (the end is opposite to the support-head") +(elt-property-description 'support-head ly-grob? "the note head at +one end of the stem") +(elt-property-description 'heads list? "list of note heads") +(elt-property-description 'stem-length number? "length of stem") +(elt-property-description 'flag-style string? "") ; symbol!? +(elt-property-description 'dir-forced boolean? "set if direction has been forced; read by Beam.") + +(elt-property-description 'y-position number? "position of left edge") +(elt-property-description 'flag-width-function procedure? "") +(elt-property-description 'damping integer? "amount of beam slope damping should beam slope be damped? 0: no, 1: yes, 100000: horizontal beams ") +(elt-property-description 'default-neutral-direction dir? "which +direction to choose if we're in the middle of the staff ") +(elt-property-description 'space-function procedure? "function of type multiplicity -> real (in staffspace)") +(elt-property-description 'beamed-stem-shorten number? "shorten beamed stems in forced direction") +(elt-property-description 'height-quants procedure? "function of type (beam staff-line-thickness) -> list of quants. Default value: default-beam-dy-quants. +") +(elt-property-description 'vertical-position-quant-function procedure? " +function of type (beam multiplicity dy staff-line-thickness) -> real. Default value: default-beam-y-quants, also available: beam-traditional-y-quants. +") +(elt-property-description 'dir-function procedure? "function of type (count total)->direction. Default value: beam-dir-majority, also available: beam-dir-mean, beam-dir-median.") +(elt-property-description 'damping number? "damping factor.") +(elt-property-description 'outer-stem-length-limit number? "catch +suspect beam slopes, set slope to zero if outer stem is lengthened +more than this (in staffspace)") +(elt-property-description 'slope-limit number? "set slope to zero if slope is running away steeper than this.") +(elt-property-description 'X-offset-callbacks list? "list of functions, each taking an element and axis argument. The function determine the position relative to this element's parent. The last one in the list is called first") +(elt-property-description 'Y-offset-callbacks list? "see @code{X-offset-callbacks}") +(elt-property-description 'X-extent-callback procedure? "procedure taking an element and axis argument, returning a number-pair. The return value is the extent of the element.") +(elt-property-description 'Y-extent-callback procedure? "see @code{X-extent-callback}") +(elt-property-description 'font-relative-size integer? "") +(elt-property-description 'extra-offset number-pair? "pair of reals (a cons) forcing an extra offset before outputting") +(elt-property-description 'interfaces list? "list of symbols indicating the interfaces supported by this object. Is initialized from the @code{meta} field.") +(elt-property-description 'dependencies list? "list of score-element pointers that indicate who to compute first for certain global passes") +(elt-property-description 'no-spacing-rods boolean? "read from elements: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM)") +(elt-property-description 'extra-extent-X number-pair? "enlarge in X dimension by this much, measured in staff space") +(elt-property-description 'extra-extent-Y number-pair? "see @code{extra-extent-Y}") +(elt-property-description 'minimum-extent-X number-pair? "minimum size in X dimension, measured in staff space") +(elt-property-description 'minimum-extent-Y number-pair? "see @code{minimum-extent-Y}") +(elt-property-description 'origin ly-input-location? "location in input file of the definition") +(elt-property-description 'transparent boolean? "This is almost the +same as setting molecule-callback to #f, but this retains the +dimensions of this element, which means that you can erase elements +individually. ") +(elt-property-description 'molecule-callback procedure? "Function taking graphical element as argument, returning a Scheme encoded Molecule.") + diff --git a/scm/beam.scm b/scm/beam.scm index ac9c1ffc80..9e7005e31f 100644 --- a/scm/beam.scm +++ b/scm/beam.scm @@ -1,4 +1,3 @@ - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; BEAMS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/scm/chord-names.scm b/scm/chord-names.scm deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/scm/documentation-lib.scm b/scm/documentation-lib.scm index e94a23de9a..2d24e64165 100644 --- a/scm/documentation-lib.scm +++ b/scm/documentation-lib.scm @@ -13,6 +13,11 @@ (uniqued-alist (cdr alist) (cons (car alist) acc) )))) + +(define (aliststring (car x)) + (symbol->string (car y)))) + (define (processing name) (display (string-append "\nProcessing " name " ... ") (current-error-port))) diff --git a/scm/element-descriptions.scm b/scm/element-descriptions.scm index e2ffcfcbcf..14b73fd75c 100644 --- a/scm/element-descriptions.scm +++ b/scm/element-descriptions.scm @@ -185,7 +185,7 @@ (height . 0.4) (minimum-length . 0.5) (molecule-callback . ,Hyphen_spanner::brew_molecule) - (Y-extent-callback . ,Score_element::point_dimension_callback) + (Y-extent-callback . ,Grob::point_dimension_callback) (meta . ,(element-description "LyricHyphen" lyric-hyphen-interface )) )) @@ -227,7 +227,7 @@ (molecule-callback . ,Lyric_extender::brew_molecule) (height . 0.8) ; stafflinethickness; (right-trim-amount . 0.5) - (Y-extent-callback . ,Score_element::point_dimension_callback) + (Y-extent-callback . ,Grob::point_dimension_callback) (meta . ,(element-description "LyricExtender" lyric-extender-interface)) )) @@ -322,11 +322,13 @@ (Rest . ( (after-line-breaking-callback . ,Rest::after_line_breaking) + (X-extent-callback . ,Rest::extent_callback) + (Y-extent-callback . ,Rest::extent_callback) (molecule-callback . ,Rest::brew_molecule) (minimum-beam-collision-distance . 1.5) (meta . ,(element-description "Rest" rhythmic-head-interface - rest-interface )) + rest-interface)) )) (RestCollision . ( (minimum-distance . 0.75) @@ -472,7 +474,7 @@ ;; sheets than 20 ;;(font-point-size . 20) ;;(font-relative-size . #f) - (meta . ,(element-description "SystemStartDelimiter" system-start-delimiter font-interface)) + (meta . ,(element-description "SystemStartDelimiter" system-start-delimiter-interface font-interface)) )) (TextScript . ( diff --git a/scm/engraver-documentation-lib.scm b/scm/engraver-documentation-lib.scm index b98483a04e..aaddcb2ee7 100644 --- a/scm/engraver-documentation-lib.scm +++ b/scm/engraver-documentation-lib.scm @@ -10,12 +10,12 @@ (eval-string (ly-gulp-file "translator-description.scm")) ;; alist of translater descriptions -(define (document-translator-property prop-desc) +(define (document-translator-property sym) (cons (string-append - "@code{" (car prop-desc) "} " - "(" (type-name (cadr prop-desc)) "):") - (caddr prop-desc))) + "@code{" (symbol->string sym) "} " + "(" (type-name (object-property sym 'translation-type?)) "):") + (object-property sym 'translation-doc))) ;; First level Engraver description and ;; second level Context description @@ -131,8 +131,11 @@ (texi-section 2 (context-name name) #f) doc))) + (define (document-paper name) - (let* ((paper-alist (My_lily_parser::paper_description)) + (let* ((paper-alist + (sort (My_lily_parser::paper_description) + (lambda (x y) (stringstring all-translation-properties) stringsymbol ps)) + (propdescs (map document-translator-property sortedsyms)) + (texi (description-list->texi propdescs)) + ) + + (string-append + (node name) + (texi-section 1 name #f) + texi + ))) diff --git a/scm/generate-documentation.scm b/scm/generate-documentation.scm index 22253f66e4..6ad3c5246a 100644 --- a/scm/generate-documentation.scm +++ b/scm/generate-documentation.scm @@ -32,8 +32,10 @@ (let* ((doc (string-append (document-paper "LilyPond interpretation contexts") (document-all-engravers "LilyPond engravers") + (document-all-engraver-properties "LilyPond context properties") (document-all-elements "LilyPond backend") (document-all-interfaces "LilyPond interfaces") + (document-all-backend-properties "LilyPond backend properties") ) ) (name "lilypond-internals") @@ -49,8 +51,12 @@ "LilyPond internals" name "(lilypond.info)" '(("LilyPond interpretation contexts" . "Hierarchy and grouping of Engravers") ("LilyPond engravers" . "Engravers create Elements") + ("LilyPond context properties" . "context properties") ("LilyPond backend" . "Detailed description of all Elements") - ("LilyPond interfaces" . "Element Interfaces"))) + ("LilyPond interfaces" . "Element Interfaces") + ("LilyPond backend properties" . "Element properties"))) + + doc "\n@bye") diff --git a/scm/interface.scm b/scm/interface.scm index ddc17acb9a..b1728e7479 100644 --- a/scm/interface.scm +++ b/scm/interface.scm @@ -1,4 +1,5 @@ + ; should include default value? @@ -8,9 +9,6 @@ ;;; and `objects'. -(define (elt-property-description symbol type? description) - (list symbol type? description)) - (define (lily-interface symbol description props) (list symbol description @@ -18,20 +16,12 @@ ) ) -(define (boolean-or-symbol? x) (or boolean? x) (or symbol? x)) - -(define (uniqued-alist alist acc) - (if (null? alist) acc - (if (assoc (caar alist) acc) - (uniqued-alist (cdr alist) acc) - (uniqued-alist (cdr alist) (cons (car alist) acc) - )))) (define (element-description name . interfaces) (let* ((ifs (cons general-element-interface interfaces)) (props (map caddr ifs)) - (prop-typep-pairs (map (lambda (x) (cons (car x) (cadr x))) - (apply append props))) +; (prop-typep-pairs (map (lambda (x) (cons (car x) (cadr x))) +; (apply append props))) (syms (map car ifs)) ) (list (cons 'separator "\n\n\n") ;easy printing. @@ -40,81 +30,64 @@ (cons 'interface-descriptions ifs) ; (cons 'interface-descriptions (cadr merged)) ;; description of the element itself? - (cons 'properties prop-typep-pairs) +; (cons 'properties prop-typep-pairs) ))) - (define general-element-interface (lily-interface 'general-element-interface "All elements support this" - (list - (elt-property-description 'X-offset-callbacks list? "list of functions, each taking an element and axis argument. The function determine the position relative to this element's parent. The last one in the list is called first") - (elt-property-description 'Y-offset-callbacks list? "see @code{X-offset-callbacks}") - (elt-property-description 'X-extent-callback procedure? "procedure taking an element and axis argument, returning a number-pair. The return value is the extent of the element.") - (elt-property-description 'Y-extent-callback procedure? "see @code{X-extent-callback}") - (elt-property-description 'font-relative-size integer? "") - (elt-property-description 'extra-offset number-pair? "pair of reals (a cons) forcing an extra offset before outputting") - (elt-property-description 'interfaces list? "list of symbols indicating the interfaces supported by this object. Is initialized from the @code{meta} field.") - (elt-property-description 'dependencies list? "list of score-element pointers that indicate who to compute first for certain global passes") - (elt-property-description 'no-spacing-rods boolean? "read from elements: boolean that makes Separation_item ignore this item (MOVE ME TO ITEM)") - (elt-property-description 'extra-extent-X number-pair? "enlarge in X dimension by this much, measured in staff space") - (elt-property-description 'extra-extent-Y number-pair? "see @code{extra-extent-Y}") - (elt-property-description 'minimum-extent-X number-pair? "minimum size in X dimension, measured in staff space") - (elt-property-description 'minimum-extent-Y number-pair? "see @code{minimum-extent-Y}") - (elt-property-description 'origin ly-input-location? "location in input file of the definition") - (elt-property-description 'transparent boolean? "This is almost the -same as setting molecule-callback to #f, but this retains the -dimensions of this element, which means that you can erase elements -individually. ") - (elt-property-description 'molecule-callback procedure? "Function taking graphical element as argument, returning a Scheme encoded Molecule - -This function can be called more than once (for instance once for -computing dimensions, and once for computing the output). Therefore, -this function should have no side-effects on its argument. -Caching of computed values is permissible, and generally useful, though. - -") + '( + X-offset-callbacks + Y-offset-callbacks + X-extent-callback + Y-extent-callback + font-relative-size + extra-offset + interfaces + dependencies + no-spacing-rods + extra-extent-X + extra-extent-Y + minimum-extent-X + minimum-extent-Y + origin + transparent )) ) (define beam-interface (lily-interface 'beam-interface - "A beam. " - (list - (elt-property-description 'y-position number? "position of left edge") - (elt-property-description 'height number? "dy") - (elt-property-description 'flag-width-function procedure? "") - (elt-property-description 'damping integer? "amount of beam slope damping should beam slope be damped? 0: no, 1: yes, 100000: horizontal beams ") - (elt-property-description 'default-neutral-direction dir? "which -direction to choose if we're in the middle of the staff ") - (elt-property-description 'thickness number? "weight of beams, in staffspace") - (elt-property-description 'space-function procedure? "function of type multiplicity -> real (in staffspace)") - (elt-property-description 'beamed-stem-shorten number? "shorten beamed stems in forced direction") - (elt-property-description 'height-quants procedure? "function of type (beam staff-line-thickness) -> list of quants. Default value: default-beam-dy-quants. -") - (elt-property-description 'vertical-position-quant-function procedure? " -function of type (beam multiplicity dy staff-line-thickness) -> real. Default value: default-beam-y-quants, also available: beam-traditional-y-quants. -") - (elt-property-description 'dir-function procedure? "function of type (count total)->direction. Default value: beam-dir-majority, also available: beam-dir-mean, beam-dir-median.") - (elt-property-description 'damping number? "damping factor.") - (elt-property-description 'outer-stem-length-limit number? "catch -suspect beam slopes, set slope to zero if outer stem is lengthened -more than this (in staffspace)") - (elt-property-description 'slope-limit number? "set slope to zero if slope is running away steeper than this.") + "A beam. + +#'thickness= weight of beams, in staffspace + " + '( + y-position + height + flag-width-function + damping + default-neutral-direction + thickness + space-function + beamed-stem-shorten + height-quants + vertical-position-quant-function + damping + outer-stem-length-limit + slope-limit ) )) - (define clef-interface (lily-interface 'clef-interface "A clef sign" - (list - (elt-property-description 'non-default boolean? "not set because of existence of a bar?") - (elt-property-description 'full-size-change boolean? "if set, don't make a change clef smaller.") - (elt-property-description 'glyph string? "a string determining what glyph is typeset") + '( + non-default + full-size-change + glyph )) ) @@ -122,17 +95,17 @@ more than this (in staffspace)") (lily-interface 'axis-group-interface "a group of coupled elements" - (list - (elt-property-description 'axes list? "list of axis (number) in which this group works") + '( + axes ))) (define note-column-interface (lily-interface 'note-column-interface "Stem and noteheads combined" - (list - (elt-property-description 'horizontal-shift integer? "integer that identifies ranking of note-column for horizontal shifting. This is used by @ref{note-collision-interface}") - (elt-property-description 'force-hshift number? "amount of collision_note_width that overides automatic collision settings. This is used by @ref{note-collision-interface}") + '( + horizontal-shift + force-hshift )) ) @@ -140,26 +113,25 @@ more than this (in staffspace)") (lily-interface 'stem-interface "A stem" - (list - (elt-property-description 'thickness number? "thickness, measured in stafflinethickness") - (elt-property-description 'beamed-lengths list? "list of stem lengths given beam multiplicity ") - (elt-property-description 'beamed-minimum-lengths list? "list of minimum stem lengths given beam multiplicity") - (elt-property-description 'stem-centered boolean? "Center stems on note heads. Useful for mensural notation") - (elt-property-description 'lengths list? "Stem length given multiplicity of flag") - (elt-property-description 'beam ly-element? "pointer to the beam, if applicable") - (elt-property-description 'stem-shorten list? "shorten stems in forced directions given flag multiplicity") - (elt-property-description 'duration-log integer? "log of the duration, ie. 0=whole note, 1 = half note, etc.") - (elt-property-description 'beaming number-pair? "number of beams extending to left and right") - (elt-property-description 'default-neutral-direction dir? "Where to go if we're in the middle of the staff") - (elt-property-description 'stem-end-position number? "Where does the stem end (the end is opposite to the support-head") - (elt-property-description 'support-head ly-element? "the note head at -one end of the stem") - (elt-property-description 'heads list? "list of note heads") - (elt-property-description 'direction dir? "up or down") - (elt-property-description 'stem-length number? "length of stem") - (elt-property-description 'style string? "") ; symbol!? - (elt-property-description 'flag-style string? "") ; symbol!? - (elt-property-description 'dir-forced boolean? "set if direction has been forced; read by Beam.") + '( + thickness + beamed-lengths + beamed-minimum-lengths + stem-centered + lengths + beam + stem-shorten + duration-log + beaming + default-neutral-direction + stem-end-position + support-head + heads + direction + stem-length + style + flag-style + dir-forced ))) @@ -167,19 +139,19 @@ one end of the stem") (lily-interface 'slur-interface "A slur" - (list - (elt-property-description 'de-uglify-parameters list? "list of 3 real constants. They define the valid areas for the middle control points. Used in de_uglyfy. They are a bit empirical.") - (elt-property-description 'details list? "alist containing contaning a few magic constants.") - (elt-property-description 'attachment pair? "cons of symbols, '(LEFT-TYPE . RIGHT-TYPE), where both types may be alongside-stem, stem, head or loose-end") - (elt-property-description 'direction dir? "up or down?") - (elt-property-description 'attachment-offset pair? "cons of offsets, '(LEFT-offset . RIGHT-offset). This offset is added to the attachments to prevent ugly slurs.") - (elt-property-description 'beautiful number? "number that dictates when a slur should be de-uglyfied. It correlates with the enclosed area between noteheads and slurs. A value of 0.1 yields only undisturbed slurs, a value of 5 will tolerate quite high blown slurs.") - (elt-property-description 'y-free number? "minimal vertical gap between slur and noteheads or stems") - (elt-property-description 'control-points list? "[internal] control points of bezier curve") - (elt-property-description 'extremity-rules list? "an alist (procedure slur dir) -> attachment to determine the attachment (see above). If procedure returns #t, attachment is used. Otherwise, the next procedure is tried.") - (elt-property-description 'extremity-offset-alist list? "an alist (attachment stem-dir*dir slur-dir*dir) -> offset. The offset adds to the centre of the notehead, or stem.") - (elt-property-description 'thickness list? "The thickness[stafflinethickness] of slur in the centre.") - (elt-property-description 'dashed number? "[FIXME: use dash-period/dash length; see text-spanner] number representing the length of the dashes.") + '( + de-uglify-parameters + details + attachment + direction + attachment-offset + beautiful + y-free + control-points + extremity-rules + extremity-offset-alist + thickness + dashed ) ) @@ -188,22 +160,18 @@ one end of the stem") (define side-position-interface (lily-interface 'side-position-interface - "Position a victim object (this one) next to other objects (the support)." - (list - (elt-property-description 'side-support list? "the support, a list of score elements") - (elt-property-description 'direction-source ly-element? "in case side-relative-direction is set, which element to get the direction from ") - (elt-property-description 'direction dir? "where to put the victim object (left or right?)") - (elt-property-description 'side-relative-direction dir? "if set: get the direction from a different object, and multiply by this.") - (elt-property-description 'minimum-space number? "minimum distance that the victim should move (after padding)") - (elt-property-description 'padding number? "add this much extra space between victim and support") - (elt-property-description 'self-alignment-X number? "real number: -1 = -left aligned, 0 = center, 1 right-aligned in X direction. - - Set to an element pointer, if you want that element to be the center. -In this case, the center element should have this object as a -reference point. -") - (elt-property-description 'self-alignment-Y number? "like self-alignment-X but for Y axis") + "Position a victim object (this one) next to other objects (the support). +#'direction = where to put the victim object (left or right?) +" + '( + side-support + direction-source + direction + side-relative-direction + minimum-space + padding + self-alignment-X + self-alignment-Y ) )) @@ -212,9 +180,9 @@ reference point. (lily-interface 'accidentals-interface "Accidentals" - (list - (elt-property-description 'left-padding number? "space left of accs") - (elt-property-description 'right-padding number? "space right of accs") + '( + left-padding + right-padding ) )) @@ -226,29 +194,23 @@ reference point. The columns of a score that form one line. The toplevel element. Any element has a Line_of_score as both X and Y reference point. The Paper_score contains one element of this type. Control enters the -Score_element dependency calculation from this single Line_of_score +Grob dependency calculation from this single Line_of_score object." - (list - (elt-property-description 'between-system-string string? "string - to dump between two systems. Useful for forcing pagebreaks") - (elt-property-description 'spacing-procedure procedure? "procedure taking -graphical element as argument. This is called after before-line-breaking-callback, but before the actual line breaking itself. Return value is ignored") - (elt-property-description 'before-line-breaking-callback procedure? - "Procedure taking graphical element as argument. -This procedure is called (using dependency resolution) before line breaking, but after generating discretionary items. Return value is ignored") - (elt-property-description 'after-line-breaking-callback procedure? - "Procedure taking graphical element as argument. -This procedure is called (using dependency resolution) after line breaking. Return value is ignored") - (elt-property-description 'all-elements list? "list of all score elements in this line. Needed for protecting elements from GC.") - (elt-property-description 'columns list? "list of all paper columns") + '( + between-system-string + spacing-procedure + before-line-breaking-callback + after-line-breaking-callback + all-elements + columns ))) (define note-head-interface (lily-interface 'note-head-interface "Note head" - (list - (elt-property-description 'style symbol? "symbol that sets note head style") + '( + style ) )) @@ -256,8 +218,8 @@ This procedure is called (using dependency resolution) after line breaking. Retu (lily-interface 'note-name-interface "Note name" - (list - (elt-property-description 'style symbol? "symbol that sets note name style") + '( + style ) )) @@ -266,37 +228,31 @@ This procedure is called (using dependency resolution) after line breaking. Retu (lily-interface 'rhythmic-head-interface "Note head or rest" - (list - (elt-property-description 'dot ly-element? "reference to Dots object.") - (elt-property-description 'stem ly-element? "pointer to Stem object") - (elt-property-description 'duration-log integer? "2-log of the notehead duration") + '( + dot + stem + duration-log ))) (define rest-interface (lily-interface 'rest-interface "a rest" - (list - (elt-property-description 'style string? "string specifying glyph style")))) + '(style ))) (define tuplet-bracket-interface (lily-interface 'tuplet-bracket-interface "A bracket with a number in the middle, used for tuplets." - (list - (elt-property-description 'beams list? "list of beam ptrs.") - (elt-property-description 'columns list? " list of note-columns.") - (elt-property-description 'number-gap number? "") - (elt-property-description 'delta-y number? "amount of ascension") - (elt-property-description 'tuplet-bracket-visibility boolean-or-symbol? " -This controls the visibility of the tuplet bracket. -Setting it to false will prevent printing of the -bracket. Setting the property to #'if-no-beam will make it -print only if there is no beam associated with this tuplet bracket.") - (elt-property-description 'tuplet-number-visibility boolean-or-symbol? " -Like @code{tuplet-bracket-visibility}, but for the number.") - (elt-property-description 'parallel-beam boolean? "internal: true if there is a beam just as wide as the bracket ") - (elt-property-description 'thick number? "thickness, in stafflinethickness") + '( + beams + columns + number-gap + delta-y + tuplet-bracket-visibility + tuplet-number-visibility + parallel-beam + thick ) )) @@ -305,92 +261,65 @@ Like @code{tuplet-bracket-visibility}, but for the number.") (lily-interface 'align-interface " Order elements top to bottom/left to right/right to left etc." - (list - (elt-property-description 'stacking-dir dir? "stack contents of elements in which direction ?") - (elt-property-description 'align-dir dir? "Which side to align? -1: left side, 0: around center of width, 1: right side") - (elt-property-description 'threshold number-pair? "(cons MIN MAX), where MIN and MAX are dimensions in staffspace") - (elt-property-description 'alignment-done boolean? "boolean to administrate whether we've done the alignment already (to ensure that the process is done only once)") - (elt-property-description 'center-element ly-element? "element which will be at the -center of the group after aligning (when using -Align_interface::center_on_element). ") - (elt-property-description 'elements list? "to be aligned elements ") - (elt-property-description 'axes list? "list of axis numbers. Should contain only one number.") + '( + stacking-dir + align-dir + threshold + alignment-done + center-element + elements + axes ))) (define aligned-interface (lily-interface 'aligned-interface "read by align-interface" - (list - (elt-property-description 'minimum-space number-pair? "(cons LEFT RIGHT)") - (elt-property-description 'extra-space number-pair? "(cons LEFT RIGHT)") + '( + minimum-space + extra-space ))) (define break-aligned-interface (lily-interface 'break-aligned-interface "Items that are aligned in prefatory matter" - (list - (elt-property-description 'break-align-symbol symbol? "the index in the spacing table (symbol) of the to be aligned item.") - (elt-property-description 'visibility-lambda procedure? "a function that takes the break direction and returns a cons of booleans containing (TRANSPARENT . EMPTY)") - (elt-property-description 'breakable boolean? "boolean indicating if this is a breakable item (clef, barline, key sig, etc.)") + '( + break-align-symbol + visibility-lambda + breakable ))) (define chord-name-interface (lily-interface 'chord-name-interface "generate a chord name" - (list - (elt-property-description 'pitches list? "list of musical-pitch") - (elt-property-description 'inversion list? " musical-pitch, optional") - (elt-property-description 'bass list? " musical-pitch, optional") - ))) + '( pitches inversion bass))) (define time-signature-interface (lily-interface 'time-signature-interface "A time signature, in different styles" - (list - (elt-property-description 'fraction number-pair? "") - (elt-property-description 'style string? "") - ))) + '( fraction style ))) (define bar-line-interface (lily-interface 'bar-line-interface "Bar line" - (list - (elt-property-description 'barsize-procedure procedure? "how to compute the size of a bar line") - (elt-property-description 'kern number? "space after a thick line") - (elt-property-description 'thin-kern number? "space after a hair-line") - (elt-property-description 'hair-thickness number? "thickness, measured in stafflinethickness") - (elt-property-description 'thick-thickness number? "thickness, measured in stafflinethickness") - (elt-property-description 'glyph string? "what kind barline? A concatenation of |, : and .") - (elt-property-description 'bar-size number? "") - (elt-property-description 'break-glyph-function procedure? "function taking glyph and break-direction, returning the glyph at a line break") - ))) - - - + '( barsize-procedure kern thin-kern hair-thickness thick-thickness glyph bar-size break-glyph-function ))) (define hairpin-interface (lily-interface 'hairpin-interface "hairpin crescendo" - (list - (elt-property-description 'grow-direction dir? "crescendo or decrescendo?") - (elt-property-description 'thickness number? "thickness, measured in stafflinethickness") - (elt-property-description 'height number? "height, measured in staffspace.") - (elt-property-description 'padding number? "horizontal padding. This is useful if a crescendo is set next to a text like `mf'") - ))) + '( grow-direction thickness height padding ) + )) (define arpeggio-interface (lily-interface 'arpeggio-interface "Functions and settings for drawing an arpeggio symbol (a wavy line left to noteheads." - (list - (elt-property-description 'stems list? "list of stem objects, corresponding to the notes that the arpeggio has to be before.") - ) + '(stems) ) ) @@ -400,15 +329,8 @@ Align_interface::center_on_element). ") "An object that handles collisions between notes with different stem directions and horizontal shifts. Most of the interesting properties are to be set in @ref{note-column-interface}" - (list - (elt-property-description 'merge-differently-dotted boolean? " -Merge noteheads in collisions, even if they have a different number of -dots. This normal notation for some types of polyphonic music. The -value of this setting is used by @ref{note-collision-interface} - -") - (elt-property-description 'note-width 'number? "unit for horizontal translation, measured in staff-space.") - ) ) ) + '(merge-differently-dotted note-width) + )) (define custos-interface @@ -427,104 +349,45 @@ value of this setting is used by @ref{note-collision-interface} beginning of the 20th century. [TODO: add to glossary]" - - (list - (elt-property-description 'style string? "a string determining what glyph is -typeset. Current choices are mensural, -hufnagel, vaticana and medicaea [TODO: should use symbol] ") - )) + + '(style) +) ) + (define dot-interface (lily-interface 'dots-interface "The dots to go with a notehead/rest. A separate interface, since they - are a party in collision resolution." - (list - (elt-property-description 'direction dir? "Direction to handle staff-line collisions in.") - (elt-property-description 'dot-count integer? "number of dots") - ))) + are a party in collision resolution. + #'direction is the Direction to handle staff-line collisions in." + '(direction dot-count) + + )) (define font-interface (lily-interface 'font-interface "Any symbol that is typeset through fixed sets of glyphs (ie. fonts)" - (list - (elt-property-description 'font-style symbol? "a precooked set of font definitions, eg. finger volta timesig mark script large Large dynamic") - (elt-property-description 'font-series symbol? "partial font definition: medium, bold") - (elt-property-description 'font-shape symbol? "partial font definition: upright or italic") - (elt-property-description 'font-family symbol? "partial font definition: music roman braces dynamic math ...") - (elt-property-description 'font-name symbol? "partial font definition: base name of font file FIXME: should override other partials") - (elt-property-description 'font-point-size number? "partial font definition: exact font size in points FIXME: should override font-relative-size") - (elt-property-description 'font-relative-size number? "partial font definition: the relative size, 0 is style-sheet's normal size, -1 is smaller, +1 is bigger") - ))) + '(font-style font-series font-shape font-family font-name +font-point-size font-relative-size) + )) (define text-interface (lily-interface 'text-interface "A scheme markup text" - (list - (elt-property-description 'text (lambda (x) (or (string? x) (list? x))) " -Scheme markup text. It is defined as follows: - -@example - -TEXT : STRING | (MARKUP SENTENCE) -MARKUP: PROPERTY | ABBREV -SENTENCE: TEXT | SENTENCE TEXT -PROPERTY: (key . value) -ABBREV: rows lines roman music bold italic named super sub text, or any font-style - -@end example - -So, TEXT is either a string, or a list of which the CAR is a MARKUP. -MARKUP is either a CONS: an element property '(key . value) or a symbol: -a predefined abbreviation for a list of element properties. - - -The following abbreviations are currently defined: -@table @samp -@item rows -horizontal mode: set all text on one line (default) -@item lines - vertical mode: set every text on new line -@item roman - select roman font -@item music - select feta font -@item bold - select bold series -@item italic - select italic shape -@item named - lookup by character name -@item text - plain text lookup (by character value) -@item super - superscript -@item sub - subscript -@item any font-style - finger volta timesig mmrest mark script large Large dynamic -@end table -" ) - ;; Should move this somewhere else? - (elt-property-description 'align number? "the alignment of the text, 0 is horizontal, 1 is vertical") - (elt-property-description 'lookup symbol? "lookup method: 'value for plain text, 'name for character-name") - (elt-property-description 'raise number? "height for text to be raised (a negative value lowers the text") - (elt-property-description 'kern number? "amount of extra white space to add before text. This is `relative'(?) to the current alignment.") - (elt-property-description 'magnify number? "the magnification factor. FIXME: doesn't work for feta fonts") - ))) + '(text align lookup raise kern magnify))) (define dot-column-interface (lily-interface 'dot-column-interface "Interface that groups dots so they form a column" - (list - ))) + '( ) + )) (define dynamic-interface (lily-interface @@ -558,8 +421,8 @@ horizontal mode: set all text on one line (default) (lily-interface 'grace-alignment-interface "put grace notes in line" - (list - (elt-property-description 'horizontal-space number? "amount of space to add after a note (in staff-space)") + '( + horizontal-space ) )) @@ -570,8 +433,8 @@ horizontal mode: set all text on one line (default) we don't contain any interesting items after linebreaking, then gracefully commit suicide. Objective: don't disgrace Lily by typesetting empty lines in orchestral scores." - (list - (elt-property-description 'items-worth-living list? "list of interesting items. If empty in a particular system, clear that system.") + '( + items-worth-living ))) @@ -582,23 +445,23 @@ horizontal mode: set all text on one line (default) "A centred hyphen is a simple line between lyrics used to divide syllables. The length of the hyphen line should stretch based on the size of the gap between syllables." - (list + '( - (elt-property-description 'thickness number? "thickness of line (in stafflinethickness)") - (elt-property-description 'height number? "vertical offset (in staffspace)") + thickness + height - (elt-property-description 'minimum-length number? "try to make the hyphens at least this long. Also works as a scaling parameter for the length") - (elt-property-description 'word-space number? "elongate left by this much (FIXME: cumbersome semantics)") + minimum-length + word-space ))) (define key-signature-interface (lily-interface 'key-signature-interface "A group of accidentals." - (list - (elt-property-description 'c0-position integer? "integer indicating the position of central C") - (elt-property-description 'old-accidentals list? "list of (pitch, accidental) pairs") - (elt-property-description 'new-accidentals list? "list of (pitch, accidental) pairs") + '( + c0-position + old-accidentals + new-accidentals ))) (define lyric-extender-interface @@ -606,10 +469,10 @@ syllables. The length of the hyphen line should stretch based on the 'lyric-extender-interface "The extender is a simple line at the baseline of the lyric that helps show the length of a melissima (tied/slurred note)." - (list - (elt-property-description 'word-space number? "") - (elt-property-description 'height number? "in stafflinethickness") - (elt-property-description 'right-trim-amount number? "") + '( + word-space + height + right-trim-amount ))) @@ -617,8 +480,8 @@ syllables. The length of the hyphen line should stretch based on the (lily-interface 'lyric-syllable-interface "a single piece of lyrics" - (list - (elt-property-description 'word-space number? "") + '( + word-space ))) @@ -626,7 +489,7 @@ syllables. The length of the hyphen line should stretch based on the (lily-interface 'mark-interface "a rehearsal mark" - (list + '( ))) (define multi-measure-rest-interface @@ -635,35 +498,31 @@ syllables. The length of the hyphen line should stretch based on the "A rest that spans a whole number of measures. For typesetting the numbers, fields from font-interface may be used. " - (list + '( - (elt-property-description 'columns list? "list of paper-columns") - (elt-property-description 'expand-limit integer? "maximum number of measures expanded in church rests") - (elt-property-description 'minimum-width number? "minimum-width of rest symbol, in staffspace") - (elt-property-description 'padding number? "padding between number and rest. Measured in staffspace.") + columns + expand-limit + minimum-width + padding ))) (define paper-column-interface (lily-interface 'paper-column-interface "" - (list - (elt-property-description 'column-space-strength number? "relative strength of space following breakable columns (eg. prefatory matter)") - (elt-property-description 'before-musical-spacing-factor number? -"space before musical columns (eg. taken by accidentals) get this much -stretched when they follow a musical column, in absence of grace -notes. 0.0 means no extra space (accidentals are ignored)") - (elt-property-description 'stem-spacing-correction number? "optical correction amount.") - (elt-property-description 'before-grace-spacing-factor number? " stretch space this much if there are grace notes before the column") - (elt-property-description 'when moment? "when does this column happen?") - (elt-property-description 'bounded-by-me list? "list of spanners that have this -column as start/begin point. Only columns that have elements or act as bounds are spaced.") - (elt-property-description 'dir-list list? "list of stem directions") - (elt-property-description 'shortest-playing-duration moment? "duration of the shortest playing in that column.") - (elt-property-description 'shortest-starter-duration moment? "duration of the shortest notes that starts exactly in this column.") - (elt-property-description 'contains-grace boolean? "Used to widen entries for grace notes.") - (elt-property-description 'extra-space number-pair? "pair of distances") - (elt-property-description 'stretch-distance number-pair? "pair of distances") + '( + column-space-strength + before-musical-spacing-factor + stem-spacing-correction + before-grace-spacing-factor + when + bounded-by-me + dir-list + shortest-playing-duration + shortest-starter-duration + contains-grace + extra-space + stretch-distance ))) (define spaceable-element-interface @@ -671,10 +530,10 @@ column as start/begin point. Only columns that have elements or act as bounds ar 'spaceable-element-interface "An element (generally a Paper_column) that takes part in the spacing problem. " - (list - (elt-property-description 'minimum-distances list? "list of rods (ie. (OBJ . DIST) pairs)") - (elt-property-description 'ideal-distances list? "(OBJ . (DIST . STRENGTH)) pairs") - (elt-property-description 'dir-list list? "list of stem directions, needed for optical spacing correction.") + '( + minimum-distances + ideal-distances + dir-list ))) (define rest-collision-interface @@ -682,39 +541,34 @@ spacing problem. " 'rest-collision-interface "Move around ordinary rests (not multi-measure-rests) to avoid conflicts." - (list - (elt-property-description 'maximum-rest-count integer? "kill off rests so we don't more than this number left.") - (elt-property-description 'minimum-distance number? "minimum distance between notes and rests.") - (elt-property-description 'elements list? "list of elements (NoteColumn, -generally) participating in the collision. The -@code{rest-collision} property in @code{elements} is set -to a pointer to the collision") + '( + maximum-rest-count + minimum-distance + elements ))) (define script-interface (lily-interface 'script-interface "" - (list - (elt-property-description 'script-priority number? "A sorting key that determines in what order a script is within a stack of scripts") + '( + script-priority ))) (define script-column-interface (lily-interface 'script-column-interface "An interface that sorts scripts according to their @code{script-priority}" - (list ))) + '( ))) (define spacing-spanner-interface (lily-interface 'spacing-spanner-interface - "" - (list - (elt-property-description 'maximum-duration-for-spacing moment? "space as if a duration of this type is available in this measure.") - (elt-property-description 'arithmetic-basicspace number? "The space taken by a note is determined by the formula + " SPACE = arithmetic_multiplier * ( C + log2 (TIME) )) +The space taken by a note is determined by the formula - SPACE = arithmetic_multiplier * ( C + log2 (TIME) )) + where TIME is the amount of time a note occupies. The value of C is chosen such that the smallest space within a measure is @@ -752,9 +606,11 @@ If you want to space your music wider, use something like: arithmetic_basicspace = 4.; -@end example -") - (elt-property-description 'arithmetic-multiplier number? "see arithmetic-basicspace") +@end example" + '( + maximum-duration-for-spacing + arithmetic-basicspace + arithmetic-multiplier ))) @@ -763,20 +619,20 @@ If you want to space your music wider, use something like: 'staff-symbol-interface "This spanner draws the lines of a staff. The middle line is position 0." - (list - (elt-property-description 'staff-space number? "Amount of line leading relative to global staffspace") - (elt-property-description 'line-count integer? "Number of staff lines") + '( + staff-space + line-count ))) (define stem-tremolo-interface (lily-interface 'stem-tremolo-interface "" - (list - (elt-property-description 'stem ly-element? "pointer to the stem object.") - (elt-property-description 'beam-width number? "width of the tremolo sign") - (elt-property-description 'beam-thickness number? "thickness, measured in staffspace") - (elt-property-description 'beam-space-function procedure? "function returning space given multiplicity") + '( + stem + beam-width + beam-thickness + beam-space-function ))) (define separation-item-interface @@ -788,62 +644,52 @@ Calc dimensions for the Separating_group_spanner; this has to be an item to get dependencies correct. It can't be an element_group since these usually are in a different X_group " - (list - (elt-property-description 'elements list? " -- list of items.") + '( + elements ))) (define sustain-pedal-interface (lily-interface 'sustain-pedal-interface "" - (list + '( ))) -(define system-start-delimiter +(define system-start-delimiter-interface (lily-interface - 'system-start-delimiter - "" - (list - (elt-property-description 'collapse-height number? "") - (elt-property-description 'thickness number? "thickness, measured in stafflinethickness") - - ; Should collapse into (bracket . ((height . ) ... )) - ; - (elt-property-description 'arch-height number? "") - (elt-property-description 'arch-angle number? "") - (elt-property-description 'arch-thick number? "") - (elt-property-description 'arch-width number? "") - (elt-property-description 'bracket-thick number? "") - (elt-property-description 'bracket-width number? "") - (elt-property-description 'glyph symbol? "bar-line, bracket or brace") - ))) + 'system-start-delimiter-interface + "#'style can be bar-line, bracket or brace" + '(collapse-height thickness arch-height arch-angle arch-thick + arch-width bracket-thick bracket-width glyph ))) (define text-spanner-interface (lily-interface 'text-spanner-interface "generic text spanner" - (list - (elt-property-description 'dash-period number? "the length of one dash + white space") - (elt-property-description 'dash-length number? "the length of a dash") - (elt-property-description 'line-thickness number? "the thickness[stafflinethickness] of the line") - (elt-property-description 'edge-height pair? "a cons that specifies the heights of the vertical egdes '(LEFT-height . RIGHT-height)") - (elt-property-description 'edge-text pair? "a cons that specifies the texts to be set at the edges '(LEFT-text . RIGHT-text)") - (elt-property-description 'type string? "one of: line, dashed-line or dotted-line") ; SYMBOL!!? + '( + dash-period + dash-length + line-thickness + edge-height + edge-text + type ) )) (define tie-interface (lily-interface 'tie-interface - "A tie connecting two noteheads." - (list - (elt-property-description 'staffline-clearance number? "don't get closer than this to stafflines.") - (elt-property-description 'control-points list? "List of 4 offsets (number-pairs) controlling the tie shape") - (elt-property-description 'heads pair? "pair of element pointers, pointing to the two heads of the tie. ") - (elt-property-description 'details list? "alist of parameters for the curve shape") - (elt-property-description 'thickness number? "thickness, measured in stafflinethickness") - (elt-property-description 'x-gap number? "horizontal gap between notehead and tie") - (elt-property-description 'direction dir? "up or down?") - (elt-property-description 'minimum-length number? "minimum length in staffspace") + "A tie connecting two noteheads. +direction = Forced direction for all ties" + + '( + staffline-clearance + control-points + heads + details + thickness + x-gap + direction + minimum-length ))) @@ -852,24 +698,26 @@ Calc dimensions for the Separating_group_spanner; this has to be (lily-interface 'tie-column-interface "that sets tie directions in a tied chord" - (list - (elt-property-description 'direction dir? "Forced direction for all ties") - ))) + '(direction) + )) (define volta-bracket-interface (lily-interface 'volta-bracket-interface "Volta bracket with number" - (list - (elt-property-description 'bars list? "list of barline ptrs.") - (elt-property-description 'thickness number? "thickness, measured in stafflinethickness") - (elt-property-description 'height number? "in staffspace ") + '( + bars + thickness + height ))) (define span-bar-interface (lily-interface 'span-bar-interface "" - (list + '( ))) + + + diff --git a/scm/lily.scm b/scm/lily.scm index d701f4dc68..2d4b2aafd9 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -22,13 +22,20 @@ (define (number-pair? x) (and (pair? x) (number? (car x)) (number? (cdr x)))) +(define (boolean-or-symbol? x) (or boolean? x) (or symbol? x)) +(define (number-or-string? x) (or (number? x) (string? x))) +(define markup? + (lambda (x) (or (string? x) (list? x)))) + + +;; ugh: code dup ; merge. (define (object-type obj) (cond ((dir? obj) "direction") ((number-pair? obj) "pair of numbers") ((ly-input-location? obj) "input location") - ((ly-element? obj) "graphic element") + ((ly-grob? obj) "graphic element") ((pair? obj) "pair") ((integer? obj) "integer") ((list? obj) "list") @@ -51,7 +58,7 @@ ((eq? predicate dir?) "direction") ((eq? predicate number-pair?) "pair of numbers") ((eq? predicate ly-input-location?) "input location") - ((eq? predicate ly-element?) "graphic element") + ((eq? predicate ly-grob?) "graphic element") ((eq? predicate pair?) "pair") ((eq? predicate integer?) "integer") ((eq? predicate list?) "list") @@ -69,6 +76,14 @@ )) +(define (uniqued-alist alist acc) + (if (null? alist) acc + (if (assoc (caar alist) acc) + (uniqued-alist (cdr alist) acc) + (uniqued-alist (cdr alist) (cons (car alist) acc) + )))) + + ;; The regex module may not be available, or may be broken. (define use-regex (let ((os (string-downcase (vector-ref (uname) 0)))) @@ -756,17 +771,6 @@ ) ) -(begin - (eval-string (ly-gulp-file "interface.scm")) - (eval-string (ly-gulp-file "beam.scm")) - (eval-string (ly-gulp-file "slur.scm")) - (eval-string (ly-gulp-file "font.scm")) - (eval-string (ly-gulp-file "auto-beam.scm")) - (eval-string (ly-gulp-file "generic-property.scm")) - (eval-string (ly-gulp-file "basic-properties.scm")) - (eval-string (ly-gulp-file "chord-name.scm")) - (eval-string (ly-gulp-file "element-descriptions.scm")) - ) ;; @@ -877,3 +881,17 @@ ) )) + +(begin + (eval-string (ly-gulp-file "backend-property.scm")) + (eval-string (ly-gulp-file "translator-properties.scm")) + (eval-string (ly-gulp-file "interface.scm")) + (eval-string (ly-gulp-file "beam.scm")) + (eval-string (ly-gulp-file "slur.scm")) + (eval-string (ly-gulp-file "font.scm")) + (eval-string (ly-gulp-file "auto-beam.scm")) + (eval-string (ly-gulp-file "generic-property.scm")) + (eval-string (ly-gulp-file "basic-properties.scm")) + (eval-string (ly-gulp-file "chord-name.scm")) + (eval-string (ly-gulp-file "element-descriptions.scm")) + ) diff --git a/scm/translator-description.scm b/scm/translator-description.scm index fad552e139..82a2f02236 100644 --- a/scm/translator-description.scm +++ b/scm/translator-description.scm @@ -1,11 +1,8 @@ -(define (number-or-string? x) (or (number? x) (string? x))) + (define (engraver-description name description created-elts properties) (list name description created-elts properties) ) -(define (translator-property-description symbol type? description) - (list symbol type? description) - ) (define engraver-description-alist (list @@ -15,14 +12,10 @@ "Stem_engraver" "Create stems and single-stem tremolos" '(Stem StemTremolo) - (list - (translator-property-description 'tremoloFlags integer? "") - (translator-property-description 'stemLeftBeamCount integer? " -Specify the number of beams to draw on the left side of the next note. -Overrides automatic beaming. The value is only used once, and then it -is erased. -") - (translator-property-description 'stemRightBeamCount integer? "idem, for the right side") + '( + tremoloFlags + stemLeftBeamCount + stemRightBeamCount ))) (cons @@ -31,7 +24,7 @@ is erased. "Hyphen_engraver" "Create lyric hyphens" '(LyricHyphen) - (list + '( ))) (cons @@ -40,7 +33,7 @@ is erased. "Extender_engraver" "Create lyric extenders" '(LyricExtender) - (list + '( ))) @@ -50,7 +43,7 @@ is erased. "Separating_line_group_engraver" "Generates objects for computing spacing parameters." '(SeparationItem SeparatingGroupSpanner) - (list + '( ))) (cons @@ -59,24 +52,8 @@ is erased. "Axis_group_engraver" "Group all objects created in this context in a VerticalAxisGroup spanner." '(VerticalAxisGroup) - (list - (translator-property-description - 'CONTEXTNAMEVerticalExtent number-pair? "hard coded vertical extent. -The format is a pair of dimensions, for example, this sets the sizes -of a staff to 10 (5+5) staffspaces high. - -@example -\property Staff.StaffVerticalExtent = #(-5.0 . 5.0) -@end example - - [fixme, naming]") - (translator-property-description - 'CONTEXTNAMEMinimumVerticalExtent number-pair? - "minimum vertical extent, same format as CONTEXTNAMEVerticalExtent [fixme, naming]") - (translator-property-description - 'CONTEXTNAMExtraVerticalExtent number-pair? - "extra vertical extent, same format -CONTEXTNAMEMinimumVerticalExtent [fixme, naming]") ))) + '(CONTEXTNAMEVerticalExtent CONTEXTNAMEMinimumVerticalExtent CONTEXTNAMExtraVerticalExtent) + )) (cons 'Hara_kiri_engraver @@ -98,23 +75,10 @@ interesting items (ie. note heads, lyric syllables and normal rests)" with note heads), this needs to be in a context higher than Tie_engraver. (FIXME)." '(Accidentals) - (list - (translator-property-description 'localKeySignature list? "the key signature at this point in the measure") - (translator-property-description 'forgetAccidentals boolean? "do -not set localKeySignature when a note alterated differently from -localKeySignature is found. - -Causes accidentals to be printed at every note instead of -remembered for the duration of a measure. -") - (translator-property-description 'noResetKey boolean? "Do not -reset local key to the value of keySignature at the start of a measure, -as determined by measurePosition. - -Do not reset the key at the start of a measure. Accidentals will be -printed only once and are in effect until overridden, possibly many -measures later. -") + '( + localKeySignature + forgetAccidentals + noResetKey ))) @@ -125,20 +89,7 @@ measures later. "Volta_engraver" "Make volta brackets" '(VoltaBracket) - (list - (translator-property-description 'repeatCommands list? - "This property is read to find any command of the form (volta . X), where X is a string or #f") - (translator-property-description 'voltaSpannerDuration moment? - "maximum duration of the volta bracket. - - Set to a duration to control the size of the brackets printed by -@code{\alternative}. It specifies the number of whole notes duration -to use for the brackets. This can be used to shrink the length of -brackets in the situation where one alternative is very large. It may -have odd effects if the specified duration is longer than the music -given in an @code{\alternative}. -") - ) + '(repeatCommands voltaSpannerDuration) )) (cons @@ -147,14 +98,13 @@ given in an @code{\alternative}. "Clef_engraver" "Determine and set reference point for pitches" '(Clef OctavateEight) - (list - (translator-property-description 'clefPosition number? "Where should the center of the symbol go?") - (translator-property-description 'clefGlyph string? "Name of the symbol within the music font") - (translator-property-description 'centralCPosition number? "Place of the central C. Usually determined by looking at clefPosition and clefGlyph.") - (translator-property-description 'clefOctavation integer? "Add -this much extra octavation. Values of 7 and -7 are common.") - (translator-property-description 'explicitClefVisibility procedure? "visibility-lambda function for clef changes.") - (translator-property-description 'clefPitches list? "an alist mapping GLYPHNAME to the position of the central C for that symbol") + '( + clefPosition + clefGlyph + centralCPosition + clefOctavation + explicitClefVisibility + clefPitches ))) @@ -164,17 +114,17 @@ this much extra octavation. Values of 7 and -7 are common.") "A2_engraver" "Part combine engraver for orchestral scores." '(TextScript) - (list - (translator-property-description 'combineParts boolean? "try to combine parts?") - (translator-property-description 'soloADue boolean? "set Solo/A due texts?") - (translator-property-description 'soloText string? "text for begin of solo") - (translator-property-description 'soloIIText string? "text for begin of solo for voice ``two''") - (translator-property-description 'aDueText string? "text for begin of a due") - (translator-property-description 'split-interval number-pair? "always split into two voices for contained intervals") - (translator-property-description 'unison boolean? "set if unisono is detected ") - (translator-property-description 'solo boolean? "set if solo is detected") - (translator-property-description 'unisilence boolean? "set if unisilence is detected") - (translator-property-description 'unirhythm boolean? "set if unirhythm is detected") + '( + combineParts + soloADue + soloText + soloIIText + aDueText + split-interval + unison + solo + unisilence + unirhythm ))) (cons @@ -183,10 +133,10 @@ this much extra octavation. Values of 7 and -7 are common.") "Align_note_column_engraver" "Generate object to put grace notes from left to right." '(GraceAlignment) - (list + '( - (translator-property-description 'graceAlignPosition dir? "put the grace note before or after the main note?") - (translator-property-description 'graceAccidentalSpace number? "amount space to alot for an accidental") + graceAlignPosition + graceAccidentalSpace ))) (cons @@ -195,7 +145,7 @@ this much extra octavation. Values of 7 and -7 are common.") "Arpeggio_engraver" "Generate an Arpeggio from a Arpeggio_req" '(Arpeggio) - (list + '( ))) (cons @@ -207,39 +157,9 @@ Uses beatLength, measureLength and measurePosition to decide when to start and s " '( Beam) - (list - (translator-property-description 'noAutoBeaming boolean? " If set to true then beams are not generated automatically. -") - (translator-property-description 'autoBeamSettings list? " -Specifies when automatically generated beams should begin and end. The elements have the format: - -@example - - function shortest-duration-in-beam time-signature - -where - - function = begin or end - shortest-duration-in-beam = numerator denominator; eg: 1 16 - time-signature = numerator denominator, eg: 4 4 - -unspecified or wildcard entries for duration or time-signature -are given by * * - -The user can override beam begin or end time by pushing a wildcard entries -'(begin * * * *) or '(end * * * *) resp., eg: - - \property Voice.autoBeamSettings \push #'(end * * * *) = #(make-moment 1 4) - -The head of the list: - '( - ((end * * 3 2) . ,(make-moment 1 2)) - ((end 1 16 3 2) . ,(make-moment 1 4)) - ((end 1 32 3 2) . ,(make-moment 1 8)) - ... - ) - -@end example")))) + '( + noAutoBeaming + autoBeamSettings))) (cons 'Bar_engraver @@ -248,15 +168,9 @@ The head of the list: "Create barlines. This engraver is controlled through the @code{whichBar} property. If it has no bar line to create, it will forbid a linebreak at this point" '(BarLine) - (list - (translator-property-description 'whichBar string? "This property is read to determine what type of barline to create. -Example: -@example -\\property Staff.whichBar = \"|:\" -@end example -will create a start-repeat bar in this staff only -") - (translator-property-description 'staffsFound list? "list of all staff-symbols found.") + '( + whichBar + staffsFound ))) @@ -267,9 +181,8 @@ will create a start-repeat bar in this staff only "A bar number is created whenever measurePosition is zero. It is put on top of all staffs, and appears only at left side of the staff." '(BarNumber) - (list - (translator-property-description 'currentBarNumber integer? "this is read to determine - the number to put on the bar ") + '( + currentBarNumber ))) @@ -280,8 +193,8 @@ put on top of all staffs, and appears only at left side of the staff." "Handles Beam_requests by engraving Beams. If omitted, then notes will be printed with flags instead of beams." '(Beam) - (list - (translator-property-description 'beamMelismaBusy boolean? "Signal if a beam is set when automaticMelismata is set") + '( + beamMelismaBusy ))) (cons @@ -290,23 +203,9 @@ put on top of all staffs, and appears only at left side of the staff." "Break_align_engraver" "Align graphic elements with corresponding break-align-symbols into groups, and order the groups according to breakAlignOrder" '(BreakAlignment BreakAlignGroup LeftEdge) - (list - (translator-property-description 'breakAlignOrder list? - "Defines the order in which -prefatory matter (clefs, key signatures) appears, eg. this puts the -key signatures after the bar lines: - -@example - \\property Score.breakAlignOrder = #'( - Span_bar - Breathing_sign - Clef_item - Staff_bar - Key_item - Time_signature - ) -@end example -") + '( + breakAlignOrder + ))) @@ -316,7 +215,7 @@ key signatures after the bar lines: "Breathing_sign_engraver" "" '(BreathingSign) - (list + '( ))) @@ -327,12 +226,9 @@ key signatures after the bar lines: "Catch Note_req's, Tonic_reqs, Inversion_reqs, Bass_req and generate the appropriate chordname." '(ChordName) - (list - (translator-property-description 'chordInversion boolean? " Determines whether LilyPond should look for chord inversions when - translating from notes to chord names. Set to 1 to find - inversions. The default is 0 which does not look for - inversions.") - (translator-property-description 'drarnChords boolean? "") + '( + chordInversion + drarnChords ))) @@ -342,7 +238,7 @@ and generate the appropriate chordname." "Chord_tremolo_engraver" "Generates beams for the \repeat X tremolo ... construct" '(Beam) - (list + '( ))) @@ -354,7 +250,7 @@ and generate the appropriate chordname." "" '(NoteCollision ) - (list + '( ))) (cons @@ -363,7 +259,7 @@ and generate the appropriate chordname." "Custos_engraver" "" '(Custos) - (list + '( ))) @@ -376,7 +272,7 @@ If omitted, then dots appear on top of the notes. " '(DotColumn ) - (list + '( ))) @@ -388,7 +284,7 @@ If omitted, then dots appear on top of the notes. '(DynamicLineSpanner DynamicText Crescendo TextSpanner) - (list + '( ))) @@ -400,7 +296,7 @@ If omitted, then dots appear on top of the notes. "Grace_position_engraver" "Attach a grace note alignment to a note-column " '() - (list + '( ))) (cons @@ -409,7 +305,7 @@ If omitted, then dots appear on top of the notes. "Grace_engraver_group" "An engraver that creates a `shielded' context-tree with separate notion of time" '() - (list + '( ))) @@ -421,16 +317,9 @@ If omitted, then dots appear on top of the notes. @code{Staff.instrument} and @code{Staff.instr}) at the left of the staff." '(InstrumentName) - (list - (translator-property-description 'instrument string? " If @code{Instrument_name_engraver} -@cindex Instrument_name_engraver - is - added to the Staff translator, then the @code{instrument} property - is used to label the first line of the staff and the @code{instr} - property is used to label subsequent lines. If the - @code{midiInstrument} property is not set, then @code{instrument} - is used to determine the instrument for MIDI output.") - (translator-property-description 'instr string? "see @code{instrument}") + '( + instrument + instr ))) (cons @@ -439,7 +328,7 @@ If omitted, then dots appear on top of the notes. "Engraver_group_engraver" "A group of engravers taken together" '() - (list + '( ))) (cons @@ -449,14 +338,14 @@ If omitted, then dots appear on top of the notes. "" '(KeySignature ) - (list + '( - (translator-property-description 'keySignature list? "") - (translator-property-description 'keyOctaviation boolean? "") - (translator-property-description 'explicitKeySignatureVisibility procedure? "") - (translator-property-description 'createKeyOnClefChange boolean? "") - (translator-property-description 'keyAccidentalOrder list? "") - (translator-property-description 'keySignature list? "") + keySignature + keyOctaviation + explicitKeySignatureVisibility + createKeyOnClefChange + keyAccidentalOrder + keySignature ))) (cons 'Lyric_engraver @@ -464,7 +353,7 @@ If omitted, then dots appear on top of the notes. "Lyric_engraver" "" '() - (list + '( ;; FIXME ))) @@ -473,12 +362,12 @@ If omitted, then dots appear on top of the notes. "Lyric_phrasing_engraver" "" '() - (list - (translator-property-description 'automaticPhrasing boolean? "") - (translator-property-description 'weAreGraceContext boolean? "") - (translator-property-description 'melismaEngraverBusy boolean? "") - (translator-property-description 'associatedVoice string? "") - (translator-property-description 'phrasingPunctuation string? "") + '( + automaticPhrasing + weAreGraceContext + melismaEngraverBusy + associatedVoice + phrasingPunctuation ))) (cons @@ -487,10 +376,10 @@ If omitted, then dots appear on top of the notes. "Mark_engraver" "" '(RehearsalMark) - (list + '( - (translator-property-description 'rehearsalMark number-or-string? "") - (translator-property-description 'staffsFound list? "") + rehearsalMark + staffsFound ))) @@ -500,12 +389,12 @@ If omitted, then dots appear on top of the notes. "Melisma_engraver" "" '() - (list + '( - (translator-property-description 'melismaBusy boolean? "") - (translator-property-description 'slurMelismaBusy boolean? "") - (translator-property-description 'tieMelismaBusy boolean? "") - (translator-property-description 'beamMelismaBusy boolean? "") + melismaBusy + slurMelismaBusy + tieMelismaBusy + beamMelismaBusy ))) @@ -517,7 +406,7 @@ If omitted, then dots appear on top of the notes. measurePosition and currentBarNumber to determine what number to print over the MultiMeasureRest " '(MultiMeasureRest) - (list + '( ))) @@ -527,7 +416,7 @@ measurePosition and currentBarNumber to determine what number to print over the "Note_heads_engraver" "Generate one or more noteheads from Music of type Note_req." '(NoteHead Dots) - (list + '( ))) @@ -537,7 +426,7 @@ measurePosition and currentBarNumber to determine what number to print over the "Note_name_engraver" "" '(NoteName) - (list + '( ))) @@ -548,7 +437,7 @@ measurePosition and currentBarNumber to determine what number to print over the "Interpret Music of Output_property type, and apply a function to any Graphic objects that satisfies the predicate." '() - (list + '( ))) @@ -558,13 +447,13 @@ to any Graphic objects that satisfies the predicate." "Piano_pedal_engraver" "engrave Piano pedals symbols." '(SostenutoPedal SustainPedal UnaChordaPedal) - (list + '( - (translator-property-description 'startSustain string? "") - (translator-property-description 'stopSustain string? "") - (translator-property-description 'stopStartSustain string? "") - (translator-property-description 'startUnaChorda string? "") - (translator-property-description 'stopUnaChorda string? "") + startSustain + stopSustain + stopStartSustain + startUnaChorda + stopUnaChorda ))) (cons @@ -576,9 +465,8 @@ the locations of accidentals stay the same. Set the position field of all note heads to zero. This useful for making a single line staff that demonstrates the rhythm of a melody." '() - (list - (translator-property-description 'squashedPosition integer? " Vertical position of -squashing.") + '( + squashedPosition ))) (cons @@ -591,15 +479,8 @@ back-end element-property settings. Example: Voice.stemLength will set Due to CPU and memory requirements, the use of this engraver is deprecated." '() - (list - (translator-property-description 'Generic_property_list list? "description of the conversion. - -Defines names and types for generic properties. These are properties -than can be plugged into the backend directly. See the init file -@file{generic-property.scm} for details. For internal use only, -deprecated. -") - ))) + '(Generic_property_list) + )) (cons @@ -610,9 +491,9 @@ deprecated. "Acknowledge repeated music, and convert the contents of repeatCommands ainto an appropriate setting for whichBar" '() - (list - (translator-property-description 'repeatCommands list? "") - (translator-property-description 'whichBar string? "") + '( + repeatCommands + whichBar ))) @@ -623,7 +504,7 @@ repeatCommands ainto an appropriate setting for whichBar" "Rest_collision_engraver" "Handles collisions of rests." '(RestCollision) - (list + '( ))) @@ -633,7 +514,7 @@ repeatCommands ainto an appropriate setting for whichBar" "Rest_engraver" "" '(Rest Dots) - (list + '( ))) @@ -643,7 +524,7 @@ repeatCommands ainto an appropriate setting for whichBar" "Rhythmic_column_engraver" "Generates NoteColumn, an objects that groups stems, noteheads and rests." '(NoteColumn) - (list + '( ))) @@ -653,7 +534,7 @@ repeatCommands ainto an appropriate setting for whichBar" "Script_column_engraver" "" '(ScriptColumn) - (list + '( ))) @@ -664,15 +545,9 @@ repeatCommands ainto an appropriate setting for whichBar" " Handles note ornaments generated by @code{\script}. " '(Script) - (list - (translator-property-description 'scriptDefinitions list? " -Description of scripts to use. (fixme) -") - - (translator-property-description 'scriptHorizontal boolean? " Put scripts left or right of note heads. Support for this is - limited. Accidentals will collide with scripts. - -") + '( + scriptDefinitions + scriptHorizontal ))) (cons @@ -690,9 +565,9 @@ that there are no beams or notes that prevent a breakpoint.) " '(LineOfScore PaperColumn NonMusicalPaperColumn) - (list - (translator-property-description 'currentMusicalColumn ly-element? "") - (translator-property-description 'currentCommandColumn ly-element? "") + '( + currentMusicalColumn + currentCommandColumn ))) (cons 'Skip_req_swallow_translator @@ -700,7 +575,7 @@ that there are no beams or notes that prevent a breakpoint.) "Skip_req_swallow_translator" "" '() - (list + '( ;; FIXME ))) @@ -711,10 +586,10 @@ that there are no beams or notes that prevent a breakpoint.) "Build slurs from Slur_reqs" '(Slur) - (list - (translator-property-description 'slurBeginAttachment symbol? "translates to the car of Slur.element-property 'attachment.") - (translator-property-description 'slurEndAttachment symbol? "translates to the cdr of Slur.element-property 'attachment.") - (translator-property-description 'slurMelismaBusy boolean? "Signal a slur if automaticMelismata is set") + '( + slurBeginAttachment + slurEndAttachment + slurMelismaBusy ))) @@ -724,7 +599,7 @@ that there are no beams or notes that prevent a breakpoint.) "Spacing_engraver" "make a SpacingSpanner and do bookkeeping of shortest starting and playing notes " '(SpacingSpanner) - (list + '( ))) @@ -734,11 +609,8 @@ that there are no beams or notes that prevent a breakpoint.) "Span_arpeggio_engraver" "" '(Arpeggio) - (list - (translator-property-description 'connectArpeggios boolean? " If -set, connect all arpeggios that are found. In this way, you can make -arpeggios that cross staffs. -") + '( + connectArpeggios ))) @@ -750,7 +622,7 @@ arpeggios that cross staffs. bar lines, and draws a single span-bar across them." '(SpanBar) - (list + '( ))) @@ -760,7 +632,7 @@ bar lines, and draws a single span-bar across them." "Staff_symbol_engraver" "create the constellation of five (default) staff lines." '(StaffSymbol) - (list + '( ))) @@ -771,9 +643,9 @@ bar lines, and draws a single span-bar across them." "" '(StanzaNumber ) - (list - (translator-property-description 'stz string? "") - (translator-property-description 'stanza string? "Stanza `number' to print at start of a verse") + '( + stz + stanza ))) @@ -784,7 +656,7 @@ bar lines, and draws a single span-bar across them." "System_start_delimiter_engraver" "creates a SystemStartDelimiter spanner" '(SystemStartDelimiter) - (list + '( ))) @@ -794,16 +666,9 @@ bar lines, and draws a single span-bar across them." "Text_engraver" "Create text-scripts" '(TextScript) - (list - (translator-property-description 'scriptHorizontal boolean? " Put scripts left or right of note heads. Support for this is - limited. Accidentals will collide with scripts. - -") - (translator-property-description 'textNonEmpty boolean? " If set -to true then text placed above or below the staff is not assumed to -have zero width. @code{fatText} and @code{emptyText} are predefined -settings. -") + '( + scriptHorizontal + textNonEmpty ))) @@ -813,7 +678,7 @@ settings. "Text_spanner_engraver" "Create text spanner from a Span_req " '(TextSpanner) - (list + '( ))) @@ -833,11 +698,8 @@ either unison, unisilence or soloADue is set" "Tie_engraver" "Generate ties between noteheads of equal pitch." '(Tie TieColumn) - (list - - - (translator-property-description 'sparseTies boolean? "only create one tie per chord.") - (translator-property-description 'tieMelismaBusy boolean? "Signal ties when automaticMelismata is set") + '(sparseTies + tieMelismaBusy ))) @@ -847,7 +709,7 @@ either unison, unisilence or soloADue is set" "Time_signature_engraver" "Create a TimeSignature whenever @code{timeSignatureFraction} changes" '(TimeSignature) - (list + '( ))) @@ -860,54 +722,19 @@ either unison, unisilence or soloADue is set" this engraver should be removed from @code{Score} and placed in @code{Staff}." '() - (list - (translator-property-description 'timeSignatureFraction number-pair? " -pair of numbers, signifying the time signature. For example #'(4 . 4) is a 4/4time signature.") - (translator-property-description 'barCheckNoSynchronize boolean? -"If set, don't reset measurePosition when finding a bbarcheck. This -makes bar-checks for polyphonic music easier.") - - (translator-property-description 'barNonAuto boolean? " If set to true then bar lines will not be printed - automatically; they must be explicitly created with @code{\bar} - keywords. Unlike with the @code{\cadenza} keyword, measures are - still counted. Bar generation will resume according to that - count if this property is set to zero. -") - (translator-property-description 'whichBar string? "if not set -explicitly (by \property or \bar), this is set according to values of -defaultBarType, barAlways, barNonAuto and measurePosition. - ") - - (translator-property-description 'barAlways boolean? " If set to true a bar line is drawn after each note. -") - (translator-property-description 'defaultBarType string? "Sets the default type of bar line. Available bar types: [FIXME] -") - (translator-property-description 'skipBars boolean? " Set to true to skip the empty bars that are produced by - multimeasure notes and rests. These bars will not appear on the - printed output. If not set (the default) multimeasure - notes and rests expand into their full length, printing the appropriate - number of empty bars so that synchronization with other voices is - preserved. - -@c my @vebatim patch would help... -@example -@@lilypond[fragment,verbatim,center] -r1 r1*3 R1*3\property Score.skipBars=1 r1*3 R1*3 - -@@end lilypond -@end example - -") - (translator-property-description 'timing boolean? " Keep administration of measure length, position, bar number, etc? -Switch off for cadenzas.") - (translator-property-description 'oneBeat moment? " How long does one beat in the current time signature last?") - (translator-property-description 'measureLength moment? " How long does one measure in the current time signature last?") - (translator-property-description 'measurePosition moment? " - How much of the current measure (measured in whole notes) have we had? -") - (translator-property-description 'currentBarNumber integer? "Contains the current barnumber. This property is incremented at -every barline. -") + '( + timeSignatureFraction + barCheckNoSynchronize + barNonAuto + whichBar + barAlways + defaultBarType + skipBars + timing + oneBeat + measureLength + measurePosition + currentBarNumber ))) @@ -918,27 +745,9 @@ every barline. "Catch Time_scaled_music and generate appropriate bracket " '( TupletBracket) - (list - (translator-property-description 'tupletSpannerDuration moment? " -Normally a tuplet bracket is as wide as the -@code{\times} expression that gave rise to it. By setting this -property, you can make brackets last shorter. Example - -@example -@@lilypond[verbatim,fragment] -\context Voice \times 2/3 @{ - \property Voice.tupletSpannerDuration = #(make-moment 1 4) - [c8 c c] [c c c] -@} -@@end lilypond -@end example -") - (translator-property-description 'tupletInvisible boolean? " - If set to true, tuplet bracket creation is switched off -entirely. This has the same effect as setting both -@code{tupletNumberVisibility} and @code{tupletBracketVisibility} to -@code{#f}, but as this does not even create elements, this setting -uses less memory and time.") + '( + tupletSpannerDuration + tupletInvisible ))) @@ -948,7 +757,7 @@ uses less memory and time.") "Vertical_align_engraver" "Catch Vertical axis groups and stack them." '(VerticalAlignment) - (list + '( ))) @@ -958,12 +767,13 @@ uses less memory and time.") "Voice_devnull_engraver" "Kill off certain items and spanners if we're Voice `two' and unison or unisilence is set." '() - (list + '( ))) )) - +(set! engraver-description-alist + (sort engraver-description-alist alist