--- /dev/null
+/*
+ hara-kiri-line-group-engraver.cc -- implement Hara_kiri_line_group_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+*/
+
+#include "staff-sym.hh"
+#include "command-request.hh"
+#include "p-col.hh"
+#include "hara-kiri-vertical-group-spanner.hh"
+#include "hara-kiri-line-group-engraver.hh"
+
+IMPLEMENT_IS_TYPE_B1 (Hara_kiri_line_group_engraver,Engraver);
+ADD_THIS_TRANSLATOR (Hara_kiri_line_group_engraver);
+
+void
+Hara_kiri_line_group_engraver::create_line_spanner ()
+{
+ staffline_p_ = new Hara_kiri_vertical_group_spanner;
+}
--- /dev/null
+/*
+ hara-kiri-vertical-group-spanner.cc
+ -- implement Hara_kiri_vertical_group_spanner
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+*/
+
+#include "hara-kiri-vertical-group-spanner.hh"
+#include "item.hh"
+#include "note-head.hh"
+#include "p-col.hh"
+#include "molecule.hh"
+
+IMPLEMENT_IS_TYPE_B1 (Hara_kiri_vertical_group_spanner, Vertical_group_spanner);
+
+void
+Hara_kiri_vertical_group_spanner::add_element (Graphical_element* e)
+{
+ if (e->is_type_b (Note_head::static_name ()))
+ add_dependency ((Score_elem*)e);
+ Vertical_group_spanner::add_element (e);
+}
+
+// we never get here, or indeed in axis-group-spanner::do_break_processing?
+void
+Hara_kiri_vertical_group_spanner::do_break_processing ()
+{
+ Vertical_group_spanner::do_break_processing ();
+ if (dependency_size ())
+ return;
+ transparent_b_ = true;
+}
+
+// too late ?
+void
+Hara_kiri_vertical_group_spanner::do_post_processing ()
+{
+ if (dependency_size ())
+ return;
+ transparent_b_ = true;
+}
+
+Molecule*
+Hara_kiri_vertical_group_spanner::brew_molecule_p() const
+{
+ // aaarg: go away
+ if (1) // transparent_b_)
+ return new Molecule;
+ return Vertical_group_spanner::brew_molecule_p ();
+}
+
+
--- /dev/null
+/*
+ hara-kiri-line-group-grav.hh -- declare Hara_kiri_line_group_engraver
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+*/
+
+
+#ifndef HARA_KIRI_LINE_GROUP_GRAV_HH
+#define HARA_KIRI_LINE_GROUP_GRAV_HH
+
+#include "line-group-grav.hh"
+
+/**
+ Just as Line_group_engraver, but won't disgrace Lily by typesetting
+ an empty line (for orchestral scores).
+ */
+class Hara_kiri_line_group_engraver : public Line_group_engraver
+{
+public:
+ TRANSLATOR_CLONE (Hara_kiri_line_group_engraver);
+ DECLARE_MY_RUNTIME_TYPEINFO;
+
+protected:
+ virtual void create_line_spanner ();
+};
+
+
+#endif // HARA_KIRI_LINE_GROUP_GRAV_HH
+
--- /dev/null
+/*
+ hara-kiri-vertical-group-spanner.hh -- declare Har_kiri_vertical_group_spanner
+
+ source file of the GNU LilyPond music typesetter
+
+ (c) 1998 Jan Nieuwenhuizen <jan@digicash.com>
+*/
+
+
+#ifndef HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
+#define HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
+
+#include "vertical-group-spanner.hh"
+
+/**
+ As Vertical_group_spanner, but keeps dependencies to notes.
+ */
+class Hara_kiri_vertical_group_spanner : public Vertical_group_spanner
+{
+public:
+ DECLARE_MY_RUNTIME_TYPEINFO;
+
+ virtual void do_post_processing ();
+ virtual void add_element (Graphical_element* e);
+
+protected:
+ SCORE_ELEM_CLONE (Hara_kiri_vertical_group_spanner);
+
+ virtual void do_break_processing ();
+ virtual Molecule* brew_molecule_p () const;
+};
+
+
+#endif // HARA_KIRI_VERTICAL_GROUP_SPANNER_HH