2 molecule.hh -- declare Molecule
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
11 #include "lily-proto.hh"
14 #include "direction.hh"
16 #include "protected-scm.hh"
20 /** a group of individually translated symbols. You can add molecules
21 to the top, to the right, etc.
25 Empty molecules have empty dimensions. If add_at_edge is used to
26 init the molecule, we assume that
27 DIMENSIONS = (Interval(0,0),Interval(0,0)
31 Protected_scm atom_list_;
33 friend class Paper_outputter;
42 Set dimensions to empty, or to (Interval(0,0),Interval(0,0) */
43 void set_empty (bool);
44 void add_at_edge (Axis a, Direction d, const Molecule &m, Real padding);
47 Add an atom. The molecule assumes responsibility for cleaning.
49 void add_atom (SCM as);
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&);