source file of the GNU LilyPond music typesetter
- (c) 1997--2001 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#ifndef MOLECULE_HH
#define MOLECULE_HH
Empty molecules have empty dimensions. If add_at_edge is used to
init the molecule, we assume that
- DIMENSIONS = (Interval(0,0),Interval(0,0)
+ DIMENSIONS = (Interval (0,0),Interval (0,0)
*/
-class Molecule {
+class Molecule
+{
+ friend SCM ly_molecule_set_extent_x (SCM, SCM, SCM);
+
Box dim_;
SCM expr_;
-
- DECLARE_SIMPLE_SMOBS(Molecule,);
+ DECLARE_SIMPLE_SMOBS (Molecule,);
public:
Molecule (Box, SCM s);
- Molecule();
+ Molecule ();
SCM smobbed_copy () const;
SCM get_expr () const;
/**
- Set dimensions to empty, or to (Interval(0,0),Interval(0,0) */
+ Set dimensions to empty, or to (Interval (0,0),Interval (0,0) */
void set_empty (bool);
- void add_at_edge (Axis a, Direction d, const Molecule &m, Real padding);
+ void add_at_edge (Axis a, Direction d, const Molecule &m, Real padding,
+ Real minimum);
void add_molecule (Molecule const &m);
void translate (Offset);
-
- /**
- align D direction in axis A.
-
- If D == CENTER, then move the dimension(A).center() to (0,0)
-
- Else, move so dimension(A)[D] == 0.0
-
- */
- void align_to (Axis a, Direction d);
+ void align_to (Axis a, Real x);
void translate_axis (Real,Axis);
Interval extent (Axis) const;
codify THIS into a Scheme expression.
*/
SCM create_scheme () const;
- bool empty_b() const;
+ bool is_empty () const;
static SCM ly_get_molecule_extent (SCM mol, SCM axis);
};
-Molecule *unsmob_molecule (SCM);
-SCM fontify_atom (Font_metric*, SCM atom);
+DECLARE_UNSMOB(Molecule,molecule);
+SCM fontify_atom (Font_metric const*, SCM atom);
Molecule create_molecule (SCM brew_molecule);