source file of the GNU LilyPond music typesetter
- (c) 1997--1999 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2000 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include "dimension-cache.hh"
broken_to_drul_[LEFT] = broken_to_drul_[RIGHT]=0;
}
+/**
+ Item copy ctor. Copy nothing: everything should be a elt property
+ or a special purpose poitner (such as broken_to_drul_[]) */
+Item::Item (Item const &s)
+ : Score_element (s)
+{
+ broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] =0;
+}
+
+
+
bool
Item::breakable_b () const
{
return false;
Item * i =dynamic_cast<Item*> (parent_l (X_AXIS));
- return (i) ? i->breakable_b () : get_elt_property( "breakable") != SCM_UNDEFINED;
-}
-
-Real
-Item::hpos_f() const
-{
- return relative_coordinate (0, X_AXIS);
+ return (i) ? i->breakable_b () : to_boolean (get_elt_property( "breakable"));
}
Line_of_score *
Item::line_l() const
{
Score_element *g = parent_l (X_AXIS);
- if (!g)
- return 0;
- return dynamic_cast<Score_element *> (g)-> line_l ();
+ return g ? g->line_l () : 0;
}
Item::try_visibility_lambda ()
{
SCM vis = remove_elt_property ("visibility-lambda");
- if (vis != SCM_UNDEFINED)
+ if (gh_procedure_p (vis))
{
SCM args = scm_listify (gh_int2scm (break_status_dir ()), SCM_UNDEFINED);
SCM result = gh_apply (vis, args);
- int trans = gh_scm2bool (gh_car (result));
- int empty = gh_scm2bool (gh_cdr (result));
+ bool trans = gh_scm2bool (gh_car (result));
+ bool empty = gh_scm2bool (gh_cdr (result));
if (empty)
{
Item * me = (Item *) (this);
if (!d)
return me;
- else
+ else if (breakable_b ())
{
me->do_break ();
return dynamic_cast<Item*> (broken_to_drul_[d]);
}
-}
-
-
-
-bool
-Item::broken_original_b () const
-{
- return broken_to_drul_[LEFT] || broken_to_drul_[RIGHT];
-}
-
-int
-Item::left_right_compare(Item const *l, Item const *r)
-{
- Paper_column *p1 = l->column_l ();
- Paper_column* p2 = r->column_l ();
- return p1->rank_i () - p2->rank_i ();
+ else
+ return 0;
}
Paper_column *
return dynamic_cast<Item*> (parent_l (X_AXIS))->column_l ();
}
-Item::Item (Item const &s)
- : Score_element (s)
-{
- broken_to_drul_[LEFT] = broken_to_drul_[RIGHT] =0;
-}
-
Direction
Item::break_status_dir () const
{