: Grob (s)
{
broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] = 0;
+ cached_pure_height_valid_ = false;
}
/**
: Grob (s)
{
broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] = 0;
+ cached_pure_height_valid_ = false;
}
bool
Can't do this earlier, because try_visibility_lambda () might set
the elt property transparent, which would then be copied.
*/
- SCM vis = get_property ("break-visibility");
- if (scm_is_vector (vis))
- {
- bool visible = to_boolean (scm_c_vector_ref (vis, break_status_dir () + 1));
+ if (!Item::break_visible (this))
+ suicide ();
+}
- if (!visible)
- suicide ();
- }
+bool
+Item::break_visible (Grob *g)
+{
+ Item *it = dynamic_cast<Item*> (g);
+ SCM vis = g->get_property ("break-visibility");
+ if (scm_is_vector (vis))
+ return to_boolean (scm_c_vector_ref (vis, it->break_status_dir () + 1));
+ return true;
}
bool
}
Interval_t<int>
-Item::spanned_rank_iv () const
+Item::spanned_rank_interval () const
{
int c = get_column ()->get_rank ();
return Interval_t<int> (c, c);
return dynamic_cast<Item *> (unsmob_grob (s));
}
+Interval
+Item::pure_height (Grob *g, int start, int end)
+{
+ if (cached_pure_height_valid_)
+ return cached_pure_height_ + pure_relative_y_coordinate (g, start, end);
+
+ cached_pure_height_ = Grob::pure_height (this, start, end);
+ cached_pure_height_valid_ = true;
+ return cached_pure_height_ + pure_relative_y_coordinate (g, start, end);
+}
+
+bool
+Item::less (Grob * const &g1, Grob * const &g2)
+{
+ return dynamic_cast<Item*> (g1)->get_column ()->get_rank () < dynamic_cast<Item*> (g2)->get_column ()->get_rank ();
+}
+
ADD_INTERFACE (Item,
"Grobs can be distinguished in their role in the horizontal spacing.\n"