MAJOR_VERSION=1
MINOR_VERSION=3
PATCH_LEVEL=108
-MY_PATCH_LEVEL=jcn3
+MY_PATCH_LEVEL=jcn4
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
\grace { \property Grace.graceAlignPosition = \right c16} c4
}
\paper {linewidth = -1.;}
-\midi{ }
+%%\midi{ }
}
}
}
+ if (now_column_l_ && !align_item_p_)
+ programming_error ("Align_note_column_engraver:: urg\n");
+ else
+
if (now_column_l_)
{
+
Align_interface::add_element (align_item_p_,now_column_l_);
now_column_l_ =0;
}
VIRTUAL_COPY_CONS (Translator);
protected:
- virtual bool do_try_music (Music*);
virtual void do_pre_move_processing ();
virtual void do_post_move_processing ();
virtual void do_removal_processing ();
virtual void acknowledge_element (Score_element_info);
- void deprecated_process_music ();
virtual void process_acknowledged ();
+
private:
void begin_beam ();
void consider_end_and_begin (Moment test_mom);
grouping_p_ = 0;
}
-bool
-Auto_beam_engraver::do_try_music (Music*)
-{
- return false;
-}
-
-void
-Auto_beam_engraver::deprecated_process_music ()
-{
- consider_end_and_begin (shortest_mom_);
-}
-
void
Auto_beam_engraver::consider_end_and_begin (Moment test_mom)
{
else
r = Moment (1);
- if (stem_l_arr_p_ && !r)
+ if (stem_l_arr_p_ && stem_l_arr_p_->size () > 1 && !r)
end_beam ();
-
+
/*
Allow already started autobeam to end
*/
if (!stem_l_arr_p_ && (!begin_mom || !r))
begin_beam ();
}
-
-void
-Auto_beam_engraver::begin_beam ()
-{
- assert (!stem_l_arr_p_);
- stem_l_arr_p_ = new Link_array<Item>;
- assert (!grouping_p_);
- grouping_p_ = new Beaming_info_list;
- beam_start_moment_ = now_mom ();
- beam_start_location_ = *unsmob_moment (get_property ("measurePosition"));
-}
-
Spanner*
Auto_beam_engraver::create_beam_p ()
{
return beam_p;
}
+void
+Auto_beam_engraver::begin_beam ()
+{
+ assert (!stem_l_arr_p_);
+ stem_l_arr_p_ = new Link_array<Item>;
+ assert (!grouping_p_);
+ grouping_p_ = new Beaming_info_list;
+ beam_start_moment_ = now_mom ();
+ beam_start_location_ = *unsmob_moment (get_property ("measurePosition"));
+}
+
+
+void
+Auto_beam_engraver::junk_beam ()
+{
+ assert (stem_l_arr_p_);
+
+ delete stem_l_arr_p_;
+ stem_l_arr_p_ = 0;
+ delete grouping_p_;
+ grouping_p_ = 0;
+ shortest_mom_ = Moment (1, 8);
+}
+
void
Auto_beam_engraver::end_beam ()
{
void
Auto_beam_engraver::do_pre_move_processing ()
{
+ if (stem_l_arr_p_)
+ {
+ Moment now = now_mom ();
+ if ((extend_mom_ < now)
+ || ((extend_mom_ == now) && (last_add_mom_ != now )))
+ {
+ end_beam ();
+ }
+ else if (!stem_l_arr_p_->size ())
+ {
+ junk_beam ();
+ }
+ }
typeset_beam ();
}
}
}
-void
-Auto_beam_engraver::junk_beam ()
-{
- assert (stem_l_arr_p_);
-
- delete stem_l_arr_p_;
- stem_l_arr_p_ = 0;
- delete grouping_p_;
- grouping_p_ = 0;
- shortest_mom_ = Moment (1, 8);
-}
-
void
Auto_beam_engraver::process_acknowledged ()
{
- deprecated_process_music ();
- if (stem_l_arr_p_)
- {
- Moment now = now_mom ();
- if ((extend_mom_ < now)
- || ((extend_mom_ == now) && (last_add_mom_ != now )))
- {
- end_beam ();
- }
- else if (!stem_l_arr_p_->size ())
- {
- junk_beam ();
- }
- }
+ if (!stem_l_arr_p_)
+ consider_end_and_begin (shortest_mom_);
}
{
Drul_array<Span_req*> reqs_drul_;
+ Link_array<Stem> stems_;
+
+
Spanner *finished_beam_p_;
Spanner *beam_p_;
Span_req * prev_start_req_;
}
- if (beam_p_ && !to_boolean (get_property ("weAreGraceContext")))
+ if (beam_p_ && !to_boolean (get_property ("weAreGraceContext")))
{
Score_engraver * e = 0;
Translator * t = daddy_grav_l ();
}
+void
+Engraver_group_engraver::process_acknowledged ()
+{
+
+ for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr ( p))
+ {
+ Translator * t = unsmob_translator (gh_car (p));
+ Engraver * eng = dynamic_cast<Engraver*> (t);
+ if (eng)
+ eng->process_acknowledged ();
+ }
+}
+
+void
+Engraver_group_engraver::acknowledge_elements ()
+{
+ for (int j =0; j < announce_info_arr_.size(); j++)
+ {
+ Score_element_info info = announce_info_arr_[j];
+ for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr (p))
+ {
+ Translator * t = unsmob_translator (gh_car (p));
+ Engraver * eng = dynamic_cast<Engraver*> (t);
+ if (eng && eng!= info.origin_trans_l_)
+ eng->acknowledge_element (info);
+ }
+ }
+}
+
void
Engraver_group_engraver::do_announces()
{
dynamic_cast<Engraver_group_engraver*> (t)->do_announces ();
}
+ process_acknowledged ();
+
// debug
int i = 0;
- do
+ while (announce_info_arr_.size () && i++ < 5)
{
- i++;
- for (int j =0; j < announce_info_arr_.size(); j++)
- {
- Score_element_info info = announce_info_arr_[j];
-
- if (i > 10)
- printf ("elt: %s\n",
- announce_info_arr_[j].elem_l_->name ().ch_C ());
- for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr (p))
- {
- Translator * t = unsmob_translator (gh_car (p));
- Engraver * eng = dynamic_cast<Engraver*> (t);
- if (eng && eng!= info.origin_trans_l_)
- eng->acknowledge_element (info);
- }
- }
+ acknowledge_elements ();
+ announce_info_arr_.clear ();
+ process_acknowledged ();
+ }
+
+ if (announce_info_arr_.size ())
+ {
+ printf ("do_announces: elt: %s\n",
+ announce_info_arr_[0].elem_l_->name ().ch_C ());
announce_info_arr_.clear ();
- for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr ( p))
- {
- Translator * t = unsmob_translator (gh_car (p));
- Engraver * eng = dynamic_cast<Engraver*> (t);
- if (eng)
- eng->process_acknowledged ();
- }
}
- while (announce_info_arr_.size ());
}
public:
VIRTUAL_COPY_CONS(Translator);
-
+
virtual void do_announces();
virtual void announce_element (Score_element_info);
+
+private:
+ void process_acknowledged ();
+ void acknowledge_elements ();
};
#endif // ENGRAVERGROUP_HH
class Bar_req_collect_engraver;
class Barcheck_req;
class Base_span_bar_engraver;
-class Bass_req;
class Beaming_info_list;
class Bezier;
class Bezier_bow;
class Identifier;
class Includable_lexer;
class Input;
-class Inversion_req;
class Item;
class Key_change_req;
class Key_performer;
class Timing_engraver;
class Timing_req;
class Timing_translator;
-class Tonic_req;
class Translation_property;
class Translator;
class Translator_change;
VIRTUAL_COPY_CONS(Music);
};
-/// specify tonic of a chord
-struct Tonic_req : public Melodic_req
-{
- VIRTUAL_COPY_CONS (Music);
-};
-
-/// specify inversion of a chord
-struct Inversion_req : public Melodic_req
-{
- VIRTUAL_COPY_CONS (Music);
-};
-
-/// specify bass of a chord
-struct Bass_req : public Melodic_req
-{
- VIRTUAL_COPY_CONS (Music);
-};
-
/*
Put a note of specified type, height, and with accidental on the staff.
/// force/supress printing of accidental.
virtual void announce_element (Audio_element_info);
protected:
Array<Audio_element_info> announce_info_arr_;
+
+private:
+ void process_acknowledged ();
+ void acknowledge_elements ();
};
#endif // PERFORMER_GROUP_PERFORMER_HH
Translator_group*get_default_interpreter();
-protected:
+public:
bool try_music_on_nongroup_children (Music *m);
-
- void deprecated_process_music ();
virtual void do_announces ();
virtual void do_add_processing ();
virtual bool do_try_music (Music* req_l);
bool try_music (Music*);
void pre_move_processing();
void add_processing ();
- void creation_processing ();
- void process_music();
void announces();
void post_move_processing();
void removal_processing();
SCM properties_scm_;
DECLARE_SMOBS(Translator, dummy);
public:
- /*
- UGH. Clean this up.
- */
- enum {
- ORPHAN,
- VIRGIN,
- CREATION_INITED,
- MOVE_INITED,
- ACCEPTED_REQS,
- PROCESSED_REQS,
- ACKED_REQS,
- MOVE_DONE
- } status_; // junkme
-protected:
-
- /*
- @see{try_request}
- Default: always return false
- */
+
virtual void do_add_processing ();
virtual bool do_try_music (Music *req_l);
virtual void do_pre_move_processing();
virtual void do_post_move_processing();
- void deprecated_process_music () ;
virtual void do_announces () ;
virtual void do_creation_processing() ;
virtual void do_removal_processing();
Translator_group * tg = t->instantiate (this);
tg->add_processing ();
+ tg->do_creation_processing ();
return dynamic_cast <Global_translator *> (tg);
}
note_req_l_arr_.push (n);
note_end_mom_ = note_end_mom_ >? now_mom () + m->length_mom ();
- return true;
- }
- else if ( dynamic_cast<Tonic_req*> (m))
- {
- return true;
- }
- else if ( dynamic_cast<Inversion_req*> (m))
- {
- return true;
- }
- else if (dynamic_cast<Bass_req*> (m))
- {
return true;
}
else if (dynamic_cast<Busy_playing_req*> (m))
+void
+Performer_group_performer::process_acknowledged ()
+{
+ for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr ( p))
+ {
+ Translator * t = unsmob_translator (gh_car (p));
+ Performer * eng = dynamic_cast<Performer*> (t);
+ if (eng)
+ eng->process_acknowledged ();
+ }
+}
+
+void
+Performer_group_performer::acknowledge_elements ()
+{
+ for (int j =0; j < announce_info_arr_.size(); j++)
+ {
+ Audio_element_info info = announce_info_arr_[j];
+
+ for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr (p))
+ {
+ Translator * t = unsmob_translator (gh_car (p));
+ Performer * eng = dynamic_cast<Performer*> (t);
+ if (eng && eng!= info.origin_trans_l_)
+ eng->acknowledge_element (info);
+ }
+ }
+}
+
void
Performer_group_performer::do_announces()
{
Translator * t = unsmob_translator (gh_car (p));
dynamic_cast<Performer_group_performer*> (t)->do_announces ();
}
+
+ process_acknowledged ();
+
// debug
int i = 0;
- do
- {
- i++;
- for (int j =0; j < announce_info_arr_.size(); j++)
- {
- Audio_element_info info = announce_info_arr_[j];
-
- if (i > 10)
- {
- printf ("elt: %s\n",
- classname (announce_info_arr_[j].elem_l_));
- announce_info_arr_.clear ();
- }
-
- for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr (p))
- {
- Translator * t = unsmob_translator (gh_car (p));
- Performer * eng = dynamic_cast<Performer*> (t);
- if (eng && eng!= info.origin_trans_l_)
- eng->acknowledge_element (info);
- }
- }
+ while (announce_info_arr_.size () && i++ < 5)
+ {
+ acknowledge_elements ();
+ announce_info_arr_.clear ();
+ process_acknowledged ();
+ }
+
+ if (announce_info_arr_.size ())
+ {
+ printf ("do_announces: elt: %s\n",
+ classname (announce_info_arr_[0].elem_l_));
announce_info_arr_.clear ();
- for (SCM p = simple_trans_list_; gh_pair_p (p); p = gh_cdr ( p))
- {
- Translator * t = unsmob_translator (gh_car (p));
- Performer * eng = dynamic_cast<Performer*> (t);
- if (eng)
- eng->process_acknowledged ();
- }
}
- while (announce_info_arr_.size ());
}
{
Global_translator::prepare (w);
- set_columns (new Paper_column (get_property (ly_symbol2scm ("NonMusicalPaperColumn"))),
- new Paper_column (get_property (ly_symbol2scm ("PaperColumn"))));
-
- command_column_l_->set_elt_property ("when", w.smobbed_copy());
- musical_column_l_->set_elt_property ("when", w.smobbed_copy());
- command_column_l_->set_elt_property ("breakable", SCM_BOOL_T);
-
- Score_element_info i1(command_column_l_, 0), i2 (musical_column_l_,0);
- i1.origin_trans_l_ = this;
- i2.origin_trans_l_ = this;
- announce_element (i1);
- announce_element (i2);
+ /*
+ ugh.
+ */
+ if (!command_column_l_
+ || *unsmob_moment (command_column_l_->get_elt_property ("when")) != w)
+ {
+ set_columns (new Paper_column (get_property (ly_symbol2scm ("NonMusicalPaperColumn"))),
+ new Paper_column (get_property (ly_symbol2scm ("PaperColumn"))));
+ command_column_l_->set_elt_property ("when", w.smobbed_copy());
+ musical_column_l_->set_elt_property ("when", w.smobbed_copy());
+ command_column_l_->set_elt_property ("breakable", SCM_BOOL_T);
+
+ Score_element_info i1(command_column_l_, 0), i2 (musical_column_l_,0);
+
+ i1.origin_trans_l_ = this;
+ i2.origin_trans_l_ = this;
+ announce_element (i1);
+ announce_element (i2);
+ }
post_move_processing();
}
void
Score_engraver::do_creation_processing ()
{
+ prepare (Moment (0));
scoreline_l_ = pscore_p_->line_l_;
scoreline_l_->set_bound(LEFT, command_column_l_);
void
Score_engraver::typeset_element (Score_element *elem_p)
{
- elem_p_arr_.push (elem_p);
+ if (!elem_p)
+ programming_error ("Score_engraver: empty elt\n");
+ else
+
+ elem_p_arr_.push (elem_p);
}
instrument_p_ = new Audio_instrument (str);
announce_element (Audio_element_info (instrument_p_, 0));
}
- Performer_group_performer::deprecated_process_music ();
+ // Performer_group_performer::deprecated_process_music ();
}
void
void
Staff_symbol_engraver::acknowledge_element (Score_element_info s)
{
- ////// assert (span_p_);
- ////// ik weet 't zo onderhand echt niet meer
- ///// if (!span_p_)
- ///// do_creation_processing ();
- if (!span_p_)
- {
- status_ = VIRGIN;
- creation_processing ();
- }
- s.elem_l_->set_elt_property ("staff-symbol", span_p_->self_scm ());
+ s.elem_l_->set_elt_property ("staff-symbol", span_p_->self_scm ());
+
+ // remove this. probly not necessary?
s.elem_l_->add_dependency (span_p_); // UGH. UGH. UGH
}
*/
class Time_signature_engraver : public Engraver {
protected:
- void deprecated_process_music();
virtual void do_pre_move_processing();
+ virtual void process_acknowledged ();
public:
VIRTUAL_COPY_CONS(Translator);
Item * time_signature_p_;
}
void
-Time_signature_engraver::deprecated_process_music()
+Time_signature_engraver::process_acknowledged()
{
/*
not rigorously safe, since the value might get GC'd and
last_time_fraction_ = fr;
time_signature_p_ = new Item (get_property ("TimeSignature"));
time_signature_p_->set_elt_property ("fraction",fr);
+
+ if (time_signature_p_)
+ announce_element (time_signature_p_, 0);
}
- if (time_signature_p_)
- announce_element (time_signature_p_, 0);
}
+
+
void
Time_signature_engraver::do_pre_move_processing()
{
SCM which = get_property ("whichBar");
if (!gh_string_p (which))
- which = now_mom () ? SCM_EOL : ly_str02scm ("|");
+ which = now_mom ()
+ ? SCM_EOL : ly_str02scm ("|");
if (!gh_string_p (which) && !to_boolean (nonauto))
{
t->daddy_trans_l_ = this;
t->output_def_l_ = output_def_l_;
t->add_processing ();
-
+ t->do_creation_processing ();
return list;
}
void
each (&Translator::post_move_processing);
}
-void
-Translator_group::deprecated_process_music ()
-{
- assert (0);
- each (&Translator::process_music);
-}
-
void
Translator_group::do_announces ()
{
void
Translator_group::do_creation_processing ()
{
- each (&Translator::creation_processing);
+ each (&Translator::do_creation_processing);
}
void
void
Translator::init ()
{
- status_ = ORPHAN;
simple_trans_list_ = SCM_EOL;
trans_group_list_ = SCM_EOL;
properties_scm_ = SCM_EOL;
void
Translator::add_processing ()
{
- if (status_ > ORPHAN)
- return;
-
do_add_processing ();
- status_ = VIRGIN;
}
void
{
}
-void
-Translator::creation_processing ()
-{
- if (status_ >= CREATION_INITED)
- return ;
-
- do_creation_processing ();
- status_ = CREATION_INITED;
-}
void
Translator::post_move_processing ()
{
- if (status_ >= MOVE_INITED)
- return;
-
- creation_processing ();
do_post_move_processing ();
- status_ = MOVE_INITED;
}
void
Translator::removal_processing ()
{
- if (status_ == ORPHAN)
- return;
- creation_processing ();
do_removal_processing ();
}
bool
Translator::try_music (Music * r)
{
- if (status_ < MOVE_INITED)
- post_move_processing ();
-
return do_try_music (r);
}
-
-void
-Translator::process_music ()
-{
- assert (0);
- if (status_ < PROCESSED_REQS)
- post_move_processing ();
- else if (status_ >= PROCESSED_REQS)
- return;
-
- status_ = PROCESSED_REQS;
- deprecated_process_music ();
-}
-
-//////////
-static int te_vroeg = 0;
void
Translator::announces ()
{
- #if 0
- if (te_vroeg && te_vroeg < 2)
- {
- do_creation_processing ();
- te_vroeg++;
- }
- #endif
- if (status_ < PROCESSED_REQS)
- post_move_processing ();
- else if (status_ >= PROCESSED_REQS)
- return;
-
- status_ = PROCESSED_REQS;
do_announces ();
}
Translator::pre_move_processing ()
{
do_pre_move_processing ();
- status_ = CREATION_INITED;
}
{
}
-void
-Translator::deprecated_process_music ()
-{
-}
-
void
Translator::do_announces ()
{
}
-////////////
void
Translator::do_creation_processing ()
{
- te_vroeg++;
}
void