]> git.donarmstrong.com Git - lilypond.git/commitdiff
* scm/define-grobs.scm:
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 28 Oct 2006 22:59:16 +0000 (22:59 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Sat, 28 Oct 2006 22:59:16 +0000 (22:59 +0000)
separation-items have width

* VERSION:
bump version

* .gitignore:
* Documentation/topdocs/NEWS.tely:
* lily/separating-group-spanner.cc:
* lily/slur-engraver.cc:
* lily/slur-scoring.cc:
* scm/define-grobs.scm:
* input/regression/slur-clef.ly:
add breakableSeparationItem to extra encompass for slurs. This fixesslur/clef slur/key collisions etc. Should fix #49

* lily/include/slur-scoring.hh:
* lily/slur-scoring.cc:
Use X of separation item as slur start. Fixes #120

.gitignore
ChangeLog
Documentation/topdocs/NEWS.tely
VERSION
buildscripts/git-update-changelog.py
input/regression/slur-clef.ly [new file with mode: 0644]
lily/include/slur-scoring.hh
lily/separating-group-spanner.cc
lily/slur-engraver.cc
lily/slur-scoring.cc
scm/define-grobs.scm

index 849b7705d32664877b3db16daac26ef943cc9874..6a3858d251ab98ebf9b47c645f5f6ce4d12f5a7f 100644 (file)
@@ -14,3 +14,4 @@ TAGS
 tags
 .gdbinit
 ?.ly
+*.midi
index 6edc681b445c713692d4533d8b3166d79e38b981..fbd2c2fadfafb9fecc46040a1350b1dd7dc1fcd0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,28 @@
+2006-10-29  Han-Wen Nienhuys  <hanwen@lilypond.org>
+
+       
+       * scm/define-grobs.scm: 
+       separation-items have width
+
+       
+       * VERSION: 
+       bump version
+
+       
+       * .gitignore: 
+       * Documentation/topdocs/NEWS.tely: 
+       * lily/separating-group-spanner.cc: 
+       * lily/slur-engraver.cc: 
+       * lily/slur-scoring.cc: 
+       * scm/define-grobs.scm: 
+       * input/regression/slur-clef.ly: 
+       add breakableSeparationItem to extra encompass for slurs. This fixesslur/clef slur/key collisions etc. Should fix #49
+
+       
+       * lily/include/slur-scoring.hh: 
+       * lily/slur-scoring.cc: 
+       Use X of separation item as slur start. Fixes #120
+
 2006-10-29  Han-Wen Nienhuys  <hanwen@lilypond.org>
 
        * buildscripts/git-update-changelog.py (changelog_body): don't
index 33f35100550540614b8b2d77bee225580c12adb2..c8ee8888d594526ce74a543ee0c07ec5cfb3ef6b 100644 (file)
@@ -66,6 +66,12 @@ which scares away people.
 
 @end ignore
 
+@item Slurs now avoid clefs and key changes.
+@lilypond[fragment,ragged-right]
+\new Staff { \clef bass c^( \clef "G" g') } 
+@end lilypond
+
 @item The @code{FretBoards} context will generate guitar frettings
 automatically,
 
diff --git a/VERSION b/VERSION
index 597888e2cd739367f73307a63a8c39ba044d5070..b60133ba581e604e426f2b8c1f1e39fb7880d573 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,6 +1,6 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=9
-PATCH_LEVEL=27
+PATCH_LEVEL=28
 MY_PATCH_LEVEL=
 
index 73355dddea3f8d671fe2114684336ffbbd80eb13..135237beca5f545df4a46c45b666e023266c7dc9 100644 (file)
@@ -23,8 +23,6 @@ class Commit:
                   'author',
                   'committish'):
             self.__dict__[v] = dict[v]
-
-        # Sat Oct 28 18:52:30 2006 +0200
         
         self.date = ' '.join  (self.date.split (' ')[:-1])
         self.date = time.strptime (self.date, '%a %b %d %H:%M:%S %Y')
diff --git a/input/regression/slur-clef.ly b/input/regression/slur-clef.ly
new file mode 100644 (file)
index 0000000..0b87883
--- /dev/null
@@ -0,0 +1,6 @@
+\paper {
+  ragged-right = ##t
+  }
+\version "2.9.27"
+
+\new Staff { \clef bass c^( \clef "G" g') } 
index 4668c584895542b8b3ee5d612e2f0c7bb7f867ff..3e5b9d86b4fae42d53685177020cb980e23c4abd 100644 (file)
@@ -98,7 +98,7 @@ struct Slur_score_state
   Bezier get_best_curve ();
   void fill (Grob *);
   void set_next_direction ();
-
+  
   vector<Offset> generate_avoid_offsets () const;
   Drul_array<Bound_info> get_bound_info () const;
   void generate_curves () const;
@@ -109,6 +109,8 @@ struct Slur_score_state
   vector<Extra_collision_info> get_extra_encompass_infos () const;
   Real move_away_from_staffline (Real y, Grob *on_staff) const;
   int get_closest_index (SCM inspect_quants) const;
+
+  Grob *breakable_bound_item (Direction) const;  
 };
 
 void set_slur_control_points (Grob *me);
index 5ef9038dfbc3859c1377da7368c658b4db08b855..14e457b6ef047a3caf2bb245d44210e44aa79b18 100644 (file)
@@ -115,4 +115,4 @@ ADD_INTERFACE (Separating_group_spanner, "separation-spanner-interface",
 
               /* properties */
               "elements "
-              "padding");
+              "padding ");
index c203d4602dfec69dddb918fd1ce79b91ba0f65d3..864ea7747363dd13e982b0fb0439f0457279954f 100644 (file)
@@ -196,6 +196,17 @@ Slur_engraver::process_music ()
 void
 Slur_engraver::stop_translation_timestep ()
 {
+  if (Grob *g = unsmob_grob (get_property ("breakableSeparationItem")))
+    {
+      for (vsize i = 0; i < end_slurs_.size (); i++)
+       Slur::add_extra_encompass (end_slurs_[i], g);
+
+      if (!events_[START])
+       for (vsize i = 0; i < slurs_.size (); i++)
+         Slur::add_extra_encompass (slurs_[i], g);
+    }
+  
+  
   for (vsize i = 0; i < end_slurs_.size (); i++)
     announce_end_grob (end_slurs_[i], SCM_EOL);
   end_slurs_.clear ();
@@ -213,5 +224,8 @@ ADD_ACKNOWLEDGER (Slur_engraver, tuplet_number);
 ADD_TRANSLATOR (Slur_engraver,
                /* doc */ "Build slur grobs from slur events",
                /* create */ "Slur",
-               /* read */ "slurMelismaBusy doubleSlurs",
+               /* read */
+               "slurMelismaBusy "
+               "doubleSlurs ",
+
                /* write */ "");
index 6371082b077676783487be3943a13b874407c919..618786867efff0fc4352addff0882cc1607e1d12 100644 (file)
@@ -412,6 +412,23 @@ Slur_score_state::get_best_curve ()
   return configurations_[opt_idx]->curve_;
 }
 
+Grob *
+Slur_score_state::breakable_bound_item (Direction d) const
+{
+  Grob *col = slur_->get_bound (d)->get_column ();
+
+  extract_grob_set (slur_, "encompass-objects", extra_encompasses);
+
+  for (vsize i = 0; i < extra_encompasses.size (); i++)
+    {
+      Item *item = dynamic_cast<Item*> (extra_encompasses[i]);
+      if (item && col == item->get_column ())
+       return item;
+    }
+
+  return 0;
+}
+
 int
 Slur_score_state::get_closest_index (SCM inspect_quants) const
 {
@@ -450,7 +467,7 @@ Slur_score_state::get_y_attachment_range () const
        {
          end_ys[d] = dir_
            * max (max (dir_ * (base_attachments_[d][Y_AXIS]
-                                         + parameters_.region_size_ * dir_),
+                               + parameters_.region_size_ * dir_),
                        dir_ * (dir_ + extremes_[d].note_column_->extent (common_[Y_AXIS], Y_AXIS)[dir_])),
                   dir_ * base_attachments_[-d][Y_AXIS]);
        }
@@ -524,11 +541,18 @@ Slur_score_state::get_base_attachments () const
     {
       if (!extremes_[d].note_column_)
        {
-         Real x, y;
-         if (d == RIGHT)
+         Real x = 0;
+         Real y = 0;
+
+         if (Grob *g = breakable_bound_item (d))
+           {
+             x = robust_relative_extent (g, common_[X_AXIS], X_AXIS)[RIGHT];
+           }
+         else if (d == RIGHT)
            x = robust_relative_extent (extremes_[d].bound_, common_[X_AXIS], X_AXIS)[d];
          else
            x = slur_->get_broken_left_end_align ();
+         
          Grob *col = (d == LEFT) ? columns_[0] : columns_.back ();
 
          if (extremes_[-d].bound_ != col)
index 77dc44fb4accfd195a5ff2107c9f6afc04c3edc7..37277a762ac70a8fec386f0144aaa2f5d5cd4692 100644 (file)
 
     (SeparationItem
      . (
-       (X-extent . #f)
-       (Y-extent . #f)
+       (avoid-slur . inside)
+       (X-extent . ,ly:axis-group-interface::width)
+       (Y-extent . ,ly:axis-group-interface::height)
        (meta . ((class . Item)
                 (interfaces . (spacing-interface
                                separation-item-interface))))))