X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpitch-squash-engraver.cc;h=98607e15bb05b264a2c4c4bbd83dc6acd53beddc;hb=de2b6d04ee98783f86b02047e41ee672f97a813d;hp=fbe88a330090db0677dc5c4f24c4880199abd755;hpb=40c8e12b8afa8e9c7e44cf6ea3b724295884091b;p=lilypond.git diff --git a/lily/pitch-squash-engraver.cc b/lily/pitch-squash-engraver.cc index fbe88a3300..98607e15bb 100644 --- a/lily/pitch-squash-engraver.cc +++ b/lily/pitch-squash-engraver.cc @@ -3,23 +3,44 @@ source file of the GNU LilyPond music typesetter - (c) 1997--2000 Han-Wen Nienhuys + (c) 1997--2003 Han-Wen Nienhuys */ #include "staff-symbol-referencer.hh" - -#include "pitch-squash-engraver.hh" +#include "note-head.hh" #include "rhythmic-head.hh" +#include "engraver.hh" + +class Pitch_squash_engraver : public Engraver { +public: + TRANSLATOR_DECLARATIONS(Pitch_squash_engraver); + virtual void acknowledge_grob (Grob_info); +}; + void -Pitch_squash_engraver::acknowledge_element (Score_element_info i) +Pitch_squash_engraver::acknowledge_grob (Grob_info i) { - if (to_boolean (i.elem_l_->get_elt_property ("note-head-interface"))) + SCM newpos = get_property ("squashedPosition"); + if (Note_head::has_interface (i.grob_)) { - Staff_symbol_referencer_interface (i.elem_l_).set_position(0); + i.grob_->set_grob_property ("staff-position", newpos); } } -ADD_THIS_TRANSLATOR (Pitch_squash_engraver); +Pitch_squash_engraver::Pitch_squash_engraver() +{ +} + +ENTER_DESCRIPTION(Pitch_squash_engraver, +/* descr */ "Treat all pitches as middle C. Note that the notes move, but " +"the locations of accidentals stay the same. " +"Set the position field of all note heads to zero. This useful for " +"making a single line staff that demonstrates the rhythm of a melody.", +/* creats*/ "", +/* accepts */ "", +/* acks */ "note-head-interface", +/* reads */ "squashedPosition", +/* write */ "");