X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fextender-spanner.cc;h=a9eb6640c59dd66286073bd1adc46401b6123d9b;hb=01d84d552854fb399bd0e819502c6c2db2a1b214;hp=4a06ed13f6d16b578d95241178372f4fb296fe65;hpb=25c92bfff1189d93b80cdef0da0d570d14834c8d;p=lilypond.git diff --git a/lily/extender-spanner.cc b/lily/extender-spanner.cc index 4a06ed13f6..a9eb6640c5 100644 --- a/lily/extender-spanner.cc +++ b/lily/extender-spanner.cc @@ -6,116 +6,74 @@ (c) 1998, 1999 Jan Nieuwenhuizen */ +/* + TODO: too complicated implementation. Why the dx_drul?. + */ +# +#include "dimension-cache.hh" #include "box.hh" #include "debug.hh" #include "lookup.hh" #include "molecule.hh" -#include "p-col.hh" +#include "paper-column.hh" #include "paper-def.hh" #include "extender-spanner.hh" Extender_spanner::Extender_spanner () : Directional_spanner () { - item_l_drul_[LEFT] = item_l_drul_[RIGHT] = 0; - dy_f_drul_[LEFT] = dy_f_drul_[RIGHT] = 0.0; dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0; + dim_cache_[Y_AXIS]->set_callback (Dimension_cache::point_dimension_callback); } -Extender_spanner::Extender_spanner (Extender_spanner const& c) - : Directional_spanner (c) -{ - item_l_drul_ = c.item_l_drul_; - dy_f_drul_ = c.dy_f_drul_; - dx_f_drul_ = c.dx_f_drul_; -} - -Extender_spanner::~Extender_spanner () -{ -} -Offset -Extender_spanner::center () const -{ - Real dx = extent (X_AXIS).length (); - return Offset (dx / 2, 0); -} Molecule* Extender_spanner::do_brew_molecule_p () const { Molecule* mol_p = new Molecule; - Real w = extent (X_AXIS).length (); + Real w = spanner_length (); w += (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]); - Real h = paper ()->get_realvar (ly_symbol ("extender_height")); + Real h = paper_l ()->get_var ("extender_height"); Molecule a = lookup_l ()->filledbox ( Box (Interval (0,w), Interval (0,h))); - a.translate (Offset (dx_f_drul_[LEFT], dy_f_drul_[LEFT])); + a.translate (Offset (dx_f_drul_[LEFT], 0)); mol_p->add_molecule (a); return mol_p; } -void -Extender_spanner::do_add_processing () -{ - Direction d = LEFT; - Drul_array new_textitem_drul = item_l_drul_; - do { - if (!item_l_drul_[d]) - new_textitem_drul[d] = item_l_drul_[(Direction)-d]; - } while (flip(&d) != LEFT); - item_l_drul_ = new_textitem_drul; -} -Interval -Extender_spanner::do_height () const -{ - return Interval (0,0); -} void Extender_spanner::do_post_processing () { - assert (item_l_drul_[LEFT] || item_l_drul_[RIGHT]); - // UGH - Real nw_f = paper ()->note_width () * 0.8; + Real gap = paper_l ()->get_var ("interline"); Direction d = LEFT; do { - Item* t = item_l_drul_[d] - ? item_l_drul_[d] : item_l_drul_[(Direction)-d]; + Item* t = spanned_drul_[d] + ? spanned_drul_[d] : spanned_drul_[(Direction)-d]; if (d == LEFT) dx_f_drul_[d] += t->extent (X_AXIS).length (); else - dx_f_drul_[d] -= d * nw_f / 2; + dx_f_drul_[d] -= d * gap / 2; } while (flip(&d) != LEFT); } -void -Extender_spanner::do_substitute_dependency (Score_element* o, Score_element* n) -{ - Item* new_l = n ? dynamic_cast (n) : 0; - if (dynamic_cast (o) == item_l_drul_[LEFT]) - item_l_drul_[LEFT] = new_l; - else if (dynamic_cast (o) == item_l_drul_[RIGHT]) - item_l_drul_[RIGHT] = new_l; -} void Extender_spanner::set_textitem (Direction d, Item* textitem_l) { - assert (!item_l_drul_[d]); - item_l_drul_[d] = textitem_l; set_bounds (d, textitem_l); - add_dependency (textitem_l); } +