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>
10 #include "engraver.hh"
12 #include "axis-group-interface.hh"
14 #include "pointer-group-interface.hh"
16 class Vertically_spaced_contexts_engraver : public Engraver
18 TRANSLATOR_DECLARATIONS(Vertically_spaced_contexts_engraver);
20 virtual void acknowledge_grob (Grob_info);
21 virtual void initialize ();
29 Vertically_spaced_contexts_engraver::Vertically_spaced_contexts_engraver ()
35 Vertically_spaced_contexts_engraver::initialize ()
37 system_ = unsmob_grob (get_property ("rootSystem"));
41 Vertically_spaced_contexts_engraver::acknowledge_grob (Grob_info gi)
43 if (Axis_group_interface::has_interface (gi.grob ())
44 && gi.grob ()->internal_has_interface (ly_symbol2scm ("vertically-spaceable-interface")))
46 SCM spaceable = get_property ("verticallySpacedContexts");
47 Context *orig = gi.origin_contexts (this)[0];
49 if (scm_memq (ly_symbol2scm (orig->context_name ().to_str0 ()),
50 spaceable) != SCM_BOOL_F)
52 Pointer_group_interface::add_grob (system_,
53 ly_symbol2scm ("spaceable-staves"),
59 #include "translator.icc"
61 ADD_TRANSLATOR (Vertically_spaced_contexts_engraver,
65 /* acks */ "axis-group-interface",
66 /* reads */ "verticallySpacedContexts",
67 /* write */ "verticallySpacedContexts");