lilypond-1.3.19
[lilypond.git] / lily / dots.cc
blob93eda7287b7dc7b387d738707cbf1db622e80217
1 /*
2 dots.cc -- implement Dots
4 source file of the GNU LilyPond music typesetter
6 (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
7 */
9 #include "dots.hh"
10 #include "molecule.hh"
11 #include "paper-def.hh"
12 #include "lookup.hh"
13 #include "staff-symbol-referencer.hh"
14 #include "directional-element-interface.hh"
16 Dots::Dots ()
18 set_elt_property ("dot-count", gh_int2scm (0));
21 void
22 Dots::do_post_processing ()
24 SCM d= get_elt_property ("dot-count");
25 if (!gh_number_p (d) || !gh_scm2int (d))
27 set_elt_property ("transparent", SCM_BOOL_T);
28 set_empty (X_AXIS);
29 set_empty (Y_AXIS);
31 else
33 if (!directional_element (this).get ())
34 directional_element (this).set (UP);
36 Staff_symbol_referencer_interface si (this);
37 int p = int (si.position_f ());
38 if (!(p % 2))
39 si.set_position (p + directional_element (this).get ());
42 Molecule*
43 Dots::do_brew_molecule_p () const
45 Molecule *out = new Molecule;
46 Molecule fill = lookup_l ()->fill (Box (Interval (0,0),
47 Interval (0,0)));
48 out->add_molecule (fill);
50 Molecule d = lookup_l ()->afm_find (String ("dots-dot"));
52 Real dw = d.dim_[X_AXIS].length ();
53 d.translate_axis (-dw, X_AXIS);
56 for (int i = gh_scm2int (get_elt_property ("dot-count")); i--; )
58 d.translate_axis (2*dw,X_AXIS);
59 out->add_molecule (d);
62 return out;