]> git.donarmstrong.com Git - lilypond.git/commitdiff
Deletes the Hara_kiri_engraver.
authorMike Solomon <mike@apollinemike.com>
Sat, 26 Jan 2013 06:58:46 +0000 (07:58 +0100)
committerMike Solomon <mike@apollinemike.com>
Sat, 26 Jan 2013 06:58:46 +0000 (07:58 +0100)
Places this functionality in the Axis_group_engraver, simplifying
the code and making it easier to maintain.

lily/axis-group-engraver.cc
lily/hara-kiri-engraver.cc [deleted file]
lily/include/axis-group-engraver.hh [deleted file]
lily/include/lily-proto.hh
ly/context-mods-init.ly
ly/engraver-init.ly
scm/define-context-properties.scm

index 3823c3498484cbe9f1cc9e75a035ee1753284960..a19ab52af89dcd0d52f74ec3e9e2922308322c89 100644 (file)
   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#include "axis-group-engraver.hh"
+#include "engraver.hh"
 
 #include "axis-group-interface.hh"
+#include "hara-kiri-group-spanner.hh"
 #include "pointer-group-interface.hh"
 #include "context.hh"
 #include "international.hh"
 
 #include "translator.icc"
 
+/**
+   Put stuff in a Spanner with an Axis_group_interface.
+   Use as last element of a context.
+*/
+class Axis_group_engraver : public Engraver
+{
+protected:
+  Spanner *staffline_;
+  SCM interesting_;
+  vector<Grob *> elts_;
+  void process_music ();
+  virtual void finalize ();
+  DECLARE_ACKNOWLEDGER (grob);
+  void process_acknowledged ();
+  virtual Spanner *get_spanner ();
+  virtual void add_element (Grob *);
+  virtual bool must_be_last () const;
+  virtual void derived_mark () const;
+
+public:
+  TRANSLATOR_DECLARATIONS (Axis_group_engraver);
+};
+
+
 Axis_group_engraver::Axis_group_engraver ()
 {
   staffline_ = 0;
+  interesting_ = SCM_EOL;
+}
+
+void
+Axis_group_engraver::derived_mark () const
+{
+  scm_gc_mark (interesting_);
 }
 
+
 bool
 Axis_group_engraver::must_be_last () const
 {
@@ -48,6 +81,7 @@ Axis_group_engraver::process_music ()
       Grob *it = unsmob_grob (get_property ("currentCommandColumn"));
       staffline_->set_bound (LEFT, it);
     }
+  interesting_ = get_property ("keepAliveInterfaces");
 }
 
 Spanner *
@@ -82,6 +116,15 @@ Axis_group_engraver::acknowledge_grob (Grob_info i)
     return;
   }
   elts_.push_back (i.grob ());
+
+  if (staffline_ && to_boolean(staffline_->get_property("remove-empty")))
+    {
+      for (SCM s = interesting_; scm_is_pair (s); s = scm_cdr (s))
+        {
+          if (i.grob ()->internal_has_interface (scm_car (s)))
+            Hara_kiri_group_spanner::add_interesting_item (staffline_, i.grob ());
+        }
+    }
 }
 
 /*
@@ -131,7 +174,8 @@ ADD_TRANSLATOR (Axis_group_engraver,
                 "VerticalAxisGroup ",
 
                 /* read */
-                "currentCommandColumn ",
+                "currentCommandColumn "
+                "keepAliveInterfaces ",
 
                 /* write */
                 ""
diff --git a/lily/hara-kiri-engraver.cc b/lily/hara-kiri-engraver.cc
deleted file mode 100644 (file)
index 243d9cb..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-  This file is part of LilyPond, the GNU music typesetter.
-
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
-  LilyPond is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  LilyPond is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "axis-group-engraver.hh"
-#include "hara-kiri-group-spanner.hh"
-#include "rhythmic-head.hh"
-#include "spanner.hh"
-
-#include "translator.icc"
-
-/*
-  TODO: fold together with axis_group_engraver?
- */
-
-class Hara_kiri_engraver : public Axis_group_engraver
-{
-protected:
-  virtual Spanner *get_spanner ();
-  DECLARE_ACKNOWLEDGER (grob);
-  virtual void add_element (Grob *e);
-  void process_music ();
-  virtual void derived_mark () const;
-  SCM interesting_;
-public:
-  TRANSLATOR_DECLARATIONS (Hara_kiri_engraver);
-};
-
-Hara_kiri_engraver::Hara_kiri_engraver ()
-{
-  interesting_ = SCM_EOL;
-}
-
-void
-Hara_kiri_engraver::derived_mark () const
-{
-  scm_gc_mark (interesting_);
-}
-
-void
-Hara_kiri_engraver::process_music ()
-{
-  Axis_group_engraver::process_music ();
-  interesting_ = get_property ("keepAliveInterfaces");
-}
-
-void
-Hara_kiri_engraver::add_element (Grob *e)
-{
-  Axis_group_engraver::add_element (e);
-}
-
-Spanner *
-Hara_kiri_engraver::get_spanner ()
-{
-  Spanner *sp = make_spanner ("VerticalAxisGroup", SCM_EOL);
-  return sp;
-}
-
-void
-Hara_kiri_engraver::acknowledge_grob (Grob_info i)
-{
-  Axis_group_engraver::acknowledge_grob (i);
-  if (staffline_)
-    {
-      for (SCM s = interesting_; scm_is_pair (s); s = scm_cdr (s))
-        {
-          if (i.grob ()->internal_has_interface (scm_car (s)))
-            Hara_kiri_group_spanner::add_interesting_item (staffline_, i.grob ());
-        }
-    }
-}
-
-ADD_ACKNOWLEDGER (Hara_kiri_engraver, grob);
-ADD_TRANSLATOR (Hara_kiri_engraver,
-                /* doc */
-                "Like @code{Axis_group_engraver}, but make a hara-kiri"
-                " spanner, and add interesting items (i.e., note heads, lyric"
-                " syllables, and normal rests).",
-
-                /* create */
-                "VerticalAxisGroup ",
-
-                /* read */
-                "keepAliveInterfaces ",
-
-                /* write */
-                ""
-               );
-
diff --git a/lily/include/axis-group-engraver.hh b/lily/include/axis-group-engraver.hh
deleted file mode 100644 (file)
index 9f87aa3..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-  This file is part of LilyPond, the GNU music typesetter.
-
-  Copyright (C) 2005--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
-  LilyPond is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  LilyPond is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#ifndef AXIS_GROUP_ENGRAVER_HH
-#define AXIS_GROUP_ENGRAVER_HH
-
-#include "engraver.hh"
-
-/**
-   Put stuff in a Spanner with an Axis_group_interface.
-   Use as last element of a context.
-*/
-class Axis_group_engraver : public Engraver
-{
-protected:
-  Spanner *staffline_;
-  vector<Grob *> elts_;
-  void process_music ();
-  virtual void finalize ();
-  DECLARE_ACKNOWLEDGER (grob);
-  void process_acknowledged ();
-  virtual Spanner *get_spanner ();
-  virtual void add_element (Grob *);
-  virtual bool must_be_last () const;
-
-public:
-  TRANSLATOR_DECLARATIONS (Axis_group_engraver);
-};
-#endif /* AXIS_GROUP_ENGRAVER_HH */
index 9ecb1b44aaf377c089302ca7e870251f6ba25b60..e726c4abe57d6796eb0c133ca5cecc56cc8140e2 100644 (file)
@@ -80,7 +80,6 @@ class Grace_music;
 class Grob;
 class Grob_array;
 class Grob_info;
-class Hara_kiri_engraver;
 class Hara_kiri_line_group_engraver;
 class Includable_lexer;
 class Input;
index c4378a8e6629537e9b0cec985b1ec5e2eaa0e230..b57fd713372f74149187fceb37a7f8077ab9180a 100644 (file)
 \version "2.17.6"
 
 RemoveEmptyStaves = \with {
-  \remove "Axis_group_engraver"
-  % If RemoveEmptyStaves is called twice, two
-  % Hara_kiri_engravers would be added, which leads to a
-  % warning.
-  % This code makes sure that no previous Hara_kiri_engraver
-  % is left before adding a new one.
-  \remove "Hara_kiri_engraver"
-  \consists "Hara_kiri_engraver"
   \override VerticalAxisGroup.remove-empty = ##t
   \description "Remove staves which are considered to be empty according
 to the list of interfaces set by @code{keepAliveInterfaces}."
index a786ebcb7e20ecc113a3bd94a57672ba34368745..cd25300e3f6b0a6766dd2f48e2fe5e43d7a1f53d 100644 (file)
@@ -37,7 +37,7 @@
 
   \consists "Fretboard_engraver"
   \consists "Output_property_engraver"
-  \consists "Hara_kiri_engraver"
+  \consists "Axis_group_engraver"
   \consists "Separating_line_group_engraver"
   \consists "Font_size_engraver"
   \consists "Instrument_name_engraver"
@@ -441,7 +441,7 @@ printing of a single line of lyrics."
   \consists "Stanza_number_engraver"
   \consists "Instrument_name_engraver"
   \consists "Font_size_engraver"
-  \consists "Hara_kiri_engraver"
+  \consists "Axis_group_engraver"
   \consists "Pure_from_neighbor_engraver"
   searchForVoice = ##f
   %% explicitly set instrument, so it is not inherited from the parent
@@ -503,8 +503,9 @@ printing of a single line of lyrics."
   \consists "Output_property_engraver"
   \consists "Separating_line_group_engraver"
   \consists "Chord_name_engraver"
-  \consists "Hara_kiri_engraver"
+  \consists "Axis_group_engraver"
 %  \consists "Note_spacing_engraver"
+
   \override VerticalAxisGroup.remove-first = ##t
   \override VerticalAxisGroup.remove-empty = ##t
   \override VerticalAxisGroup.staff-affinity = #DOWN
@@ -767,7 +768,7 @@ automatically when an output definition (a @code{\\score} or
 
   \consists "Figured_bass_engraver"
   \consists "Separating_line_group_engraver"
-  \consists "Hara_kiri_engraver"
+  \consists "Axis_group_engraver"
 
   \override VerticalAxisGroup.remove-empty = ##t
   \override VerticalAxisGroup.remove-first = ##t
index 1aaf582cd724d352a87a6e8ace5210bec26992b3..f58237a7081fbcedc9aef3d2bd8351e4f6cc50f9 100644 (file)
@@ -635,7 +635,6 @@ proceeding to next time step.  This is an internal variable.")
      (graceSettings ,list? "Overrides for grace notes.  This property
 should be manipulated through the @code{add-grace-property} function.")
 
-
      (hasStaffSpacing ,boolean? "True if the current
 @code{CommandColumn} contains items that will affect spacing.")