if (!me->is_live ())
return SCM_BOOL_T;
+ me->set_property ("positioning-done", SCM_BOOL_T);
+
SCM accs = me->get_object ("accidental-grobs");
if (!scm_is_pair (accs))
return SCM_BOOL_T;
Align_interface::calc_positioning_done (SCM smob)
{
Grob *me = unsmob_grob (smob);
+
+ me->set_property ("positioning-done", SCM_BOOL_T);
+
SCM axis = scm_car (me->get_property ("axes"));
Axis ax = Axis (scm_to_int (axis));
Grob *grob = unsmob_grob (smob);
Item *me = dynamic_cast<Item *> (grob);
+
+ me->set_property ("positioning-done", SCM_BOOL_T);
+
vector<Grob*> elems = ordered_elements (me);
vector<Interval> extents;
Dot_column::calc_positioning_done (SCM smob)
{
Grob *me = unsmob_grob (smob);
+
+ me->set_property ("positioning-done", SCM_BOOL_T);
+
vector<Grob*> dots
= extract_grob_array (me, "dots");
Grob::internal_get_property (SCM sym) const
{
SCM val = get_property_data (sym);
+
+#ifndef NDEBUG
+ if (val == ly_symbol2scm ("calculation-in-progress"))
+ programming_error (_f ("cyclic dependency: calculation-in-progress encountered for #'%s (%s)",
+ ly_symbol2string (sym).c_str (),
+ name().c_str ()));
+#endif
+
if (ly_is_procedure (val)
|| is_simple_closure (val))
{
*/
if (value == SCM_UNSPECIFIED)
{
- value = internal_get_property (sym);
+ value = get_property_data (sym);
assert (value == SCM_EOL || value == marker);
if (value == marker)
*alist = scm_assq_remove_x (*alist, marker);
(a == X_AXIS)
? ly_symbol2scm ("X-extent")
: ly_symbol2scm ("Y-extent");
-
+
SCM ext = internal_get_property (ext_sym);
if (is_number_pair (ext))
real_ext.unite (ly_scm2interval (ext));
SCM
Note_collision_interface::calc_positioning_done (SCM smob)
{
- Grob *me = unsmob_grob (smob);
+ Grob *me = unsmob_grob (smob);
+ me->set_property ("positioning-done", SCM_BOOL_T);
+
Drul_array<vector<Grob*> > cg = get_clash_groups (me);
Direction d = UP;
Rest_collision::calc_positioning_done (SCM smob)
{
Grob *me = unsmob_grob (smob);
+
+ me->set_property ("positioning-done", SCM_BOOL_T);
+
extract_grob_set (me, "elements", elts);
vector<Grob*> rests;
Semi_tie_column::calc_positioning_done (SCM smob)
{
Grob *me = unsmob_grob (smob);
-
+
+ me->set_property ("positioning-done", SCM_BOOL_T);
+
extract_grob_set (me, "ties", lv_ro_ties);
vector<Grob*> lv_ties (lv_ro_ties);
if (!head_count (me))
return SCM_BOOL_T;
+ me->set_property ("positioning-done", SCM_BOOL_T);
+
extract_grob_set (me, "note-heads", ro_heads);
vector<Grob*> heads (ro_heads);
vector_sort (heads, position_less);
if (!ties.size ())
return SCM_BOOL_T;
+
+ me->set_property ("positioning-done", SCM_BOOL_T);
+
vector_sort (ties, Tie::less);
Tie_formatting_problem problem;