SCM order = break_align_order (me);
- if (order == SCM_BOOL_F)
+ if (scm_is_false (order))
return elts;
vector<Grob *> writable_elts (elts);
for (vsize i = writable_elts.size (); i--;)
{
Grob *g = writable_elts[i];
- if (g && sym == g->get_property ("break-align-symbol"))
+ if (g && scm_is_eq (sym, g->get_property ("break-align-symbol")))
{
new_elts.push_back (g);
writable_elts.erase (writable_elts.begin () + i);
SCM
Break_alignment_interface::calc_positioning_done (SCM smob)
{
- Grob *grob = Grob::unsmob (smob);
+ Grob *grob = unsmob<Grob> (smob);
Item *me = dynamic_cast<Item *> (grob);
me->set_property ("positioning-done", SCM_BOOL_T);
Grob *elt = elts[i];
if (edge_idx == VPOS
- && (elt->get_property ("break-align-symbol")
- == ly_symbol2scm ("left-edge")))
+ && scm_is_eq (elt->get_property ("break-align-symbol"),
+ ly_symbol2scm ("left-edge")))
edge_idx = idx;
SCM l = elt->get_property ("space-alist");
}
}
- if (rsym == ly_symbol2scm ("left-edge"))
+ if (scm_is_eq (rsym, ly_symbol2scm ("left-edge")))
edge_idx = next_idx;
SCM entry = SCM_EOL;
sym_string = ly_symbol2string (rsym);
string orig_string;
- if (Grob::is_smob (l->get_property ("cause")))
- orig_string = Grob::unsmob (l->get_property ("cause"))->name ();
+ if (unsmob<Grob> (l->get_property ("cause")))
+ orig_string = unsmob<Grob> (l->get_property ("cause"))->name ();
programming_error (to_string ("No spacing entry from %s to `%s'",
orig_string.c_str (),
if (r)
{
- if (type == ly_symbol2scm ("extra-space"))
+ if (scm_is_eq (type, ly_symbol2scm ("extra-space")))
offsets[next_idx] = extents[idx][RIGHT] + distance
- extents[next_idx][LEFT];
/* should probably junk minimum-space */
- else if (type == ly_symbol2scm ("minimum-space"))
+ else if (scm_is_eq (type, ly_symbol2scm ("minimum-space")))
offsets[next_idx] = max (extents[idx][RIGHT], distance);
}
else
SCM
Break_alignable_interface::self_align_callback (SCM grob)
{
- Grob *me = Grob::unsmob (grob);
+ Grob *me = unsmob<Grob> (grob);
Item *alignment = dynamic_cast<Item *> (me->get_parent (X_AXIS));
- if (!Break_alignment_interface::has_interface (alignment))
+ if (!has_interface<Break_alignment_interface> (alignment))
return scm_from_int (0);
SCM symbol_list = me->get_property ("break-align-symbols");
SCM sym = scm_car (symbol_list);
for (vsize i = 0; i < elements.size (); i++)
{
- if (elements[i]->get_property ("break-align-symbol") == sym)
+ if (scm_is_eq (sym, elements[i]->get_property ("break-align-symbol")))
{
if (Item::break_visible (elements[i])
+ // TODO SCM: simplify syntax?
&& !elements[i]->extent (elements[i], X_AXIS).is_empty ())
{
break_aligned_grob = i;
SCM
Break_aligned_interface::calc_average_anchor (SCM grob)
{
- Grob *me = Grob::unsmob (grob);
+ Grob *me = unsmob<Grob> (grob);
Real avg = 0.0;
int count = 0;
SCM
Break_aligned_interface::calc_extent_aligned_anchor (SCM smob)
{
- Grob *me = Grob::unsmob (smob);
+ Grob *me = unsmob<Grob> (smob);
Real alignment = robust_scm2double (me->get_property ("break-align-anchor-alignment"), 0.0);
Interval iv = me->extent (me, X_AXIS);
Break_aligned_interface::calc_break_visibility (SCM smob)
{
/* a BreakAlignGroup is break-visible if it has one element that is break-visible */
- Grob *me = Grob::unsmob (smob);
+ Grob *me = unsmob<Grob> (smob);
SCM ret = scm_c_make_vector (3, SCM_EOL);
extract_grob_set (me, "elements", elts);
for (int dir = 0; dir <= 2; dir++)