2 molecule.hh -- declare Molecule
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
11 #include "lily-proto.hh"
14 #include "direction.hh"
19 /** a group of individually translated symbols. You can add molecules
20 to the top, to the right, etc.
24 Empty molecules have empty dimensions. If add_at_edge is used to
25 init the molecule, we assume that
26 DIMENSIONS = (Interval(0,0),Interval(0,0)
33 // Protected_scm atom_list_; // change to List<Atom>?
34 Cons<Atom> *atom_list_;
36 friend class Paper_outputter;
45 Set dimensions to empty, or to (Interval(0,0),Interval(0,0) */
46 void set_empty (bool);
48 void add_at_edge (Axis a, Direction d, const Molecule &m, Real padding);
49 void add_atom (Atom const *a);
50 void add_molecule (Molecule const &m);
51 void translate (Offset);
54 align D direction in axis A.
56 If D == CENTER, then move the dimension(A).center() to (0,0)
58 Else, move so dimension(A)[D] == 0.0
61 void align_to (Axis a, Direction d);
62 void translate_axis (Real,Axis);
65 /// how big is #this#?
67 Interval extent (Axis) const;
69 Molecule (const Molecule&s);
71 void operator=(const Molecule&);