2 molecule.cc -- implement Molecule
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
11 #include "molecule.hh"
14 #include "killing-cons.tcc"
17 Molecule::extent() const
23 Molecule::extent(Axis a) const
29 Molecule::translate (Offset o)
31 for (Cons<Atom> * ptr = atom_list_; ptr; ptr = ptr->next_)
39 Molecule::translate_axis (Real x,Axis a)
41 for (Cons<Atom> * ptr = atom_list_; ptr; ptr = ptr->next_)
43 ptr->car_->off_[a] += x;
49 Molecule::add_molecule (Molecule const &m)
51 for (Cons<Atom> * ptr = m.atom_list_; ptr; ptr = ptr->next_)
60 Molecule::add_atom (Atom const *al)
62 Atom *a = new Atom(*al);
64 atom_list_ = new Killing_cons<Atom> (a, atom_list_);
68 Molecule::operator=(Molecule const & src)
70 if (&src == this) return;
77 Molecule::Molecule (Molecule const &s)
83 Molecule::~Molecule ()
89 Molecule::print() const
95 for (Axis i=X_AXIS; i < NO_AXES; incr (i))
96 DOUT << axis_name_str (i) << " = " << dim_[i].str ();
101 Molecule::do_center (Axis a)
103 Interval i (extent (a));
104 translate_axis (-i.center (), a);
107 Molecule::Molecule ()
109 dim_ = Box (Interval(0,0),Interval( 0,0 ));
115 Molecule::add_at_edge (Axis a, Direction d, Molecule const &m, Real padding)
117 Real my_extent= dim_[a][d];
119 Real offset = my_extent - m.extent ()[a][-d];
121 toadd.translate_axis (offset + d * padding, a);
122 add_molecule (toadd);