/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 2005--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
*/
#include "paper-column-engraver.hh"
-#include "system.hh"
#include "international.hh"
#include "accidental-placement.hh"
#include "accidental-interface.hh"
+#include "arpeggio.hh"
#include "axis-group-interface.hh"
#include "context.hh"
#include "note-spacing.hh"
#include "translator.icc"
-Paper_column_engraver::Paper_column_engraver ()
+Paper_column_engraver::Paper_column_engraver (Context *c)
+ : Engraver (c)
{
last_moment_.main_part_ = Rational (-1, 1);
command_column_ = 0;
Paper_column_engraver::finalize ()
{
if (! (breaks_ % 8))
- progress_indication ("[" + to_string (breaks_) + "]");
+ progress_indication ("[" + ::to_string (breaks_) + "]");
if (!made_columns_)
{
void
Paper_column_engraver::initialize ()
{
- system_ = dynamic_cast<System *> (unsmob_grob (get_property ("rootSystem")));
+ system_ = unsmob<System> (get_property ("rootSystem"));
make_columns ();
system_->set_bound (LEFT, command_column_);
system_->add_column (musical_column_);
}
-IMPLEMENT_TRANSLATOR_LISTENER (Paper_column_engraver, break);
void
Paper_column_engraver::listen_break (Stream_event *ev)
{
break_events_.push_back (ev);
}
-IMPLEMENT_TRANSLATOR_LISTENER (Paper_column_engraver, label);
void
Paper_column_engraver::listen_label (Stream_event *ev)
{
for (vsize i = 0; i < break_events_.size (); i++)
{
string prefix;
- SCM name_sym = break_events_[i]->get_property ("class");
+ SCM name_sym = scm_car (break_events_[i]->get_property ("class"));
string name = ly_symbol2string (name_sym);
size_t end = name.rfind ("-event");
if (end)
if (start_of_measure)
{
Moment mlen = Moment (measure_length (context ()));
- Grob *column = unsmob_grob (get_property ("currentCommandColumn"));
+ Grob *column = unsmob<Grob> (get_property ("currentCommandColumn"));
if (column)
column->set_property ("measure-length", mlen.smobbed_copy ());
else
command_column_->set_property ("when", m);
musical_column_->set_property ("when", m);
+ SCM mpos = get_property ("measurePosition");
+ SCM barnum = get_property ("internalBarNumber");
+ if (unsmob<Moment> (mpos)
+ && scm_is_integer (barnum))
+ {
+ SCM where = scm_cons (barnum,
+ mpos);
+
+ command_column_->set_property ("rhythmic-location", where);
+ musical_column_->set_property ("rhythmic-location", where);
+ }
+
for (vsize i = 0; i < items_.size (); i++)
{
Item *elem = items_[i];
if (!elem->get_parent (X_AXIS))
elem->set_parent (col, X_AXIS);
- if (!unsmob_grob (elem->get_object ("axis-group-parent-X")))
+ if (!unsmob<Grob> (elem->get_object ("axis-group-parent-X")))
elem->set_object ("axis-group-parent-X", col->self_scm ());
- if (Accidental_placement::has_interface (elem))
+ if (has_interface<Accidental_placement> (elem)
+ || has_interface<Arpeggio> (elem))
Separation_item::add_conditional_item (col, elem);
- else if (!Accidental_interface::has_interface (elem))
+ else if (!has_interface<Accidental_interface> (elem))
Separation_item::add_item (col, elem);
}
items_.clear ();
for (vsize i = 0; i < break_events_.size (); i++)
{
SCM perm = break_events_[i]->get_property ("break-permission");
- if (perm == ly_symbol2scm ("force") || perm == ly_symbol2scm ("allow"))
+ if (scm_is_eq (perm, ly_symbol2scm ("force"))
+ || scm_is_eq (perm, ly_symbol2scm ("allow")))
warning (_ ("forced break was overridden by some other event, "
"should you be using bar checks?"));
}
breaks_++;
if (! (breaks_ % 8))
- progress_indication ("[" + to_string (breaks_) + "]");
+ progress_indication ("[" + ::to_string (breaks_) + "]");
}
context ()->get_score_context ()->unset_property (ly_symbol2scm ("forbidBreak"));
first_ = false;
label_events_.clear ();
-
- SCM mpos = get_property ("measurePosition");
- SCM barnum = get_property ("internalBarNumber");
- if (unsmob_moment (mpos)
- && scm_is_integer (barnum))
- {
- SCM where = scm_cons (barnum,
- mpos);
-
- command_column_->set_property ("rhythmic-location", where);
- musical_column_->set_property ("rhythmic-location", where);
- }
}
void
}
}
-ADD_ACKNOWLEDGER (Paper_column_engraver, item);
-ADD_ACKNOWLEDGER (Paper_column_engraver, note_spacing);
-ADD_ACKNOWLEDGER (Paper_column_engraver, staff_spacing);
+
+void
+Paper_column_engraver::boot ()
+{
+ ADD_LISTENER (Paper_column_engraver, break);
+ ADD_LISTENER (Paper_column_engraver, label);
+ ADD_ACKNOWLEDGER (Paper_column_engraver, item);
+ ADD_ACKNOWLEDGER (Paper_column_engraver, note_spacing);
+ ADD_ACKNOWLEDGER (Paper_column_engraver, staff_spacing);
+}
ADD_TRANSLATOR (Paper_column_engraver,
/* doc */