2 vertically-spaced-contexts-engraver.cc -- implement Vertically_spaced_contexts_engraver
4 source file of the GNU LilyPond music typesetter
6 (c) 2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
11 #include "axis-group-interface.hh"
13 #include "pointer-group-interface.hh"
15 class Vertically_spaced_contexts_engraver : public Engraver
17 TRANSLATOR_DECLARATIONS (Vertically_spaced_contexts_engraver);
19 virtual void initialize ();
20 DECLARE_ACKNOWLEDGER (vertically_spaceable);
27 Vertically_spaced_contexts_engraver::Vertically_spaced_contexts_engraver ()
33 Vertically_spaced_contexts_engraver::initialize ()
35 system_ = unsmob_grob (get_property ("rootSystem"));
39 Vertically_spaced_contexts_engraver::acknowledge_vertically_spaceable (Grob_info gi)
41 if (Axis_group_interface::has_interface (gi.grob ()))
43 SCM spaceable = get_property ("verticallySpacedContexts");
44 Context *orig = gi.origin_contexts (this)[0];
46 if (scm_memq (ly_symbol2scm (orig->context_name ().to_str0 ()),
47 spaceable) != SCM_BOOL_F)
49 Pointer_group_interface::add_grob (system_,
50 ly_symbol2scm ("spaceable-staves"),
56 #include "translator.icc"
58 ADD_ACKNOWLEDGER (Vertically_spaced_contexts_engraver, vertically_spaceable);
59 ADD_TRANSLATOR (Vertically_spaced_contexts_engraver,
63 /* read */ "verticallySpacedContexts",
64 /* write */ "verticallySpacedContexts");