]> git.donarmstrong.com Git - lilypond.git/commitdiff
* scm/define-context-properties.scm
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 24 Oct 2004 22:24:25 +0000 (22:24 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sun, 24 Oct 2004 22:24:25 +0000 (22:24 +0000)
(all-user-translation-properties): add verticallySpacedContexts.

* scm/define-grob-interfaces.scm (vertically-spaceable-interface):
add interface

* scm/define-grob-properties.scm (all-internal-grob-properties):
add spaceable-staves

* scm/define-grobs.scm (all-grob-descriptions): set
vertically-spaceable-interface for VerticalAxisGroup and
RemoveEmptyVerticalGroup

* lily/system.cc (get_line): determine staff_refpoints_
using spaceable-staves.

* lily/score-engraver.cc (acknowledge_grob): ack
vertically-spaceable-interface and verticallySpacedContexts to
set spaceable-staves.

* input/regression/new-slur.ly: add slur under 16th subbeam case.

* lily/slur-scoring.cc (fill): init has_same_beam_ before use.

ChangeLog
input/regression/new-slur.ly
lily/score-engraver.cc
lily/slur-scoring.cc
lily/system.cc
ly/engraver-init.ly
scm/define-context-properties.scm
scm/define-grob-interfaces.scm
scm/define-grob-properties.scm
scm/define-grobs.scm

index 3a866432e7056e782bc1998330e66cfead11f4bf..f3e0732012e75777b26e1128095046b53a83a60f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,29 @@
+2004-10-25  Han-Wen Nienhuys  <hanwen@xs4all.nl>
+
+       * scm/define-context-properties.scm
+       (all-user-translation-properties): add verticallySpacedContexts.
+
+       * scm/define-grob-interfaces.scm (vertically-spaceable-interface):
+       add interface
+
+       * scm/define-grob-properties.scm (all-internal-grob-properties):
+       add spaceable-staves
+
+       * scm/define-grobs.scm (all-grob-descriptions): set
+       vertically-spaceable-interface for VerticalAxisGroup and
+       RemoveEmptyVerticalGroup
+
+       * lily/system.cc (get_line): determine staff_refpoints_
+       using spaceable-staves.
+
+       * lily/score-engraver.cc (acknowledge_grob): ack
+       vertically-spaceable-interface and verticallySpacedContexts to
+       set spaceable-staves.
+
+       * input/regression/new-slur.ly: add slur under 16th subbeam case.
+
+       * lily/slur-scoring.cc (fill): init has_same_beam_ before use.
+
 2004-10-24  Han-Wen Nienhuys  <hanwen@xs4all.nl>
 
        * input/mutopia/F.Schubert/morgenlied.ly (pianoLH): tune
index 7bccbfbb945b3de7e59d8fb5ef2f119ad334fdc9..e0117d3054c9819e5d391d3701af550cc2eb9e4c 100644 (file)
@@ -21,8 +21,7 @@
        \\
        {r8  <as es> r <f des> r }
     >>
-    s4
-
+    \new Voice { \voiceOne b='8[ c16( d])  }
     g='8[( a b b! ]  c4  bes) 
     bes='8( f' des bes) as4( bes)
     r8 d( f e d c b a)
index 0b28780dcc6287c00fafc54fb2d56534c5f38009..432d18b720bef59146ccafa4a4346d08ea9c1492 100644 (file)
@@ -291,6 +291,22 @@ Score_engraver::acknowledge_grob (Grob_info gi)
                                         ly_symbol2scm ("spacing-wishes"),
                                         gi.grob_);
     }
+
+  if (Axis_group_interface::has_interface (gi.grob_)
+      && gi.grob_->internal_has_interface (ly_symbol2scm ("vertically-spaceable-interface")))
+    {
+      SCM spaceable = get_property ("verticallySpacedContexts");
+      Context *orig = gi.origin_contexts (this)[0];
+      
+      if (scm_memq (ly_symbol2scm (orig->context_name ().to_str0()),
+                   spaceable) != SCM_BOOL_F)
+       {
+         Pointer_group_interface::add_grob (system_,
+                                            ly_symbol2scm ("spaceable-staves"),
+                                            gi.grob_);
+       }
+    }
+  
 }
 
 
@@ -307,6 +323,6 @@ ENTER_DESCRIPTION (Score_engraver,
 ,
 /* creats*/       "System PaperColumn NonMusicalPaperColumn", 
 /* accepts */     "break-event",
-/* acks  */       "note-spacing-interface staff-spacing-interface",
-/* reads */       "currentMusicalColumn currentCommandColumn",
+/* acks  */       "note-spacing-interface staff-spacing-interface axis-group-interface",
+/* reads */       "currentMusicalColumn currentCommandColumn verticallySpacedContexts",
 /* write */       "");
index ae76a64abb2ae1db24b539decb25ff8927d8c816..8543c9e90486763b5fa5cce0af980ce309c67d59 100644 (file)
@@ -319,6 +319,9 @@ Slur_score_state::fill (Grob *me)
   is_broken_ = (!extremes_[LEFT].note_column_
                || !extremes_[RIGHT].note_column_); 
 
+  has_same_beam_ =
+    (extremes_[LEFT].stem_ && extremes_[RIGHT].stem_
+     && Stem::get_beam (extremes_[LEFT].stem_) == Stem::get_beam (extremes_[RIGHT].stem_));
   
   base_attachments_ = get_base_attachments ();
 
@@ -347,9 +350,6 @@ Slur_score_state::fill (Grob *me)
     = (extremes_[LEFT].stem_ && Stem::get_beam (extremes_[LEFT].stem_))
     || (extremes_[RIGHT].stem_ && Stem::get_beam (extremes_[RIGHT].stem_));
 
-  has_same_beam_ =
-    (extremes_[LEFT].stem_ && extremes_[RIGHT].stem_
-     && Stem::get_beam (extremes_[LEFT].stem_) == Stem::get_beam (extremes_[RIGHT].stem_));
 
   
   set_next_direction ();
index b72720756833186f1b452087cc43bd92efd3bb4c..0eecf4afebc1949dd1d1ac008993e2a2d21c976a 100644 (file)
@@ -336,8 +336,6 @@ System::get_line ()
 
      Start with layer 3, since scm_cons prepends to list.  */
   SCM all = get_property ("all-elements");
-  Interval staff_refpoints;
-  staff_refpoints.set_empty();
   
   for (int i = LAYER_COUNT; i--;)
     for (SCM s = all; scm_is_pair (s); s = scm_cdr (s))
@@ -345,20 +343,6 @@ System::get_line ()
        Grob *g = unsmob_grob (scm_car (s));
        Stencil *stil = g->get_stencil ();
 
-       if (i == 0
-           && Axis_group_interface::has_interface (g)
-           && !Align_interface::has_interface (g)
-           && dynamic_cast<Spanner*> (g)
-           /*
-             UGH.
-            */
-           && !g->internal_has_interface (ly_symbol2scm ("dynamic-interface"))
-           && !g->internal_has_interface (ly_symbol2scm ("piano-pedal-interface"))
-           )
-         {
-           staff_refpoints.add_point (g->relative_coordinate (this, Y_AXIS));
-         }
-  
        /* Skip empty stencils and grobs that are not in this layer.  */
        if (!stil
            || robust_scm2int (g->get_property ("layer"), 1) != i)
@@ -388,7 +372,17 @@ System::get_line ()
   Stencil sys_stencil (Box (x,y),
                       scm_cons (ly_symbol2scm ("combine-stencil"),
                                 exprs));
+
+  Interval staff_refpoints;
+  staff_refpoints.set_empty();
+  for (SCM s = get_property ("spaceable-staves");
+       scm_is_pair (s); s = scm_cdr (s))
+      {
+       Grob *g = unsmob_grob (scm_car (s));
+       staff_refpoints.add_point (g->relative_coordinate (this, Y_AXIS));
+      }
   
   Paper_system *pl = new Paper_system (sys_stencil, false);
   pl->staff_refpoints_ = staff_refpoints;
   Item * break_point =this->get_bound(LEFT);
@@ -453,4 +447,4 @@ System::columns () const
 ADD_INTERFACE (System,"system-interface",
               "This is the toplevel object: each object in a score "
               "ultimately has a System object as its X and Y parent. ",
-              "all-elements columns")
+              "all-elements spaceable-staves columns")
index 9e205f9bd2d52db3596ab22c937e0ac5fedcc3c6..a16809b7e5631dc6fbc0ca1034ca1182a0630657 100644 (file)
@@ -561,6 +561,8 @@ AncientRemoveEmptyStaffContext = \context {
 
     quotedEventTypes = #'(note-event rest-event time-scaled-music tie-event)
     instrumentTransposition = #(ly:make-pitch 0 0 0)
+
+    verticallySpacedContexts = #'(Staff)
 }
 
 EasyNotation = \context {      % TODO: why \context override? 
index 7a9815b7756d75f5d991a3bdfd76560b60e5a370..8aedad8d8839c00cc9c3ab03f3d7f292ac5d8768 100644 (file)
@@ -397,7 +397,11 @@ to 10 (5+5) staffspaces high.
 
 This does not work for Voice or any other context  that doesn't form a
 vertical group.")
-
+     
+     (verticallySpacedContexts ,list? "List of symbols, containing
+context names whose vertical axis groups should be taken into account for
+vertical spacing of systems.")
+     
      (vocalName ,markup? "Name of a vocal line.")
      (vocNam ,markup? "Name of a vocal line, short version.")
 
index e04c1e6b9d799fd74fe20555c873f1c1b8a8e48e..aecf2acb029606d51a50c9ba37989e6cf97a6846 100644 (file)
@@ -103,3 +103,9 @@ are interesting enough to maintain a hara-kiri staff."
  "An interface for any notes set in a tablature staff"
  '())
 
+
+(ly:add-interface
+ 'vertically-spaceable-interface 
+ "Objects that should be kept at constant vertical distances. Typically:
+@internalsref{VerticalAxisGroup} objects  of @internalsref{Staff} contexts."
+ '())
index 168944dec2c86e40f05bf5c78c5544f2e7ac0c7f..0740f9ece4ac53d2a9a85aa73ab9a2a86f777cb0 100644 (file)
@@ -615,7 +615,7 @@ stem. Internally used to distribute beam shortening over stems. ")
 than a whole rest.")
      
 
-
+     (spaceable-staves ,grob-list? "Objects to be spaced during page layout.")
 
      ;; ancient notation
 
index eca4ce72a11d18939a5a6c1fc8d0113492e96aea..05cc4b28f524a84e8907e2a162d176642b13982e 100644 (file)
        (Y-extent-callback . ,Hara_kiri_group_spanner::y_extent)
        (remove-first . #t)
        (axes . (1))
-       (meta . ((interfaces . (axis-group-interface hara-kiri-group-interface item-interface  spanner-interface))))
+       (meta . ((interfaces . (axis-group-interface vertically-spaceable-interface hara-kiri-group-interface item-interface  spanner-interface))))
        ))
 
     (RepeatSlash
        (Y-extent-callback . ,Axis_group_interface::group_extent_callback)      
        (X-extent-callback . ,Axis_group_interface::group_extent_callback)
        
-       (meta . ((interfaces . (axis-group-interface spanner-interface))))
+       (meta . ((interfaces . (axis-group-interface vertically-spaceable-interface spanner-interface))))
        ))
    )
  )