X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-column.cc;h=e644ce6d98b17d902dbc018d67fa43ca04784833;hb=df4a7c4a55148e065d878dcc2f7e09ac27ea9c32;hp=a399a6aceae73c304a056d5a1d330895b4a057e9;hpb=e7d84e6728ecfdf74d8f214486a29c2aca199819;p=lilypond.git diff --git a/lily/paper-column.cc b/lily/paper-column.cc index a399a6acea..e644ce6d98 100644 --- a/lily/paper-column.cc +++ b/lily/paper-column.cc @@ -10,78 +10,21 @@ #include "paper-score.hh" #include "debug.hh" #include "axis-group-interface.hh" +#include "spaceable-element.hh" void -Paper_column::add_rod (Paper_column * p, Real d) +Paper_column::do_break_processing () { - Direction dir = Direction (sign (p->rank_i () - rank_i ())); - - if (dir != RIGHT) - { - programming_error ("Must set minimum distance LTOR."); - return; - } - - for (int i=0; i < minimal_dists_.size (); i++) - { - Column_rod &rod = minimal_dists_[i]; - if (rod.other_l_ == p) - { - rod.distance_f_ = rod.distance_f_ >? d; - return ; - } - } - - Column_rod cr; - cr.distance_f_ = d; - cr.other_l_ = p; - - minimal_dists_.push (cr); -} - -void -Paper_column::add_spring (Paper_column * p, Real d, Real s) -{ - Direction dir = Direction (sign (p->rank_i () - rank_i ())); - - if (dir != RIGHT) - { - programming_error ("Must set springs LTOR"); - return; - } - - for (int i=0; i < springs_.size (); i++) - { - Column_spring &spring = springs_[i]; - if (spring.other_l_ == p) - { - spring.distance_f_ = spring.distance_f_ >? d; - return ; - } - } - - Column_spring cr; - cr.distance_f_ = d; - cr.strength_f_ = s; - cr.other_l_ = p; - - springs_.push (cr); + Spaceable_element::remove_interface(this); + Item::do_break_processing (); } int -Paper_column::rank_i() const +Paper_column::rank_i(Grob*me) { - return rank_i_; + return dynamic_cast (me)->rank_i_; } -void -Paper_column::set_rank (int i) -{ - rank_i_ = i; -} - - - Line_of_score* Paper_column::line_l() const { @@ -94,27 +37,25 @@ Paper_column::column_l () const return (Paper_column*)(this); } -Paper_column::Paper_column (Moment w) +Paper_column::Paper_column (SCM l) + : Item (l) // guh.? { - SCM when = (new Moment (w))->smobify_self (); - scm_unprotect_object (when); - set_elt_property ("when", when); - - Axis_group_interface (this).set_interface (); - Axis_group_interface (this).set_axes (X_AXIS, X_AXIS); + Axis_group_interface::set_interface (this); + Axis_group_interface::set_axes (this, X_AXIS, X_AXIS); + Spaceable_element::set_interface (this); line_l_=0; rank_i_ = -1; } Moment -Paper_column::when_mom () const +Paper_column::when_mom (Grob*me) { - SCM m = get_elt_property ("when"); + SCM m = me->get_grob_property ("when"); Moment s (0); - if (SMOB_IS_TYPE_B(Moment, m)) + if (unsmob_moment (m)) { - s = *SMOB_TO_TYPE (Moment,m); + return *unsmob_moment (m); } return s; } @@ -122,17 +63,19 @@ Paper_column::when_mom () const 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 (SMOB_IS_TYPE_B(Moment, m)) + if (unsmob_moment (m)) { - s = *SMOB_TO_TYPE (Moment,m); + s = *unsmob_moment (m); } return s != Moment(0); } bool -Paper_column::used_b ()const +Paper_column::used_b (Grob*me ) { - return gh_pair_p (get_elt_pointer ("elements")) || breakable_b (); + return gh_pair_p (me->get_grob_property ("elements")) || Item::breakable_b (me) + || gh_pair_p (me->get_grob_property ("bounded-by-me")) + ; }