X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fscript-column.cc;h=deab16f0266f46a6c48f5b58fd3fa1a4824a649d;hb=1d29117649b9c635e6fda19a6c3003f5f31770f8;hp=e5ecb8796091d0a391e58e49a35306706fc9a10e;hpb=af9078fd6d63dea5141e87a1b4d7cb5b0bcba84a;p=lilypond.git diff --git a/lily/script-column.cc b/lily/script-column.cc index e5ecb87960..deab16f026 100644 --- a/lily/script-column.cc +++ b/lily/script-column.cc @@ -3,12 +3,12 @@ source file of the GNU LilyPond music typesetter - (c) 1999--2001 Han-Wen Nienhuys + (c) 1999--2002 Han-Wen Nienhuys */ #include "script-column.hh" #include "side-position-interface.hh" - +#include "warn.hh" #include "group-interface.hh" void @@ -18,7 +18,7 @@ Script_column::add_staff_sided (Grob *me, Item *i) if (!gh_number_p (p)) return; - Pointer_group_interface::add_element (me, ly_symbol2scm ("scripts"),i); + Pointer_group_interface::add_grob (me, ly_symbol2scm ("scripts"),i); me->add_dependency (i); } @@ -41,18 +41,25 @@ Script_column::before_line_breaking (SCM smob) Grob* me = unsmob_grob (smob); Drul_array > arrs; Link_array staff_sided - = Pointer_group_interface__extract_elements (me, (Grob*)0, "scripts"); - + = Pointer_group_interface__extract_grobs (me, (Grob*)0, "scripts"); for (int i=0; i < staff_sided.size (); i++) { - arrs[Side_position_interface::get_direction (staff_sided[i])] - .push (staff_sided[i]); + Direction d = Side_position_interface::get_direction (staff_sided[i]); + if (!d) + { + programming_error ( "No direction for script?"); + d = DOWN; + staff_sided[i]->set_grob_property ("direction", gh_int2scm (d)); + } + + arrs[d].push (staff_sided[i]); } Direction d = DOWN; do { - Link_array &arr (arrs[d]); + Link_array &arr + (arrs[d]); arr.sort (staff_side_compare); @@ -63,7 +70,7 @@ Script_column::before_line_breaking (SCM smob) if (last) Side_position_interface::add_support (arr[i],last); - arr[i]->remove_grob_property ("script-priority"); + arr[i]->set_grob_property ("script-priority", SCM_EOL); last = arr[i]; } @@ -72,3 +79,9 @@ Script_column::before_line_breaking (SCM smob) return SCM_UNSPECIFIED; } + +ADD_INTERFACE (Script_column,"script-column-interface", + "An interface that sorts scripts according to their @code{script-priority}", + ""); + +