-#include "rest.hh"
-#include "dimen.hh"
-#include "debug.hh"
+/*
+ rest.cc -- implement Rest
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1997--1998 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "molecule.hh"
#include "paper-def.hh"
#include "lookup.hh"
-#include "molecule.hh"
-
+#include "rest.hh"
+#include "dots.hh"
+#include "axis-group-element.hh"
+#include "p-score.hh"
-Rest::Rest(int t, int d)
+void
+Rest::do_add_processing ()
{
- balltype = t;
- dots = d;
-}
+ if (balltype_i_ > 1)
+ position_i_ -= 4;
+ else if (balltype_i_ == 0)
+ position_i_ += 2;
+ Rhythmic_head::do_add_processing ();
+ if (dots_l_ && balltype_i_ > 1)
+ {
+ dots_l_->position_i_ = position_i_ + 4;
+ }
+}
-void
-Rest::do_print()const
+Rest::Rest ()
{
-#ifndef NPRINT
- mtor << "Rest "<<balltype<< "dots " << dots;
- Item::print();
-#endif
+ position_i_ =0;
}
-Molecule*
-Rest::brew_molecule_p()const
+Molecule *
+Rest::brew_molecule_p () const
{
- Paper_def *p =paper();
-
- Symbol s;
- s = p->lookup_l()->rest(balltype);
-
- Molecule *m = new Molecule(Atom(s));
- if (dots) {
- Symbol d =p->lookup_l()->dots(dots);
- Molecule dm;
- dm.add(Atom(d));
- m->add_right(dm);
- }
- return m;
+ int staff_size_i_ = 8;
+ bool streepjes_b = abs(position_i_) > staff_size_i_ /2 &&
+ (balltype_i_ == 0 || balltype_i_ == 1);
+
+ Atom s(lookup_l ()->rest (balltype_i_, streepjes_b));
+ Molecule * m = new Molecule ( Atom (s));
+ m->translate_axis (position_i_ * paper ()->internote_f (), Y_AXIS);
+ return m;
}
+IMPLEMENT_IS_TYPE_B1(Rest, Rhythmic_head);