]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/item.cc
Fix #93.
[lilypond.git] / lily / item.cc
index f4760eb2fd564bdb5d4555fa7592520a2e7fd679..5cf717a300695192cf49726f8f7dbce18fd18187 100644 (file)
@@ -8,6 +8,7 @@
 
 #include "item.hh"
 
+#include "axis-group-interface.hh"
 #include "paper-score.hh"
 #include "warn.hh"
 #include "paper-column.hh"
@@ -149,13 +150,37 @@ Item::handle_prebroken_dependencies ()
   SCM vis = get_property ("break-visibility");
   if (scm_is_vector (vis))
     {
-      bool visible = to_boolean (scm_vector_ref (vis, scm_from_int (break_status_dir () + 1)));
+      bool visible = to_boolean (scm_c_vector_ref (vis, break_status_dir () + 1));
 
       if (!visible)
        suicide ();
     }
 }
 
+bool
+Item::pure_is_visible (int start, int end) const
+{
+  SCM vis = get_property ("break-visibility");
+  if (scm_is_vector (vis))
+    {
+      int pos = 1;
+      int pc_rank = Paper_column::get_rank (get_column ());
+      if (pc_rank == start)
+       pos = 2;
+      else if (pc_rank == end)
+       pos = 0;
+      return to_boolean (scm_vector_ref (vis, scm_from_int (pos)));
+    }
+  return true;
+}
+
+Interval_t<int>
+Item::spanned_rank_iv ()
+{
+  int c = get_column ()->get_rank ();
+  return Interval_t<int> (c, c);
+}
+
 void
 Item::derived_mark () const
 {
@@ -172,9 +197,7 @@ unsmob_item (SCM s)
 }
 
 ADD_INTERFACE (Item,
-              "item-interface",
-              "\n"
-              "\n"
+
               "Grobs can be distinguished in their role in the horizontal spacing.\n"
               "Many grobs define constraints on the spacing by their sizes. For\n"
               "example, note heads, clefs, stems, and all other symbols with a fixed\n"
@@ -210,5 +233,6 @@ ADD_INTERFACE (Item,
 
               /* properties */
               "break-visibility "
-              "no-spacing-rods "
+              "extra-spacing-width "
+              "infinite-spacing-height "
               "non-musical")