/*
multi_measure_rest-engraver.cc -- implement Multi_measure_rest_engraver
- (c) 1998--2004 Jan Nieuwenhuizen <janneke@gnu.org>
+ (c) 1998--2005 Jan Nieuwenhuizen <janneke@gnu.org>
Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
-#include "event.hh"
#include "multi-measure-rest.hh"
#include "paper-column.hh"
#include "engraver-group-engraver.hh"
#include "side-position-interface.hh"
#include "staff-symbol-referencer.hh"
-#include "engraver.hh"
#include "moment.hh"
-#include "spanner.hh"
/**
The name says it all: make multi measure rests
bar_seen_ = false;
start_measure_ = 0;
mmrest_ = 0;
- last_rest_ =0;
+ last_rest_ = 0;
rest_ev_ = 0;
}
{
mmrest_ = make_spanner ("MultiMeasureRest", rest_ev_->self_scm ());
+ Spanner *sp
+ = make_spanner ("MultiMeasureRestNumber", rest_ev_->self_scm () );
+ numbers_.push (sp);
+
if (text_events_.size ())
{
for (int i = 0; i < text_events_.size (); i++)
= make_spanner ("MultiMeasureRestText", e->self_scm () );
SCM t = e->get_property ("text");
SCM dir = e->get_property ("direction");
- sp->set_property ("text",t);
+ sp->set_property ("text", t);
if (is_direction (dir))
- sp->set_property ("direction",dir);
+ sp->set_property ("direction", dir);
numbers_.push (sp);
}
*/
Direction d = DOWN;
do {
- Grob *last =0;
- for (int i=0; i <numbers_.size (); i++)
+ Grob *last = 0;
+ for (int i = 0; i <numbers_.size (); i++)
{
if (scm_int2num (d) == numbers_[i]->get_property ("direction"))
{
}
} while (flip (&d) != DOWN);
}
- else
- {
- Spanner *sp
- = make_spanner ("MultiMeasureRestNumber", rest_ev_->self_scm () );
- numbers_.push (sp);
- }
- for (int i =0 ; i < numbers_.size (); i++)
+ for (int i = 0 ; i < numbers_.size (); i++)
{
Side_position_interface::add_support (numbers_[i], mmrest_);
numbers_[i]->set_parent (mmrest_, Y_AXIS);
if (last_command_item_ && (mmrest_ || last_rest_))
{
-
if (last_rest_)
{
add_bound_item (last_rest_, last_command_item_);
}
}
-
- SCM smp = get_property ("measurePosition");
- Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
-
+ Moment mp(robust_scm2moment (get_property ("measurePosition"), Moment (0)));
if (last_rest_)
{
last_rest_ = 0;
bar_seen_ = false;
- SCM smp = get_property ("measurePosition");
- Moment mp = (unsmob_moment (smp)) ? *unsmob_moment (smp) : Moment (0);
+ Moment mp (robust_scm2moment (get_property ("measurePosition"), Moment (0)));
- Moment now =now_mom ();
+ Moment now = now_mom ();
if (mmrest_
&& now.main_part_ != last_main_moment_
&& mp.main_part_ == Rational (0))
{
SCM thres = get_property ("restNumberThreshold");
int t = 1;
- if (ly_c_number_p (thres))
+ if (scm_is_number (thres))
t = scm_to_int (thres);
if (num <= t)
{
}
-ENTER_DESCRIPTION (Multi_measure_rest_engraver,
+ADD_TRANSLATOR (Multi_measure_rest_engraver,
/* descr */
"Engraves multi-measure rests that are produced with @code{R}. Reads "
"measurePosition and currentBarNumber to determine what number to print "