assert (!s->beam_l ());
s->set_elt_property ("beam", self_scm_);
- if (!spanned_drul_[LEFT])
- set_bounds (LEFT,s);
+ if (!get_bound (LEFT))
+ set_bound (LEFT,s);
else
- set_bounds (RIGHT,s);
+ set_bound (RIGHT,s);
}
int
their beam, during 'final-pre-processing'.]
*/
void
-Beam::do_pre_processing ()
+Beam::before_line_breaking ()
{
// Why?
if (visible_stem_count () < 2)
auto_knees ();
set_stem_directions ();
-
set_stem_shorten ();
}
Adjust stem lengths to reach beam.
*/
void
-Beam::do_post_processing ()
+Beam::after_line_breaking ()
{
/* first, calculate y, dy */
Real y, dy;
}
Array<Offset> ideals;
- Real x0 = first_visible_stem ()->hpos_f ();
+ Real x0 = first_visible_stem ()->relative_coordinate (0, X_AXIS);
for (int i=0; i < stem_count (); i++)
{
Stem* s = stem (i);
if (s->invisible_b ())
continue;
- ideals.push (Offset (s->hpos_f () - x0,
+ ideals.push (Offset (s->relative_coordinate (0, X_AXIS) - x0,
s->calc_stem_info ().idealy_f_));
}
Real dydx;
minimise_least_squares (&dydx, y, ideals); // duh, takes references
- Real dx = last_visible_stem ()->hpos_f () - x0;
+ Real dx = last_visible_stem ()->relative_coordinate (0, X_AXIS) - x0;
*dy = dydx * dx;
}
Real lengthened = paper_l ()->get_var ("beam_lengthened");
Real steep = paper_l ()->get_var ("beam_steep_slope");
- Real dx = last_visible_stem ()->hpos_f () - first_visible_stem ()->hpos_f ();
+ Real dx = last_visible_stem ()->relative_coordinate (0, X_AXIS) - first_visible_stem ()->relative_coordinate (0, X_AXIS);
Real dydx = dy && dx ? dy/dx : 0;
if (((y - first_ideal > lengthened) && (dydx > steep))
if (damping)
{
- Real dx = last_visible_stem ()->hpos_f ()
- - first_visible_stem ()->hpos_f ();
+ Real dx = last_visible_stem ()->relative_coordinate (0, X_AXIS)
+ - first_visible_stem ()->relative_coordinate (0, X_AXIS);
Real dydx = dy && dx ? dy/dx : 0;
dydx = 0.6 * tanh (dydx) / damping;
return dydx * dx;
int stem_multiplicity = (s->flag_i () - 2) >? 0;
Real interbeam_f = paper_l ()->interbeam_f (beam_multiplicity);
- Real x0 = first_visible_stem ()->hpos_f ();
- Real dx = last_visible_stem ()->hpos_f () - x0;
- Real stem_y = (dy && dx ? (s->hpos_f () - x0) / dx * dy : 0) + y;
+ Real x0 = first_visible_stem ()->relative_coordinate (0, X_AXIS);
+ Real dx = last_visible_stem ()->relative_coordinate (0, X_AXIS) - x0;
+ Real stem_y = (dy && dx ? (s->relative_coordinate (0, X_AXIS) - x0) / dx * dy : 0) + y;
/* knee */
Direction dir = directional_element(this).get ();
Molecule
Beam::stem_beams (Stem *here, Stem *next, Stem *prev) const
{
- if ((next && !(next->hpos_f () > here->hpos_f ())) ||
- (prev && !(prev->hpos_f () < here->hpos_f ())))
+ if ((next && !(next->relative_coordinate (0, X_AXIS) > here->relative_coordinate (0, X_AXIS))) ||
+ (prev && !(prev->relative_coordinate (0, X_AXIS) < here->relative_coordinate (0, X_AXIS))))
programming_error ("Beams are not left-to-right");
Real staffline_f = paper_l ()->get_var ("stafflinethickness");
Real interbeam_f = paper_l ()->interbeam_f (multiplicity);
- Real thick = gh_scm2double (get_elt_property ("beam-thickness"));;
+ Real thick = gh_scm2double (get_elt_property ("beam-thickness"));
Real bdy = interbeam_f;
Real stemdx = staffline_f;
Real dx = visible_stem_count () ?
- last_visible_stem ()->hpos_f () - first_visible_stem ()->hpos_f ()
+ last_visible_stem ()->relative_coordinate (0, X_AXIS) - first_visible_stem ()->relative_coordinate (0, X_AXIS)
: 0.0;
- Real dy = get_real ("height");
+ Real dy = gh_scm2double (get_elt_property ("height"));
Real dydx = dy && dx ? dy/dx : 0;
Molecule leftbeams;
Half beam should be one note-width,
but let's make sure two half-beams never touch
*/
- Real w = here->hpos_f () - prev->hpos_f ();
+ Real w = here->relative_coordinate (0, X_AXIS) - prev->relative_coordinate (0, X_AXIS);
w = w/2 <? nw_f;
Molecule a;
if (lhalfs) // generates warnings if not
int rhalfs = here->beam_count (RIGHT) - next->beam_count (LEFT);
int rwholebeams= here->beam_count (RIGHT) <? next->beam_count (LEFT) ;
- Real w = next->hpos_f () - here->hpos_f ();
+ Real w = next->relative_coordinate (0, X_AXIS) - here->relative_coordinate (0, X_AXIS);
Molecule a = lookup_l ()->beam (dydx, w + stemdx, thick);
a.translate_axis( - stemdx/2, X_AXIS);
int j = 0;
}
-Molecule*
-Beam::do_brew_molecule_p () const
+Molecule
+Beam::do_brew_molecule () const
{
- Molecule *mol_p = new Molecule;
+ Molecule mol;
if (!stem_count ())
- return mol_p;
+ return mol;
Real x0,dx;
if (visible_stem_count ())
{
- x0 = first_visible_stem ()->hpos_f ();
- dx = last_visible_stem ()->hpos_f () - x0;
+ x0 = first_visible_stem ()->relative_coordinate (0, X_AXIS);
+ dx = last_visible_stem ()->relative_coordinate (0, X_AXIS) - x0;
}
else
{
- x0 = stem (0)->hpos_f ();
- dx = stem_top ()->hpos_f () - x0;
+ x0 = stem (0)->relative_coordinate (0, X_AXIS);
+ dx = stem_top ()->relative_coordinate (0, X_AXIS) - x0;
}
- Real dy = get_real ("height");
+ Real dy = gh_scm2double (get_elt_property ("height"));
Real dydx = dy && dx ? dy/dx : 0;
- Real y = get_real ("y-position");
+ Real y = gh_scm2double (get_elt_property ("y-position"));
for (int j=0; j <stem_count (); j++)
{
Stem *i = stem (j);
Stem * next = (j < stem_count ()-1) ? stem (j+1) :0;
Molecule sb = stem_beams (i, next, prev);
- Real x = i->hpos_f ()-x0;
+ Real x = i->relative_coordinate (0, X_AXIS)-x0;
sb.translate (Offset (x, x * dydx + y));
- mol_p->add_molecule (sb);
+ mol.add_molecule (sb);
}
- mol_p->translate_axis (x0
- - spanned_drul_[LEFT]->relative_coordinate (0, X_AXIS), X_AXIS);
+ mol.translate_axis (x0
+ - get_bound (LEFT)->relative_coordinate (0, X_AXIS), X_AXIS);
- return mol_p;
+ return mol;
}
int