/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 1998--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 1998--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
class Beam_engraver : public Engraver
{
public:
- DECLARE_ACKNOWLEDGER (stem);
- DECLARE_ACKNOWLEDGER (rest);
+ void acknowledge_stem (Grob_info);
+ void acknowledge_rest (Grob_info);
protected:
Stream_event *start_ev_;
virtual bool valid_start_point ();
virtual bool valid_end_point ();
- DECLARE_TRANSLATOR_LISTENER (beam);
+ void listen_beam (Stream_event *);
public:
TRANSLATOR_DECLARATIONS (Beam_engraver);
};
prev_start_ev_ = 0;
}
-IMPLEMENT_TRANSLATOR_LISTENER (Beam_engraver, beam);
void
Beam_engraver::listen_beam (Stream_event *ev)
{
if (beam_
&& !scm_is_number (info.grob ()->get_property_data ("staff-position")))
chain_offset_callback (info.grob (),
- ly_make_unpure_pure_container
+ Unpure_pure_container::make_smob
(Beam::rest_collision_callback_proc,
Beam::pure_rest_collision_callback_proc),
Y_AXIS);
last_stem_added_at_ = now;
- Duration *stem_duration = unsmob_duration (ev->get_property ("duration"));
+ Duration *stem_duration = unsmob<Duration> (ev->get_property ("duration"));
int durlog = stem_duration->duration_log ();
- //int durlog = unsmob_duration (ev->get_property ("duration"))->duration_log ();
+ //int durlog = unsmob<Duration> (ev->get_property ("duration"))->duration_log ();
if (durlog <= 2)
{
ev->origin ()->warning (_ ("stem does not fit in beam"));
max (durlog - 2, 0),
Stem::is_invisible (stem),
stem_duration->factor (),
- (stem->get_property ("tuplet-start") == SCM_BOOL_T));
+ (to_boolean (stem->get_property ("tuplet-start"))));
Beam::add_stem (beam_, stem);
}
-ADD_ACKNOWLEDGER (Beam_engraver, stem);
-ADD_ACKNOWLEDGER (Beam_engraver, rest);
+
+void
+Beam_engraver::boot ()
+{
+ ADD_LISTENER (Beam_engraver, beam);
+ ADD_ACKNOWLEDGER (Beam_engraver, stem);
+ ADD_ACKNOWLEDGER (Beam_engraver, rest);
+}
ADD_TRANSLATOR (Beam_engraver,
/* doc */
{
public:
TRANSLATOR_DECLARATIONS (Grace_beam_engraver);
-
- DECLARE_TRANSLATOR_LISTENER (beam);
+ TRANSLATOR_INHERIT (Beam_engraver);
+ void listen_beam (Stream_event *);
protected:
virtual bool valid_start_point ();
/*
Ugh, C&P code.
*/
-IMPLEMENT_TRANSLATOR_LISTENER (Grace_beam_engraver, beam);
void
Grace_beam_engraver::listen_beam (Stream_event *ev)
{
stop_ev_ = ev;
}
-ADD_ACKNOWLEDGER (Grace_beam_engraver, stem);
-ADD_ACKNOWLEDGER (Grace_beam_engraver, rest);
+
+void
+Grace_beam_engraver::boot ()
+{
+ ADD_LISTENER (Grace_beam_engraver, beam);
+ ADD_ACKNOWLEDGER (Beam_engraver, stem);
+ ADD_ACKNOWLEDGER (Beam_engraver, rest);
+}
ADD_TRANSLATOR (Grace_beam_engraver,
/* doc */