source file of the GNU LilyPond music typesetter
- (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
#include "grob.hh"
#include "ly-smobs.icc"
Grob *
-Grob::clone (int count) const
+Grob::clone () const
{
- return new Grob (*this, count);
+ return new Grob (*this);
}
-Grob::Grob (SCM basicprops,
- Object_key const *key)
+Grob::Grob (SCM basicprops)
{
- key_ = key;
/* FIXME: default should be no callback. */
self_scm_ = SCM_EOL;
GC. After smobify_self (), they are. */
smobify_self ();
- /*
- We always get a new key object for a new grob.
- */
- if (key_)
- ((Object_key *)key_)->unprotect ();
-
SCM meta = get_property ("meta");
if (scm_is_pair (meta))
{
set_property ("Y-extent", Grob::stencil_height_proc);
}
-Grob::Grob (Grob const &s, int copy_index)
+Grob::Grob (Grob const &s)
: dim_cache_ (s.dim_cache_)
{
- key_ = (use_object_keys) ? new Copied_key (s.key_, copy_index) : 0;
original_ = (Grob *) & s;
self_scm_ = SCM_EOL;
layout_ = 0;
smobify_self ();
- if (key_)
- ((Object_key *)key_)->unprotect ();
}
Grob::~Grob ()
Real x = scm_to_double (scm_cadr (rot));
Real y = scm_to_double (scm_caddr (rot));
- retval.rotate (angle, Offset (x, y));
+ retval.rotate_degrees (angle, Offset (x, y));
}
/* color support... see interpret_stencil_expression () for more... */
(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));
Interval
Grob::pure_height (Grob *refp, int start, int end)
{
- SCM proc = get_property_data ( ly_symbol2scm ("Y-extent"));
- Interval iv = robust_scm2interval (call_pure_function (proc,
- scm_list_1 (self_scm ()),
- start, end),
- Interval (0, 0));
+ SCM proc = get_property_data (ly_symbol2scm ("Y-extent"));
+ SCM iv_scm = call_pure_function (proc,
+ scm_list_1 (self_scm ()),
+ start, end);
+ Interval iv = robust_scm2interval (iv_scm, Interval (0, 0));
Real offset = pure_relative_y_coordinate (refp, start, end);
SCM min_ext = get_property ("minimum-Y-extent");
}
Interval_t<int>
-Grob::spanned_rank_iv ()
+Grob::spanned_rank_iv () const
{
return Interval_t<int> (-1, 0);
}
"before-line-breaking "
"cause "
"color "
+ "cross-staff "
"extra-X-extent "
"extra-Y-extent "
"extra-offset "
return grob_stencil_extent (me, Y_AXIS);
}
-MAKE_SCHEME_CALLBACK(Grob, y_parent_positioning, 1);
+MAKE_SCHEME_CALLBACK (Grob, y_parent_positioning, 1);
SCM
Grob::y_parent_positioning (SCM smob)
{
}
-MAKE_SCHEME_CALLBACK(Grob, x_parent_positioning, 1);
+MAKE_SCHEME_CALLBACK (Grob, x_parent_positioning, 1);
SCM
Grob::x_parent_positioning (SCM smob)
{