/*
This file is part of LilyPond, the GNU music typesetter.
- Copyright (C) 2000--2014 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ Copyright (C) 2000--2015 Han-Wen Nienhuys <hanwen@xs4all.nl>
LilyPond is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
#include "system.hh"
#include "warn.hh"
+using std::vector;
+
MAKE_SCHEME_CALLBACK (Align_interface, align_to_minimum_distances, 1);
SCM
Align_interface::align_to_minimum_distances (SCM smob)
{
- Grob *me = unsmob_grob (smob);
+ Grob *me = unsmob<Grob> (smob);
me->set_property ("positioning-done", SCM_BOOL_T);
SCM
Align_interface::align_to_ideal_distances (SCM smob)
{
- Grob *me = unsmob_grob (smob);
+ Grob *me = unsmob<Grob> (smob);
me->set_property ("positioning-done", SCM_BOOL_T);
if (!pure)
{
- Skyline_pair *skys = Skyline_pair::unsmob (g->get_property (a == Y_AXIS
+ Skyline_pair *skys = unsmob<Skyline_pair> (g->get_property (a == Y_AXIS
? "vertical-skylines"
: "horizontal-skylines"));
if (skys)
else
{
assert (a == Y_AXIS);
- Interval extent = g->pure_height (g, start, end);
+ Interval extent = g->pure_y_extent (g, start, end);
// This is a hack to get better accuracy on the pure-height of VerticalAlignment.
// It's quite common for a treble clef to be the highest element of one system
// of the system. This way, the tall treble clefs are only compared with the treble
// clefs of the other staff and they will be ignored if the staff above is, for example,
// lyrics.
- if (Axis_group_interface::has_interface (g))
+ if (has_interface<Axis_group_interface> (g))
{
extent = Axis_group_interface::rest_of_line_pure_height (g, start, end);
Interval begin_of_line_extent = Axis_group_interface::begin_of_line_pure_height (g, start);
SCM fv = ly_assoc_get (scm_cons (scm_from_int (start), scm_from_int (end)),
me->get_property ("minimum-translations-alist"),
SCM_EOL);
- if (fv != SCM_EOL)
+ if (!scm_is_null (fv))
return ly_scm2floatvector (fv);
}
Real spec_distance = 0;
if (Page_layout_problem::read_spacing_spec (spec, &spec_distance, ly_symbol2scm ("minimum-distance")))
- dy = max (dy, spec_distance);
+ dy = std::max (dy, spec_distance);
// Consider the likely final spacing when estimating distance between staves of the full score
if (INT_MAX == end && 0 == start
&& Page_layout_problem::read_spacing_spec (spec, &spec_distance, ly_symbol2scm ("basic-distance")))
- dy = max (dy, spec_distance);
+ dy = std::max (dy, spec_distance);
if (include_fixed_spacing && Page_layout_problem::is_spaceable (elems[j]) && last_spaceable_element)
{
Page_layout_problem::read_spacing_spec (spec,
&spaceable_padding,
ly_symbol2scm ("padding"));
- dy = max (dy, (last_spaceable_skyline.distance (skyline[-stacking_dir])
+ dy = std::max (dy, (last_spaceable_skyline.distance (skyline[-stacking_dir])
+ stacking_dir * (last_spaceable_element_pos - where) + spaceable_padding));
Real spaceable_min_distance = 0;
if (Page_layout_problem::read_spacing_spec (spec,
&spaceable_min_distance,
ly_symbol2scm ("minimum-distance")))
- dy = max (dy, spaceable_min_distance + stacking_dir * (last_spaceable_element_pos - where));
+ dy = std::max (dy, spaceable_min_distance + stacking_dir * (last_spaceable_element_pos - where));
- dy = max (dy, Page_layout_problem::get_fixed_spacing (last_spaceable_element, elems[j], spaceable_count,
+ dy = std::max (dy, Page_layout_problem::get_fixed_spacing (last_spaceable_element, elems[j], spaceable_count,
pure, start, end));
}
}
- dy = max (0.0, dy);
+ dy = std::max (0.0, dy);
down_skyline.raise (-stacking_dir * dy);
down_skyline.merge (skyline[stacking_dir]);
where += stacking_dir * dy;
Align_interface::set_ordered (Grob *me)
{
SCM ga_scm = me->get_object ("elements");
- Grob_array *ga = unsmob_grob_array (ga_scm);
+ Grob_array *ga = unsmob<Grob_array> (ga_scm);
if (!ga)
{
ga_scm = Grob_array::make_array ();
- ga = unsmob_grob_array (ga_scm);
+ ga = unsmob<Grob_array> (ga_scm);
me->set_object ("elements", ga_scm);
}
ADD_INTERFACE (Align_interface,
"Order grobs from top to bottom, left to right, right to left"
" or bottom to top. For vertical alignments of staves, the"
- " @code{break-system-details} of the left"
+ " @code{line-break-system-details} of the left"
" @rinternals{NonMusicalPaperColumn} may be set to tune"
" vertical spacing.",