#include "score-column.hh"
#include "command-request.hh"
#include "paper-def.hh"
-#include "graphical-lisp-element.hh"
+
Score_engraver::Score_engraver()
*/
if (announce_info_arr_[i].req_l_)
{
- Musical_req *m = announce_info_arr_[i].req_l_->access_Musical_req ();
- if (m && m->access_Rhythmic_req ())
+ if (Rhythmic_req *rq = dynamic_cast <Rhythmic_req *> (announce_info_arr_[i].req_l_))
{
- musical_column_l_->add_duration (m->duration());
+ musical_column_l_->add_duration (rq->length_mom ());
}
}
Engraver_group_engraver::do_announces();
elem_p_arr_.push (elem_p);
}
-void
-Score_engraver::typeset_element (Graphical_lisp_element* elem_p)
-{
- *mlog << "not typesetting: " << elem_p->static_name () << "\n";
- delete elem_p;
-}
void
Score_engraver::typeset_all()
for (int i =0; i < elem_p_arr_.size(); i++)
{
Score_element * elem_p = elem_p_arr_[i];
- if (elem_p->access_Spanner ())
+ if (Spanner *s = dynamic_cast <Spanner *> (elem_p))
{
- Spanner *s = elem_p->access_Spanner ();
pscore_p_->typeset_unbroken_spanner (s);
/*
if (!s->spanned_drul_[d])
{
s->set_bounds(d, command_column_l_);
- ::warning (_f ("Unbound spanner `%s\'", s->name ()));
+ ::warning (_f ("Unbound spanner `%s\'", classname(s)));
}
} while (flip(&d) != LEFT);
}
else
{
- Item *item_p = elem_p->access_Item ();
+ Item *item_p = dynamic_cast <Item *> (elem_p);
pscore_p_->typeset_element (item_p);
- if (!item_p->axis_group_l_a_[X_AXIS]) {
- if (item_p->breakable_b_)
- command_column_l_->add_element(item_p);
- else
- musical_column_l_->add_element(item_p);
- }
+ if (!item_p->parent_l (X_AXIS))
+ {
+ if (item_p->breakable_b_)
+ command_column_l_->add_element(item_p);
+ else
+ musical_column_l_->add_element(item_p);
+ }
}
scoreline_l_->add_element (elem_p);
}
}
bool
-Score_engraver::do_try_request (Request*r)
+Score_engraver::do_try_music (Music*r)
{
- bool gotcha = Engraver_group_engraver::do_try_request (r);
-
- if (gotcha || !r->access_Command_req ())
- return gotcha;
+ bool gotcha = Engraver_group_engraver::do_try_music (r);
- Command_req * c = r->access_Command_req ();
- if (c->access_Break_req ())
+ if (!gotcha)
{
- Break_req* b = (Break_req*)c->access_Break_req ();
- if (b->penalty_i_ <= Break_req::DISALLOW)
- break_penalty_i_ = b->penalty_i_;
- else if (b->penalty_i_ >= Break_req::FORCE)
+ if (Break_req* b = dynamic_cast<Break_req *> (r))
{
- command_column_l_->break_penalty_i_ = b->penalty_i_;
- gotcha = true;
+ if (b->penalty_i_ <= Break_req::DISALLOW)
+ break_penalty_i_ = b->penalty_i_;
+ else if (b->penalty_i_ >= Break_req::FORCE)
+ {
+ command_column_l_->break_penalty_i_ = b->penalty_i_;
+ gotcha = true;
+ }
}
}
- return gotcha;
+ return gotcha;
+
}
-IMPLEMENT_IS_TYPE_B1(Score_engraver,Engraver_group_engraver);
+
ADD_THIS_TRANSLATOR(Score_engraver);
void
Score_engraver::do_add_processing ()
{
Translator_group::do_add_processing ();
- assert (output_def_l_->is_type_b (Paper_def::static_name ()));
+ assert (dynamic_cast<Paper_def *> (output_def_l_));
assert (!daddy_trans_l_);
pscore_p_ = new Paper_score;
- pscore_p_->paper_l_ = (Paper_def*)output_def_l_;
+ pscore_p_->paper_l_ = dynamic_cast<Paper_def*>(output_def_l_);
}