#include "item.hh"
+#include "axis-group-interface.hh"
#include "paper-score.hh"
#include "warn.hh"
#include "paper-column.hh"
}
bool
-Item::is_breakable (Grob *me)
+Item::is_non_musical (Grob *me)
{
if (me->original ())
return false;
- if (!dynamic_cast<Item *> (me))
- me->programming_error ("only items can be breakable.");
-
Item *i = dynamic_cast<Item *> (me->get_parent (X_AXIS));
- return (i) ? Item::is_breakable (i) : to_boolean (me->get_property ("breakable"));
+ return i ? Item::is_non_musical (i) : to_boolean (me->get_property ("non-musical"));
}
Paper_column *
if (is_broken ())
return;
- if (Item::is_breakable (this))
+ if (Item::is_non_musical (this))
copy_breakable_items ();
}
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
{
" end-of-line-invisible no yes yes\n"
" center-invisible yes no yes\n"
"@end example\n",
- "no-spacing-rods break-visibility breakable")
+
+ /* properties */
+ "break-visibility "
+ "no-spacing-rods "
+ "non-musical")