lilypond-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Fix extra spacing in Kievan notation (issue 6684051)


From: aleksandr . andreev
Subject: Fix extra spacing in Kievan notation (issue 6684051)
Date: Mon, 15 Oct 2012 02:43:13 +0000

Reviewers: ,

Message:
Please review.

Description:
Fix extra spacing in Kievan notation

In Kievan notation, notes should be spaced as tightly as possible within
melismas.

This patch fixes extra spacing caused by long syllables.

Issue 2631.

Please review this at http://codereview.appspot.com/6684051/

Affected files:
  M lily/include/paper-column.hh
  M lily/paper-column.cc
  M lily/spacing-spanner.cc


Index: lily/include/paper-column.hh
diff --git a/lily/include/paper-column.hh b/lily/include/paper-column.hh
index 01a84d50dfd9a7085dfb7bbb1d13059e208ba507..f4bccf391f3ec2e6d32135ef20ee08a3224a7914 100644
--- a/lily/include/paper-column.hh
+++ b/lily/include/paper-column.hh
@@ -57,6 +57,7 @@ public:
   static bool is_used (Grob *);
   static bool is_breakable (Grob *);
   static bool is_extraneous_column_from_ligature (Grob *);
+  static bool is_kievan (Grob *);
   static Real minimum_distance (Grob *l, Grob *r);
   static Interval break_align_width (Grob *me, SCM align_sym);
 };
Index: lily/paper-column.cc
diff --git a/lily/paper-column.cc b/lily/paper-column.cc
index 78f2786ef89b34f41cefcb63cc8d8e4c352a9bbf..ff6c0292204586770534e1a0f8d542bd1ea77f37 100644
--- a/lily/paper-column.cc
+++ b/lily/paper-column.cc
@@ -381,6 +381,21 @@ Paper_column::is_extraneous_column_from_ligature (Grob *me)
   return has_notehead;
 }

+bool
+Paper_column::is_kievan (Grob *me)
+{
+  if (!is_musical (me))
+    return false;
+
+  extract_grob_set (me, "elements", elts);
+  for (vsize i = 0; i < elts.size (); i++)
+    {
+      if (elts[i]->get_property ("style") == ly_symbol2scm ("kievan"))
+        return true;
+    }
+  return false;
+}
+
 ADD_INTERFACE (Paper_column,
"@code{Paper_column} objects form the top-most address@hidden"
                " for items.  There are two types of columns: musical and"
Index: lily/spacing-spanner.cc
diff --git a/lily/spacing-spanner.cc b/lily/spacing-spanner.cc
index 022c6a121949543fa05c7fd4b4fba680aa8b1fea..d77a90a4ac449d0678e085d022c336f2d9c4ee41 100644
--- a/lily/spacing-spanner.cc
+++ b/lily/spacing-spanner.cc
@@ -425,7 +425,8 @@ Spacing_spanner::musical_column_spacing (Grob *me,
          the left-hand column is "genuine". This is a dirty hack and it
          should be fixed in the ligature-engravers. --jneem
       */
-      if (Paper_column::is_extraneous_column_from_ligature (left_col))
+      if (Paper_column::is_extraneous_column_from_ligature (left_col) ||
+          Paper_column::is_kievan (left_col))
         spring.set_distance (spring.min_distance ());
       else
spring.set_distance (max (left_col->extent (left_col, X_AXIS)[RIGHT],





reply via email to

[Prev in Thread] Current Thread [Next in Thread]