X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fspan-bar.cc;h=678853185bcefc3421471a8badb0cba269e3a727;hb=1cf3d59c1559fb9774c4c1c8cae155cfe54a927c;hp=e89b05352fcc0c6a9d3e65b381b0a6838c473ee6;hpb=1e95a0be01466d1c98644f7705c8e07e41cc645c;p=lilypond.git diff --git a/lily/span-bar.cc b/lily/span-bar.cc index e89b05352f..678853185b 100644 --- a/lily/span-bar.cc +++ b/lily/span-bar.cc @@ -3,52 +3,60 @@ source file of the GNU LilyPond music typesetter - (c) 1997--1998 Han-Wen Nienhuys + (c) 1997--1998 Han-Wen Nienhuys */ -#include "dimen.hh" +#include "dimension.hh" #include "span-bar.hh" #include "lookup.hh" #include "atom.hh" #include "paper-def.hh" #include "molecule.hh" -#include "vertical-align-elem.hh" +#include "align-element.hh" void -Span_bar::add (Bar*b) +Span_bar::add_bar (Bar*b) { spanning_l_arr_.push (b); add_dependency (b); } - - void -Span_bar::do_substitute_dependency (Score_elem*o, Score_elem*n) +Span_bar::do_substitute_dependency (Score_element*o, Score_element*n) { spanning_l_arr_.unordered_substitute (o, n); } - void -Span_bar::set (Vertical_align_element *a) +Span_bar::set_align (Align_element *a) { add_dependency (a); } - Interval -Span_bar::do_width() const +Span_bar::do_width () const { - return paper()->lookup_l ()->bar (type_str_, 40 PT).dim_.x (); // ugh + return lookup_l ()->bar (type_str_, 40 PT).dim_.x (); // ugh } void -Span_bar::do_pre_processing() +Span_bar::do_pre_processing () { Bar::do_pre_processing (); - if (spanning_l_arr_.size() < 1) + evaluate_empty (); +} + +void +Span_bar::do_post_processing () +{ + Bar::do_post_processing (); +} + +void +Span_bar::evaluate_empty () +{ + if (spanning_l_arr_.size () < 1) { transparent_b_ = true; set_empty (true); @@ -66,40 +74,51 @@ Span_bar::do_pre_processing() { type_str_ = "|."; } + else if (type_str_ == ":|:") + { + type_str_ = ".|."; + } } Atom Span_bar::get_bar_sym (Real dy) const { - return paper()->lookup_l ()->bar (type_str_, dy); + if (dy < paper ()->staffheight_f () / 2) + return Atom (); + + return lookup_l ()->bar (type_str_, dy); } - Molecule* -Span_bar::brew_molecule_p() const +Span_bar::brew_molecule_p () const { Interval y_int; - for (int i=0; i < spanning_l_arr_.size(); i++) + for (int i=0; i < spanning_l_arr_.size (); i++) { - Axis_group_element *common = + Graphical_axis_group *common = common_group (spanning_l_arr_[i], Y_AXIS); Real y = spanning_l_arr_[i]->relative_coordinate (common, Y_AXIS) -relative_coordinate (common,Y_AXIS); - y_int.unite (y + spanning_l_arr_[i]->height()); + y_int.unite (y + spanning_l_arr_[i]->height ()); } - Atom s = get_bar_sym (y_int.length()); + Atom s = get_bar_sym (y_int.length ()); Molecule*output = new Molecule (Atom (s)); - output->translate_axis (y_int.center(), Y_AXIS); + output->translate_axis (y_int.center (), Y_AXIS); return output; } +IMPLEMENT_IS_TYPE_B1 (Span_bar,Bar); -IMPLEMENT_IS_TYPE_B1(Span_bar,Bar); - -Span_bar::Span_bar() +Span_bar::Span_bar () { type_str_ = ""; } + +Span_bar* +Span_bar::access_Span_bar () +{ + return this; +}