property_alist_ = gh_cons (gh_cons (sym, val), property_alist_);
}
-
void
Score_element::set_elt_pointer (const char* k, SCM v)
{
Interval
Score_element::molecule_extent (Score_element const *s, Axis a )
{
- Molecule m = s->do_brew_molecule();
+ Molecule m = s->get_molecule ();
return m.extent(a);
}
Molecule
Score_element::get_molecule () const
{
- if (to_boolean (get_elt_property ("transparent")))
- return Molecule ();
+ SCM proc = get_elt_property ("molecule-callback");
+ if (gh_procedure_p (proc))
+ return create_molecule (gh_apply (proc, gh_list (this->self_scm_, SCM_UNDEFINED)));
- return do_brew_molecule ();
+ return Molecule ();
}
}
-/*
+MAKE_SCHEME_SCORE_ELEMENT_CALLBACKS(Score_element)
+
+ /*
ugh.
*/
+
Molecule
-Score_element::do_brew_molecule() const
+Score_element::do_brew_molecule () const
{
SCM glyph = get_elt_property ("glyph");
if (gh_string_p (glyph))
{
return lookup_l ()->afm_find (String (ly_scm2string (glyph)));
-
}
else
{
pointer_alist_ = SCM_EOL;
set_extent_callback (0, Y_AXIS);
set_extent_callback (0, X_AXIS);
-}
+ for (int a= X_AXIS; a <= Y_AXIS; a++)
+ {
+ dim_cache_[a].off_callbacks_.clear ();
+ }
+}
void
Score_element::handle_prebroken_dependencies()
{
}
-
Score_element*
Score_element::find_broken_piece (Line_of_score*) const
{
return SCM_EOL;
}
scm_gc_mark (s->pointer_alist_);
+
+ s->do_derived_mark ();
+ if (s->parent_l (Y_AXIS))
+ scm_gc_mark (s->parent_l (Y_AXIS)->self_scm_);
+ if (s->parent_l (X_AXIS))
+ scm_gc_mark (s->parent_l (X_AXIS)->self_scm_);
+
return s->property_alist_;
}
return 1;
}
+void
+Score_element::do_derived_mark ()
+{
+}
+
void
Score_element::do_smobify_self ()
{