source file of the GNU LilyPond music typesetter
- (c) 1999--2002 Jan Nieuwenhuizen <janneke@gnu.org>
+ (c) 1999--2004 Jan Nieuwenhuizen <janneke@gnu.org>
*/
protected:
virtual void stop_translation_timestep ();
virtual void start_translation_timestep ();
+ virtual void process_music ();
virtual void finalize ();
virtual void acknowledge_grob (Grob_info);
virtual void process_acknowledged_grobs ();
Beaming_info_list*finished_grouping_;
};
+void
+Auto_beam_engraver::process_music ()
+{
+ if (gh_string_p (get_property ("whichBar")))
+ {
+ consider_end (shortest_mom_);
+ junk_beam ();
+ }
+}
Auto_beam_engraver::Auto_beam_engraver ()
}
/* second guess: property generic time exception */
- SCM m = gh_assoc (gh_append3 (function, wild, time), settings);
+ SCM m = scm_assoc (gh_append3 (function, wild, time), settings);
if (m != SCM_BOOL_F && unsmob_moment (ly_cdr (m)))
moment = * unsmob_moment (ly_cdr (m));
/* third guess: property time exception, specific for duration type */
- m = gh_assoc (gh_append3 (function, type, time), settings);
+ m = scm_assoc (gh_append3 (function, type, time), settings);
if (m != SCM_BOOL_F && unsmob_moment (ly_cdr (m)))
moment = * unsmob_moment (ly_cdr (m));
/* fourth guess [user override]: property plain generic */
- m = gh_assoc (gh_append3 (function, wild, wild), settings);
+ m = scm_assoc (gh_append3 (function, wild, wild), settings);
if (m != SCM_BOOL_F && unsmob_moment (ly_cdr (m)))
moment = * unsmob_moment (ly_cdr (m));
/* fifth guess [user override]: property plain, specific for duration type */
- m = gh_assoc (gh_append3 (function, type, wild), settings);
+ m = scm_assoc (gh_append3 (function, type, wild), settings);
if (m != SCM_BOOL_F && unsmob_moment (ly_cdr (m)))
moment = * unsmob_moment (ly_cdr (m));
void
Auto_beam_engraver::begin_beam ()
{
- assert (!stems_);
+ if (stems_ || grouping_ )
+ {
+ programming_error ("already have autobeam");
+ return;
+ }
+
stems_ = new Link_array<Item>;
- assert (!grouping_);
grouping_ = new Beaming_info_list;
beam_settings_ = get_property ("Beam");
beat_length_ = *unsmob_moment (get_property ("beatLength"));
}
-
void
Auto_beam_engraver::junk_beam ()
{
- assert (stems_);
+ if (!stems_)
+ return ;
delete stems_;
stems_ = 0;
junk_beam ();
}
else
-
{
finished_beam_ = create_beam ();
if (finished_beam_)
}
}
}
-
- /*
- count_++ ->
-
- auto-beam-engraver.cc:459: warning: value computed is not used (gcc: 2.96) */
- count_ = count_ + 1;
+
+ count_ ++;
}
ENTER_DESCRIPTION (Auto_beam_engraver,
-/* descr */ "Generate beams based on measure characteristics and observed
-Stems. Uses beatLength, measureLength and measurePosition to decide
-when to start and stop a beam. Overriding beaming is done through
-@ref{Stem_engraver} properties stemLeftBeamCount and
-stemRightBeamCount.
-",
+/* descr */ "Generate beams based on measure characteristics and observed "
+"Stems. Uses beatLength, measureLength and measurePosition to decide "
+"when to start and stop a beam. Overriding beaming is done through "
+"@ref{Stem_engraver} properties stemLeftBeamCount and "
+"stemRightBeamCount. "
+,
/* creats*/ "Beam",
/* accepts */ "",
/* acks */ "stem-interface rest-interface beam-interface bar-line-interface",