]> git.donarmstrong.com Git - lilypond.git/commitdiff
lilypond-1.3.62
authorfred <fred>
Tue, 26 Mar 2002 23:23:22 +0000 (23:23 +0000)
committerfred <fred>
Tue, 26 Mar 2002 23:23:22 +0000 (23:23 +0000)
lily/hara-kiri-engraver.cc
lily/hara-kiri-group-spanner.cc [new file with mode: 0644]
lily/hara-kiri-vertical-group-spanner.cc
lily/include/hara-kiri-group-spanner.hh [new file with mode: 0644]
lily/include/hara-kiri-vertical-group-spanner.hh
ly/engraver.ly

index cab10f8cb34090c6555cd6f3aeb1be508f070bca..10eca4fe1d181149ce7e4a2bfe090d67811b7e17 100644 (file)
@@ -6,14 +6,14 @@
   (c) 1999--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
   
  */
-#include "hara-kiri-vertical-group-spanner.hh"
+#include "hara-kiri-group-spanner.hh"
 #include "hara-kiri-engraver.hh"
 #include "rhythmic-head.hh"
 
 Spanner*
 Hara_kiri_engraver::get_spanner_p () const
 {
-  return new Hara_kiri_group_spanner (SCM_EOL);
+  return new Hara_kiri_group_spanner (get_property ("basicHaraKiriVerticalGroupspannerProperties"));
 }
 
 void
diff --git a/lily/hara-kiri-group-spanner.cc b/lily/hara-kiri-group-spanner.cc
new file mode 100644 (file)
index 0000000..0094a01
--- /dev/null
@@ -0,0 +1,80 @@
+/*
+  hara-kiri-vertical-group-spanner.cc -- implement Hara_kiri_group_spanner
+
+  source file of the GNU LilyPond music typesetter
+
+  (c)  1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
+  Han-Wen Nienhuys <hanwen@cs.uu.nl>
+*/
+
+#include "axis-group-interface.hh"
+#include "hara-kiri-group-spanner.hh"
+#include "debug.hh"
+#include "item.hh"
+
+/*
+ */
+Hara_kiri_group_spanner::Hara_kiri_group_spanner(SCM s)
+  : Spanner (s)
+{
+  set_elt_pointer ("items-worth-living", SCM_EOL);
+}
+
+void 
+Hara_kiri_group_spanner::add_interesting_item (Item* n)
+{
+  add_dependency (n);
+  Pointer_group_interface (this, "items-worth-living").add_element (n);
+
+}
+
+GLUE_SCORE_ELEMENT(Hara_kiri_group_spanner,after_line_breaking);
+SCM 
+Hara_kiri_group_spanner::member_after_line_breaking ()
+{
+  SCM worth = get_elt_pointer ("items-worth-living");
+  /*
+    worth == self_scm  is a stupid way to signal that we're done.
+   */
+  if (gh_pair_p (worth))
+    return SCM_UNDEFINED;
+
+  Link_array<Score_element> childs = Axis_group_interface (this).get_children ();
+  for (int i = 0; i < childs.size (); i++)
+    {
+      Score_element* s = childs[i];
+
+      if ( line_l () != s->line_l ())
+       programming_error ("Killing other children too");
+      s->suicide ();
+    }
+
+  /*
+    very appropriate name here :-)
+   */
+  suicide ();
+  return SCM_UNDEFINED;
+}
+
+
+
+/*
+  We can't rely on offsets and dimensions of elements in a hara-kiri
+  group. Use a callback to make sure that hara-kiri has been done
+  before asking for offsets.  */
+Real
+Hara_kiri_group_spanner::force_hara_kiri_callback (Score_element const  *elt, Axis a)
+{
+  while (elt && !dynamic_cast<Hara_kiri_group_spanner const*> (elt))
+    elt = elt->parent_l(a);
+
+  if (elt)
+    {
+      Hara_kiri_group_spanner const  * seppuku = dynamic_cast<Hara_kiri_group_spanner const*> (elt);
+
+      ((Hara_kiri_group_spanner*)seppuku)->member_after_line_breaking ();
+    }
+  
+
+  return 0.0;
+}
index 21746accfd4374d45c95b67baa2e345744f82821..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
@@ -1,78 +0,0 @@
-/*
-  hara-kiri-vertical-group-spanner.cc 
-    -- implement Hara_kiri_vertical_group_spanner
-
-  source file of the GNU LilyPond music typesetter
-
-  (c)  1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-  Han-Wen Nienhuys <hanwen@cs.uu.nl>
-*/
-
-#include "axis-group-interface.hh"
-#include "hara-kiri-vertical-group-spanner.hh"
-#include "debug.hh"
-#include "item.hh"
-
-/*
- */
-Hara_kiri_group_spanner::Hara_kiri_group_spanner(SCM s)
-  : Spanner (s)
-{
-  set_elt_pointer ("items-worth-living", SCM_EOL);
-}
-
-void 
-Hara_kiri_group_spanner::add_interesting_item (Item* n)
-{
-  add_dependency (n);
-  Pointer_group_interface (this, "items-worth-living").add_element (n);
-
-}
-
-void 
-Hara_kiri_group_spanner::after_line_breaking ()
-{
-  SCM worth = get_elt_pointer ("items-worth-living");
-  /*
-    worth == self_scm  is a stupid way to signal that we're done.
-   */
-  if (gh_pair_p (worth))
-    return;
-
-  Link_array<Score_element> childs = Axis_group_interface (this).get_children ();
-  for (int i = 0; i < childs.size (); i++)
-    {
-      Score_element* s = childs[i];
-
-      if ( line_l () != s->line_l ())
-       programming_error ("Killing other children too");
-      s->suicide ();
-    }
-
-  /*
-    very appropriate name here :-)
-   */
-  suicide ();
-}
-
-
-
-/*
-  We can't rely on offsets and dimensions of elements in a hara-kiri
-  group. Use a callback to make sure that hara-kiri has been done
-  before asking for offsets.  */
-Real
-Hara_kiri_group_spanner::force_hara_kiri_callback (Score_element const  *elt, Axis a)
-{
-  while (elt && !dynamic_cast<Hara_kiri_group_spanner const*> (elt))
-    elt = elt->parent_l(a);
-
-  if (elt)
-    {
-      Hara_kiri_group_spanner const  * seppuku = dynamic_cast<Hara_kiri_group_spanner const*> (elt);
-
-      ((Hara_kiri_group_spanner*)seppuku)->after_line_breaking ();
-    }
-
-  return 0.0;
-}
diff --git a/lily/include/hara-kiri-group-spanner.hh b/lily/include/hara-kiri-group-spanner.hh
new file mode 100644 (file)
index 0000000..476a18a
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+  hara-kiri-vertical-group-spanner.hh -- declare Har_kiri_vertical_group_spanner
+
+  source file of the GNU LilyPond music typesetter
+
+  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
+*/
+
+
+#ifndef HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
+#define HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
+
+#include "spanner.hh"
+
+/** 
+  As Vertical_group_spanner, but keep track of interesting items.  If
+  we don't contain any interesting items after linebreaking, then
+  gracefully commit suicide.  Objective: don't disgrace Lily by
+  typesetting empty lines in orchestral scores.
+
+  properties:
+
+  items-worth-living -- list of interesting items. If empty in a particular system,
+    clear this line
+
+*/
+class Hara_kiri_group_spanner : public Spanner
+{
+public:
+  static Real force_hara_kiri_callback (Score_element const* , Axis);
+  Hara_kiri_group_spanner (SCM);
+  SCM member_after_line_breaking ();
+  static SCM after_line_breaking (SCM);
+  
+  void add_interesting_item (Item* n);
+
+  VIRTUAL_COPY_CONS(Score_element);
+};
+
+
+#endif // HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
index abda869a39360594c5379863eecd09229d99e2ba..65296f81060baccd891380179b283fc7515acef0 100644 (file)
@@ -1,39 +1,2 @@
-/*
-  hara-kiri-vertical-group-spanner.hh -- declare Har_kiri_vertical_group_spanner
 
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1998--2000 Jan Nieuwenhuizen <janneke@gnu.org>
-*/
-
-
-#ifndef HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
-#define HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
-
-#include "spanner.hh"
-
-/** 
-  As Vertical_group_spanner, but keep track of interesting items.  If
-  we don't contain any interesting items after linebreaking, then
-  gracefully commit suicide.  Objective: don't disgrace Lily by
-  typesetting empty lines in orchestral scores.
-
-  properties:
-
-  items-worth-living -- list of interesting items. If empty in a particular system,
-    clear this line
-
-*/
-class Hara_kiri_group_spanner : public Spanner
-{
-public:
-  static Real force_hara_kiri_callback (Score_element const* , Axis);
-  Hara_kiri_group_spanner (SCM);
-  virtual void after_line_breaking ();
-  void add_interesting_item (Item* n);
-protected:
-  VIRTUAL_COPY_CONS(Score_element);
-};
-
-
-#endif // HARA_KIRI_VERTICAL_GROUP_SPANNER_HH
+#error
index 4445e4afa7fdb149692182383ef2576dacd01471..10a44a2db828259e985f42027e9e864b8d50c93a 100644 (file)
@@ -403,10 +403,10 @@ ScoreContext = \translator {
        
        basicBarProperties = #`(
                (break-align-symbol . Staff_bar)
-               (molecule-callback . ,Bar::scheme_molecule)        
+               (molecule-callback . ,Bar::brew_molecule)          
                (visibility-lambda . ,begin-of-line-invisible)
                (breakable . #t)
-
+               (before-line-breaking-callback . ,Bar::before_line_breaking)
                ;;
                ;; Ross. page 151 lists other values, we opt for a leaner look
                ;; 
@@ -417,47 +417,56 @@ ScoreContext = \translator {
        )
 
        basicBarNumberProperties = #`(
-               (molecule-callback . ,Text_item::scheme_molecule)
+               (molecule-callback . ,Text_item::brew_molecule)
                (breakable . #t)
                (visibility-lambda . ,begin-of-line-visible)
        )
 
        basicBeamProperties = #`(
-               (molecule-callback . ,Beam::scheme_molecule)
-               (beam-thickness . 0.42) ; interline!
+               (molecule-callback . ,Beam::brew_molecule)
+               (beam-thickness . 0.42) ; interline
+               (before-line-breaking-callback . ,Beam::before_line_breaking)
+               (after-line-breaking-callback . ,Beam::after_line_breaking)                             
        )
 
        basicBreakAlignProperties = #`(
                (breakable . #t)
-       )
+               (before-line-breaking-callback . ,Break_align_item::before_line_breaking)
+)
 
        
        basicBreathingSignProperties = #`(
                (break-align-symbol . Breathing_sign)
+               (after-line-breaking-callback . ,Breathing_sign::after_line_breaking)
                (breakable . #t )
-               (molecule-callback . ,Breathing_sign::scheme_molecule)
+               (molecule-callback . ,Breathing_sign::brew_molecule)
                (visibility-lambda . ,begin-of-line-invisible)
+
        )
         basicClefItemProperties = #`(
-          (molecule-callback . ,Score_element::scheme_molecule)
+          (molecule-callback . ,Score_element::brew_molecule)
+          (before-line-breaking-callback . ,Clef_item::before_line_breaking)
           (breakable . #t)
           (break-align-symbol . Clef_item)
           (visibility-lambda . ,begin-of-line-visible) 
         )
        basicSlurProperties = #`(
-               (molecule-callback . ,Slur::scheme_molecule)
+               (molecule-callback . ,Slur::brew_molecule)
+               (after-line-breaking-callback . ,Slur::after_line_breaking)
        )
        basicChordNameProperties = #`(
-               (molecule-callback . ,Chord_name::scheme_molecule)
+               (molecule-callback . ,Chord_name::brew_molecule)
        )
        basicCollisionProperties = #`(
                (axes 0 1)
+               (before-line-breaking-callback . ,Collision::before_line_breaking)
        )
        basicCrescendoProperties = #`(
-               (molecule-callback . ,Crescendo::scheme_molecule)
+               (molecule-callback . ,Crescendo::brew_molecule)
        )
        basicDotsProperties = #`(
-               (molecule-callback . ,Dots::scheme_molecule)
+               (molecule-callback . ,Dots::brew_molecule)
+               (after-line-breaking-callback . ,Dots::after_line_breaking)
                (dot-count . 1) 
        )
        basicDynamicLineSpannerProperties = #`(
@@ -465,7 +474,7 @@ ScoreContext = \translator {
        )
        basicDynamicTextProperties       = # `(
                (style . "dynamic")
-               (molecule-callback . ,Text_item::scheme_molecule)
+               (molecule-callback . ,Text_item::brew_molecule)
                (script-priority . 100)
                (self-alignment-Y . 0)
        )
@@ -473,54 +482,62 @@ ScoreContext = \translator {
          (break-align-symbol . Left_edge_item)
          (breakable . #t)
        )
+       basicGraceAlignItemProperties = #`(
+               (axes . (0))
+               (before-line-breaking-callback . ,Grace_align_item::before_line_breaking)
+       )
+       basicHaraKiriVerticalGroupspannerProperties = #`(
+               (after-line-breaking-callback . ,Hara_kiri_group_spanner::after_line_breaking)
+       )
        basicHyphenSpannerProperties = #`(
-       (thickness . 1.0)
-       (height . 0.4)
-       (minimum-length .  0.5) 
-               (molecule-callback . ,Hyphen_spanner::scheme_molecule)
+               (thickness . 1.0)
+               (height . 0.4)
+               (minimum-length .  0.5) 
+               (molecule-callback . ,Hyphen_spanner::brew_molecule)
        )
        basicKeyProperties = #`(
-         (molecule-callback . ,Key_item::scheme_molecule)
+         (molecule-callback . ,Key_item::brew_molecule)
          (break-align-symbol . Key_item)
          (visibility-lambda . ,begin-of-line-visible)
          (breakable . #t)
          )     
        basicLocalKeyProperties = #`(
-               (molecule-callback . ,Local_key_item::scheme_molecule)
+               (molecule-callback . ,Local_key_item::brew_molecule)
                (left-padding . 0.2)
                (right-padding . 0.4)
        )
        basicLyricExtenderProperties = #`(
-               (molecule-callback . ,Lyric_extender::scheme_molecule)
+               (molecule-callback . ,Lyric_extender::brew_molecule)
        )
        basicLyricTextProperties = #`(
-               (molecule-callback . ,Text_item::scheme_molecule)
+               (molecule-callback . ,Text_item::brew_molecule)
                (non-rhythmic . #t)
        )
        basicMarkProperties = #`(
-         (molecule-callback . ,Text_item::scheme_molecule)     
+         (molecule-callback . ,Text_item::brew_molecule)       
          (breakable . #t)
          (visibility-lambda . ,end-of-line-invisible)
        )
        basicMultiMeasureRestProperties = #`(
-               (molecule-callback . ,Multi_measure_rest::scheme_molecule)
+               (molecule-callback . ,Multi_measure_rest::brew_molecule)
                (staff-position . 0)
+               (after-line-breaking-callback . ,Multi_measure_rest::after_line_breaking)
        )
        basicNoteColumnProperties = #`(
                (axes 0 1)
        )
        basicNoteHeadProperties = #`(
-               (molecule-callback . ,Note_head::scheme_molecule)
+               (molecule-callback . ,Note_head::brew_molecule)
        )
        basicOctavateEightProperties  = #`(
                (self-alignment-X . 0)
                (text . "8")
                (visibility-lambda . ,begin-of-line-visible) 
-               (molecule-callback . ,Text_item::scheme_molecule)
+               (molecule-callback . ,Text_item::brew_molecule)
                (style . "italic")
        )
        basicPedalProperties = #`(
-               (molecule-callback . ,Text_item::scheme_molecule)
+               (molecule-callback . ,Text_item::brew_molecule)
                (style . "italic")
                (no-spacing-rods . #t)
                (self-alignment-X . 0)
@@ -528,25 +545,46 @@ ScoreContext = \translator {
        )
        basicTextProperties = #`( )
        basicRestProperties = #`( 
-               (molecule-callback . ,Rest::scheme_molecule)
+               (molecule-callback . ,Rest::brew_molecule)
        )
        
        basicRestCollisionProperties = #`(
        )
        basicScriptProperties    = #`(
-               (molecule-callback . ,Script::scheme_molecule)
+               (molecule-callback . ,Script::brew_molecule)
        )
                
        basicSlurProperties = #`(
-               (molecule-callback . ,Slur::scheme_molecule)
+               (molecule-callback . ,Slur::brew_molecule)
+               (after-line-breaking-callback . ,Rest::after_line_breaking) 
+       )
+       basicSpanBarProperties = #`(
+               (break-align-symbol . Staff_bar)
+               (molecule-callback . ,Bar::brew_molecule)
+               (visibility-lambda . ,begin-of-line-invisible)
+               (breakable . #t)
+               (before-line-breaking-callback . ,Span_bar::before_line_breaking)
+               (after-line-breaking-callback . ,Span_bar::after_line_breaking)
+
+               ;; ugh duplication! 
+               
+               ;;
+               ;; Ross. page 151 lists other values, we opt for a leaner look
+               ;; 
+               (kern . 3.0)
+               (thin-kern . 3.0)
+               (hair-thickness . 1.6)
+               (thick-thickness . 6.0)
+
        )
        basicSustainPedalProperties = #`(
                (no-spacing-rods . #t)
-               (molecule-callback . ,Sustain_pedal::scheme_molecule)
+               (molecule-callback . ,Sustain_pedal::brew_molecule)
                (self-alignment-X . 0)
        )       
        basicSystemStartDelimiterProperties = #`(
-               (molecule-callback . ,System_start_delimiter::scheme_molecule)
+               (molecule-callback . ,System_start_delimiter::brew_molecule)
+               (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking) 
                (collapse-height . 1.0)
                (thickness . 1.6)
                (arch-height . 1.5)
@@ -557,36 +595,39 @@ ScoreContext = \translator {
                (bracket-width . 2.0)
        )
        basicStemProperties = #`(
-               (molecule-callback . ,Stem::scheme_molecule)
+               (before-line-breaking-callback . ,Stem::before_line_breaking)
+               (molecule-callback . ,Stem::brew_molecule)
        )
        staffSymbolBasicProperties = #`(
-               (molecule-callback . ,Staff_symbol::scheme_molecule)
+               (molecule-callback . ,Staff_symbol::brew_molecule)
                (staff-space . 1.0 )
                (line-count . 5 )
        )
        basicTextScriptProperties = #`(
-               (molecule-callback . ,Text_item::scheme_molecule)
+               (molecule-callback . ,Text_item::brew_molecule)
                (no-spacing-rods . #t)
        )
        basicTimeSignatureProperties = #`(
-               (molecule-callback . ,Time_signature::scheme_molecule)
+               (molecule-callback . ,Time_signature::brew_molecule)
                (break-align-symbol . Time_signature)
                (visibility-lambda . ,all-visible)
                (breakable . #t)
        )
        basicTieProperties = #`(
-               (molecule-callback . ,Tie::scheme_molecule)
+               (molecule-callback . ,Tie::brew_molecule)
+               (after-line-breaking-callback . ,System_start_delimiter::after_line_breaking)           
        )
        basicTieColumnProperties = #`(
-               
+               (after-line-breaking-callback .,Tie_engraver::after_line_breaking)
        )
        basicTupletSpannerProperties = #`(
                (number-gap . 2.0)   
-               (thick . 1.0) 
-               (molecule-callback . ,Tuplet_spanner::scheme_molecule)
+               (thick . 1.0)
+               (after-line-breaking-callback . ,Tuplet_spanner::after_line_breaking)
+               (molecule-callback . ,Tuplet_spanner::brew_molecule)
        )       
        basicStemTremoloProperties = #`(
-               (molecule-callback . ,Stem_tremolo::scheme_molecule)
+               (molecule-callback . ,Stem_tremolo::brew_molecule)
                (beam-width . 4.0) ; interline!
                (beam-thickness . 0.42) ; interline!            
        )
@@ -596,7 +637,7 @@ ScoreContext = \translator {
        )
        basicInstrumentNameProperties = #`(
                (breakable . #t)
-               (molecule-callback . ,Text_item::scheme_molecule)               
+               (molecule-callback . ,Text_item::brew_molecule)         
                (break-align-symbol . Instrument_name)
                (visibility-lambda . ,begin-of-line-visible)
        )
@@ -604,7 +645,8 @@ ScoreContext = \translator {
                (axes 1)
        )
        basicVoltaSpannerProperties = #`(
-               (molecule-callback . ,Volta_spanner::scheme_molecule)
+               (molecule-callback . ,Volta_spanner::brew_molecule)
+               (after-line-breaking-callback . ,Volta_spanner::after_line_breaking) 
        )
        
        \accepts "Staff";