source file of the GNU LilyPond music typesetter
- (c) 1996--2002 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1996--2004 Han-Wen Nienhuys <hanwen@cs.uu.nl>
*/
#include <math.h>
#include <libc-extension.hh>
#include "spanner.hh"
#include "paper-column.hh"
#include "paper-score.hh"
-#include "molecule.hh"
+#include "stencil.hh"
#include "paper-outputter.hh"
#include "paper-column.hh"
#include "system.hh"
}
}
broken_intos_.sort (Spanner::compare);
+ for (int i= broken_intos_.size();i--;)
+ broken_intos_[i]->break_index_ = i;
+}
+
+int
+Spanner::get_break_index ()const
+{
+ return break_index_;
}
void
return iv;
}
+
Item*
Spanner::get_bound (Direction d) const
{
Spanner::Spanner (SCM s)
: Grob (s)
{
+ break_index_ = 0;
spanned_drul_[LEFT]=0;
spanned_drul_[RIGHT]=0;
+
Group_interface::add_thing (this, ly_symbol2scm ("interfaces"), ly_symbol2scm ("spanner-interface"));
-
-
}
Spanner::Spanner (Spanner const &s)
// Relevant only if left span point is first column in line
if (sc != NULL &&
- sc->break_status_dir () == RIGHT)
+ sc->break_status_dir () == RIGHT)
{
/*
}
SCM
-Spanner::do_derived_mark ()
+Spanner::do_derived_mark () const
{
/*
We'd be fucked if this is called before spanned_drul_[] is inited. */
r.item_l_drul_[LEFT] = sp->get_bound (LEFT);
r.item_l_drul_[RIGHT] = sp->get_bound (RIGHT);
r.distance_ =
- gh_scm2double (me->get_grob_property ("minimum-length"))
- * 1.0;
+ robust_scm2double (me->get_grob_property ("minimum-length"), 0);
r.add_to_cols ();
return SCM_UNSPECIFIED;
}
+/*
+ Return I such that SP == SP->ORIGINAL_->BROKEN_INTOS_[I].
+ */
+int
+broken_spanner_index (Spanner * sp)
+{
+ Spanner * parent = dynamic_cast<Spanner*> (sp->original_);
+ return parent->broken_intos_.find_index (sp);
+}
+
+
Spanner*
unsmob_spanner (SCM s )
{
ADD_INTERFACE(Spanner,
"spanner-interface",
- "
-Other grobs have a shape that depends on the horizontal spacing. For
-example, slur, beam, tie, etc. These grobs form a subtype called
-@code{Spanner}. All spanners have two span-points (these must be
-@code{Item}s), one on the left and one on the right. The left bound is
-also the X-reference point of the spanner.
-",
+"Other grobs have a shape that depends on the horizontal spacing. For\n"
+"example, slur, beam, tie, etc. These grobs form a subtype called\n"
+"@code{Spanner}. All spanners have two span-points (these must be\n"
+"@code{Item}s), one on the left and one on the right. The left bound is\n"
+"also the X-reference point of the spanner.\n"
+,
"minimum-length");