2 extender-spanner.cc -- implement Extender_spanner
4 source file of the GNU LilyPond music typesetter
6 (c) 1998, 1999 Jan Nieuwenhuizen <janneke@gnu.org>
10 TODO: too complicated implementation. Why the dx_drul?.
17 #include "molecule.hh"
19 #include "paper-def.hh"
20 #include "extender-spanner.hh"
22 Extender_spanner::Extender_spanner ()
23 : Directional_spanner ()
25 dx_f_drul_[LEFT] = dx_f_drul_[RIGHT] = 0.0;
30 Extender_spanner::center () const
32 Real dx = extent (X_AXIS).length ();
34 return Offset (dx / 2, 0);
38 Extender_spanner::do_brew_molecule_p () const
40 Molecule* mol_p = new Molecule;
42 Real w = extent (X_AXIS).length ();
44 w += (dx_f_drul_[RIGHT] - dx_f_drul_[LEFT]);
45 Real h = paper_l ()->get_realvar (extender_height_scm_sym);
46 Molecule a = lookup_l ()->filledbox ( Box (Interval (0,w), Interval (0,h)));
47 a.translate (Offset (dx_f_drul_[LEFT], 0));
49 mol_p->add_molecule (a);
55 Extender_spanner::do_height () const
57 return Interval (0,0);
61 Extender_spanner::do_post_processing ()
64 Real nw_f = paper_l ()->note_width () * 0.8;
69 Item* t = spanned_drul_[d]
70 ? spanned_drul_[d] : spanned_drul_[(Direction)-d];
72 dx_f_drul_[d] += t->extent (X_AXIS).length ();
74 dx_f_drul_[d] -= d * nw_f / 2;
76 while (flip(&d) != LEFT);
81 Extender_spanner::set_textitem (Direction d, Item* textitem_l)
83 set_bounds (d, textitem_l);
84 add_dependency (textitem_l);