+2006-06-19 Han-Wen Nienhuys <hanwen@lilypond.org>
+
+ * lily/tab-staff-symbol-engraver.cc: derive from Engraver, not
+ Staff_symbol_engraver
+
+ * ly/engraver-init.ly (AncientRemoveEmptyStaffContext): don't
+ replace staff_engraver
+
+ * lily/staff-symbol-engraver.cc (stop_spanner): announce end of
+ spanner.
+
+ * lily/staff-collecting-engraver.cc
+ (acknowledge_end_staff_symbol): new function
+
+ * lily/volta-engraver.cc (acknowledge_end_staff_symbol): new function.
+
+ * lily/staff-collecting-engraver.cc
+ (acknowledge_end_staff_symbol): new function.
+
+ * lily/main.cc: switch on relocation by default.
+
2006-06-18 Han-Wen Nienhuys <hanwen@lilypond.org>
* lily/spacing-spanner.cc (musical_column_spacing): set
-/*
- staff-symbol-engraver.hh -- declare Staff_symbol_engraver
-
- source file of the GNU LilyPond music typesetter
-
- (c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
-*/
-
-#ifndef STAFF_SYMBOL_ENGRAVER_HH
-#define STAFF_SYMBOL_ENGRAVER_HH
-
-#include "engraver.hh"
-#include "drul-array.hh"
-
-class Staff_symbol_engraver : public Engraver
-{
-public:
- TRANSLATOR_DECLARATIONS (Staff_symbol_engraver);
-
-private:
-
-protected:
- Drul_array<Music *> span_events_;
- Spanner *span_;
- Spanner *finished_span_;
- bool first_start_;
-
-protected:
- virtual void start_spanner ();
- virtual void stop_spanner ();
-
- void stop_translation_timestep ();
- virtual bool try_music (Music *);
- virtual ~Staff_symbol_engraver ();
- DECLARE_ACKNOWLEDGER (grob);
- virtual void finalize ();
- void process_music ();
-};
-
-#endif /* STAFF_SYMBOL_ENGRAVER_HH */
bool relocate_binary =
-#if ARGV0_RELOCATION
+#if 1
true;
#else
false
public:
TRANSLATOR_DECLARATIONS (Staff_collecting_engraver);
DECLARE_ACKNOWLEDGER (staff_symbol);
+ DECLARE_END_ACKNOWLEDGER (staff_symbol);
};
Staff_collecting_engraver::Staff_collecting_engraver ()
context ()->set_property ("stavesFound", staffs);
}
+void
+Staff_collecting_engraver::acknowledge_end_staff_symbol (Grob_info gi)
+{
+ SCM staffs = get_property ("stavesFound");
+ staffs = scm_delq (gi.grob ()->self_scm (), staffs);
+
+ context ()->set_property ("stavesFound", staffs);
+}
+
#include "translator.icc"
ADD_ACKNOWLEDGER (Staff_collecting_engraver, staff_symbol);
+ADD_END_ACKNOWLEDGER (Staff_collecting_engraver, staff_symbol);
ADD_TRANSLATOR (Staff_collecting_engraver,
/* doc */ "Maintain the stavesFound variable",
(c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
-#include "staff-symbol-engraver.hh"
#include "spanner.hh"
+#include "engraver.hh"
+
+class Staff_symbol_engraver : public Engraver
+{
+public:
+ TRANSLATOR_DECLARATIONS (Staff_symbol_engraver);
+
+protected:
+ Drul_array<Music *> span_events_;
+ Spanner *span_;
+ Spanner *finished_span_;
+ bool first_start_;
+
+protected:
+ virtual void start_spanner ();
+ virtual void stop_spanner ();
+
+ void stop_translation_timestep ();
+ virtual bool try_music (Music *);
+ virtual ~Staff_symbol_engraver ();
+ DECLARE_ACKNOWLEDGER (grob);
+ virtual void finalize ();
+ void process_music ();
+};
Staff_symbol_engraver::~Staff_symbol_engraver ()
{
void
Staff_symbol_engraver::stop_spanner ()
{
- if (finished_span_ && !finished_span_->get_bound (RIGHT))
+ if (!finished_span_)
+ return;
+
+ if (!finished_span_->get_bound (RIGHT))
finished_span_->set_bound (RIGHT, unsmob_grob (get_property ("currentCommandColumn")));
+
+ announce_end_grob (finished_span_,
+ span_events_[STOP]
+ ? span_events_[STOP]->self_scm ()
+ : SCM_EOL);
+
finished_span_ = 0;
}
(c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
-#include "staff-symbol-engraver.hh"
+#include "engraver.hh"
#include "spanner.hh"
-class Tab_staff_symbol_engraver : public Staff_symbol_engraver
+class Tab_staff_symbol_engraver : public Engraver
{
public:
TRANSLATOR_DECLARATIONS (Tab_staff_symbol_engraver);
protected:
- virtual void start_spanner ();
+ DECLARE_ACKNOWLEDGER(staff_symbol);
};
void
-Tab_staff_symbol_engraver::start_spanner ()
+Tab_staff_symbol_engraver::acknowledge_staff_symbol (Grob_info gi)
{
- bool init = !span_;
- Staff_symbol_engraver::start_spanner ();
- if (init)
- {
- int k = scm_ilength (get_property ("stringTunings"));
- if (k >= 0)
- span_->set_property ("line-count", scm_from_int (k));
- }
+ int k = scm_ilength (get_property ("stringTunings"));
+ if (k >= 0)
+ gi.grob ()->set_property ("line-count", scm_from_int (k));
}
Tab_staff_symbol_engraver::Tab_staff_symbol_engraver ()
#include "translator.icc"
-ADD_ACKNOWLEDGER (Tab_staff_symbol_engraver, grob);
+ADD_ACKNOWLEDGER (Tab_staff_symbol_engraver, staff_symbol);
ADD_TRANSLATOR (Tab_staff_symbol_engraver,
- /* doc */ "Create a staff-symbol, but look at stringTunings for the number of lines."
- "staff lines.",
+ /* doc */
+ "Create a staff-symbol, but look at "
+ "stringTunings for the number of lines. "
+ ,
/* create */ "StaffSymbol",
/* accept */ "staff-span-event",
/* read */ "stringTunings",
TRANSLATOR_DECLARATIONS (Volta_engraver);
protected:
+ DECLARE_END_ACKNOWLEDGER (staff_symbol);
DECLARE_ACKNOWLEDGER (staff_symbol);
DECLARE_ACKNOWLEDGER (note_column);
DECLARE_ACKNOWLEDGER (bar_line);
Volta_bracket_interface::add_bar (end_volta_span_, i.item ());
}
+void
+Volta_engraver::acknowledge_end_staff_symbol (Grob_info i)
+{
+ if (i.grob ()->self_scm () == staff_)
+ staff_ = SCM_EOL;
+}
+
void
Volta_engraver::acknowledge_staff_symbol (Grob_info i)
{
staff_ = i.grob ()->self_scm ();
}
+
void
Volta_engraver::finalize ()
{
TODO: should attach volta to paper-column if no bar is found.
*/
ADD_ACKNOWLEDGER (Volta_engraver, staff_symbol);
+ADD_END_ACKNOWLEDGER (Volta_engraver, staff_symbol);
ADD_ACKNOWLEDGER (Volta_engraver, note_column);
ADD_ACKNOWLEDGER (Volta_engraver, bar_line);
ADD_TRANSLATOR (Volta_engraver,
\alias "Staff"
\name "TabStaff"
\denies "Voice"
- \remove "Staff_symbol_engraver"
\consists "Tab_staff_symbol_engraver"
\description "Context for generating tablature. [DOCME]"