X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=lily%2Fspanner.cc;h=fdc34380a47545dc50772c85c7a0402a9a89cec9;hb=e4c229e52b6e102676b1bcae5aff89bf21401225;hp=21562baff74763b16a35c9013b2d5579723d84e4;hpb=d7be2ca7f331d94c9525bb0658f7e767c5e39230;p=lilypond.git diff --git a/lily/spanner.cc b/lily/spanner.cc index 21562baff7..fdc34380a4 100644 --- a/lily/spanner.cc +++ b/lily/spanner.cc @@ -3,7 +3,7 @@ source file of the GNU LilyPond music typesetter - (c) 1996--2002 Han-Wen Nienhuys + (c) 1996--2004 Han-Wen Nienhuys */ #include #include @@ -123,6 +123,12 @@ Spanner::do_break_processing () broken_intos_[i]->break_index_ = i; } +int +Spanner::get_break_index ()const +{ + return break_index_; +} + void Spanner::set_my_columns () { @@ -202,9 +208,8 @@ Spanner::Spanner (SCM s) break_index_ = 0; spanned_drul_[LEFT]=0; spanned_drul_[RIGHT]=0; + Group_interface::add_thing (this, ly_symbol2scm ("interfaces"), ly_symbol2scm ("spanner-interface")); - - } Spanner::Spanner (Spanner const &s) @@ -274,7 +279,7 @@ Spanner::get_broken_left_end_align () const // Relevant only if left span point is first column in line if (sc != NULL && - sc->break_status_dir () == RIGHT) + sc->break_status_dir () == RIGHT) { /* @@ -336,13 +341,24 @@ Spanner::set_spacing_rods (SCM smob) r.item_l_drul_[LEFT] = sp->get_bound (LEFT); r.item_l_drul_[RIGHT] = sp->get_bound (RIGHT); r.distance_ = - gh_scm2double (me->get_grob_property ("minimum-length")); + robust_scm2double (me->get_grob_property ("minimum-length"), 0); r.add_to_cols (); return SCM_UNSPECIFIED; } +/* + Return I such that SP == SP->ORIGINAL_->BROKEN_INTOS_[I]. + */ +int +broken_spanner_index (Spanner * sp) +{ + Spanner * parent = dynamic_cast (sp->original_); + return parent->broken_intos_.find_index (sp); +} + + Spanner* unsmob_spanner (SCM s ) {