/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2005--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 2005--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
#include "misc.hh"
#include "note-head.hh"
#include "rhythmic-head.hh"
+#include "semi-tie.hh"
#include "spanner.hh"
#include "staff-symbol-referencer.hh"
#include "stem.hh"
for (vsize i = 0; i < bounds.size (); i++)
{
Grob *head = bounds[i];
- if (!Note_head::has_interface (head))
+ if (!has_interface<Note_head> (head))
continue;
if (!stem)
- stem = Grob::unsmob (head->get_object ("stem"));
+ stem = unsmob<Grob> (head->get_object ("stem"));
Real p = Staff_symbol_referencer::get_position (head);
Interval y ((p - 1) * 0.5 * staff_space,
boxes.push_back (Box (x, y));
}
- Grob *acc = Grob::unsmob (heads[i]->get_object ("accidental-grob"));
+ Grob *acc = unsmob<Grob> (heads[i]->get_object ("accidental-grob"));
if (acc)
acc->get_property ("after-line-breaking"); /* trigger tie-related suicide */
for (vsize i = 0; i < ties.size (); i++)
{
- Item *it = dynamic_cast<Spanner *> (ties[i])->get_bound (d);
+ Spanner *tie = dynamic_cast<Spanner *> (ties[i]);
+ Item *it = tie->get_bound (d);
if (it->break_status_dir ())
it = it->get_column ();
for (vsize i = 0; i < ties.size (); i++)
{
+ Spanner *tie = dynamic_cast<Spanner *> (ties[i]);
Tie_specification spec;
- spec.from_grob (ties[i]);
+ spec.from_grob (tie);
for (LEFT_and_RIGHT (d))
{
- spec.note_head_drul_[d] = Tie::head (ties[i], d);
- spec.column_ranks_[d] = Tie::get_column_rank (ties[i], d);
+ spec.note_head_drul_[d] = Tie::head (tie, d);
+ spec.column_ranks_[d] = Tie::get_column_rank (tie, d);
}
specifications_.push_back (spec);
}
int column_rank = -1;
for (vsize i = 0; i < semi_ties.size (); i++)
{
+ Item *semi_tie = dynamic_cast<Item *> (semi_ties[i]);
Tie_specification spec;
- Item *head = Item::unsmob (semi_ties[i]->get_object ("note-head"));
+ Item *head = Semi_tie::head (semi_tie);
if (!head)
programming_error ("LV tie without head?!");
spec.position_ = int (Staff_symbol_referencer::get_position (head));
}
- spec.from_grob (semi_ties[i]);
+ spec.from_grob (semi_tie);
spec.note_head_drul_[head_dir] = head;
- column_rank = Tie::get_column_rank (semi_ties[i], head_dir);
+ column_rank = Semi_tie::get_column_rank (semi_tie);
spec.column_ranks_ = Drul_array<int> (column_rank, column_rank);
heads.push_back (head);
specifications_.push_back (spec);
if (!spec.note_head_drul_[d])
continue;
- Grob *stem = Grob::unsmob (spec.note_head_drul_[d]->get_object ("stem"));
+ Grob *stem = unsmob<Grob> (spec.note_head_drul_[d]->get_object ("stem"));
if (stem
&& Stem::is_normal_stem (stem))
stems[d] = stem;
{
spec.has_manual_position_ = true;
spec.manual_position_ = scm_to_double (scm_car (entry));
- spec.has_manual_delta_y_ = (scm_inexact_p (scm_car (entry)) == SCM_BOOL_T);
+ /* TODO: check whether inexact? is an appropriate condition here */
+ spec.has_manual_delta_y_ = (scm_is_true (scm_inexact_p (scm_car (entry))));
}
if (scm_is_number (scm_cdr (entry)))