X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fspan-bar-engraver.cc;h=a36c0ce5f1540708934f925d6facd69a8b7ac216;hb=c659cb200486c2f908703696a1b2873e78c8160a;hp=846bbcb610ea49e7278c44c81c1a61866db6ab3c;hpb=243db47a88df9240a66bde37356b43aaeb41260d;p=lilypond.git diff --git a/lily/span-bar-engraver.cc b/lily/span-bar-engraver.cc index 846bbcb610..a36c0ce5f1 100644 --- a/lily/span-bar-engraver.cc +++ b/lily/span-bar-engraver.cc @@ -3,17 +3,14 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2003 Han-Wen Nienhuys + (c) 1997--2004 Han-Wen Nienhuys */ - -#include "lily-guile.hh" #include "bar-line.hh" #include "item.hh" #include "span-bar.hh" #include "engraver.hh" - /** Make bars that span multiple "staves". Catch bars, and span a @@ -25,45 +22,40 @@ */ class Span_bar_engraver : public Engraver { - Item * spanbar_; + Item *spanbar_; Link_array bars_; public: - TRANSLATOR_DECLARATIONS(Span_bar_engraver); + TRANSLATOR_DECLARATIONS (Span_bar_engraver); protected: virtual void acknowledge_grob (Grob_info); virtual void stop_translation_timestep (); - }; - Span_bar_engraver::Span_bar_engraver () { spanbar_ =0; } - - void Span_bar_engraver::acknowledge_grob (Grob_info i) { - int depth = i.origin_transes (this).size (); - if (depth > 1 - && Bar_line::has_interface (i.grob_)) + int depth = i.origin_contexts (this).size (); + if (depth && Bar_line::has_interface (i.grob_)) { Item * it = dynamic_cast (i.grob_); bars_.push (it); if (bars_.size () >= 2 && !spanbar_) { - spanbar_ = make_item ("SpanBar"); + spanbar_ = make_item ("SpanBar", SCM_EOL); spanbar_->set_parent (bars_[0], X_AXIS); - - announce_grob (spanbar_, SCM_EOL); + } } } + void Span_bar_engraver::stop_translation_timestep () { @@ -73,23 +65,18 @@ Span_bar_engraver::stop_translation_timestep () Span_bar::add_bar (spanbar_,bars_[i]); SCM vissym =ly_symbol2scm ("break-visibility"); - SCM vis = bars_[0]->internal_get_grob_property (vissym); - if (scm_equal_p (spanbar_->internal_get_grob_property (vissym), vis) != SCM_BOOL_T) - spanbar_->internal_set_grob_property (vissym, vis); + SCM vis = bars_[0]->internal_get_property (vissym); + if (ly_c_equal_p (spanbar_->internal_get_property (vissym), vis)) + spanbar_->internal_set_property (vissym, vis); - typeset_grob (spanbar_); + spanbar_ =0; } bars_.set_size (0); } - - - - - -ENTER_DESCRIPTION(Span_bar_engraver, +ENTER_DESCRIPTION (Span_bar_engraver, /* descr */ "This engraver makes cross-staff barlines: It catches all normal " "bar lines, and draws a single span-bar across them.", /* creats*/ "SpanBar",