X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fscript-column.cc;h=a14c02c29ef949f43a6ea8d39184ebbfc4410213;hb=434da79e9d7684b2b05fa92a6d808d4ea7933046;hp=e00f9f04a6c860b661c392beba41df763f506c1d;hpb=31653bf1d61a33ef8bc8c871d60c6b3452d04d28;p=lilypond.git diff --git a/lily/script-column.cc b/lily/script-column.cc index e00f9f04a6..a14c02c29e 100644 --- a/lily/script-column.cc +++ b/lily/script-column.cc @@ -1,115 +1,76 @@ -/* - script-column.cc -- implement Script_column - +/* + g-script-column.cc -- implement Script_column + source file of the GNU LilyPond music typesetter - - (c) 1997--1998 Han-Wen Nienhuys -*/ - + + (c) 1999 Han-Wen Nienhuys + + */ #include "script-column.hh" -#include "debug.hh" -#include "script.hh" -#include "note-head.hh" -#include "stem.hh" -#include "general-script-def.hh" - -IMPLEMENT_IS_TYPE_B1(Script_column,Horizontal_vertical_group_item); - +#include "staff-side.hh" -void -Script_column::add_script (Script*s_l) +static Staff_side_item * +get_Staff_side (Item *i) { - script_l_arr_.push (s_l); - add_dependency (s_l); - add_element (s_l); -} + Graphical_element *e1 = i->dim_cache_[Y_AXIS]->parent_l_->element_l (); + return dynamic_cast(e1); +} void -Script_column::do_print() const +Script_column::add_staff_sided (Item *i) { -#ifndef NPRINT - DOUT << "scripts: " << script_l_arr_.size() << '\n'; -#endif + SCM p = get_Staff_side (i)->get_elt_property (script_priority_scm_sym); + if (p == SCM_BOOL_F) + return; + + staff_sided_item_l_arr_.push (i); + add_dependency (i); } static int -idx (bool inside, int dir) +staff_side_compare (Item * const &i1, + Item * const &i2) { - int j = (dir+1); - if (!inside) - j ++; - return j; -} - -void -Script_column::do_pre_processing() -{ - if (!script_l_arr_.size()) - return; - - /* up+inside, up+outside, down+inside, down+outside */ - Array placed_l_arr_a[4]; - for (int i=0; i < script_l_arr_.size(); i++) - { - Script*s_l = script_l_arr_[i]; - placed_l_arr_a[idx (s_l->specs_p_->inside_b(), - s_l->dir_) ].push (s_l); - } - - for (int j =0; j <4; j++) - { - placed_l_arr_a[j].sort (Script::compare); - } + Score_element *e1 = get_Staff_side (i1); + Score_element *e2 = get_Staff_side (i2); + SCM p1 = e1->get_elt_property (script_priority_scm_sym); + SCM p2 = e2->get_elt_property (script_priority_scm_sym); - for (int j =0; j < 4; j++) - { - if (placed_l_arr_a[j].size()) - for (int i=0; i < support_l_arr_.size(); i++) - placed_l_arr_a[j][0]->add_support (support_l_arr_[i]); - } - - Item * support_l=0; - int j = 0; - for (; j < 2; j++) - { - for (int i=0; i < placed_l_arr_a[j].size(); i++) - { - if (support_l) - placed_l_arr_a[j][i]->add_support (support_l); - support_l = placed_l_arr_a[j][i]; - } - } - support_l = 0; - for (; j < 4; j++) - { - for (int i=0; i < placed_l_arr_a[j].size(); i++) - { - if (support_l) - placed_l_arr_a[j][i]->add_support (support_l); - support_l = placed_l_arr_a[j][i]; - } - } + return gh_scm2int (SCM_CDR(p1)) - gh_scm2int (SCM_CDR(p2)); } - void -Script_column::add_support (Item*i_l) +Script_column::do_pre_processing () { - support_l_arr_.push (i_l); - add_dependency (i_l); - add_element (i_l); -} + Drul_array > arrs; -void -Script_column::do_substitute_dependency (Score_element*o,Score_element*n) -{ - if (dynamic_cast (o)) + for (int i=0; i < staff_sided_item_l_arr_.size (); i++) { - script_l_arr_.substitute (dynamic_cast