X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fself-aligment-interface.cc;h=9da0a406c212007d5250295df81a0dbd5af578d8;hb=9fc8eafc925fc7481d1163a43fb02c9b1f28fb9c;hp=70e2020743a52f90422f8ca720a0c3229ce27980;hpb=28976d28a04cfb9abe97af7214d7dce11f732604;p=lilypond.git diff --git a/lily/self-aligment-interface.cc b/lily/self-aligment-interface.cc index 70e2020743..9da0a406c2 100644 --- a/lily/self-aligment-interface.cc +++ b/lily/self-aligment-interface.cc @@ -1,109 +1,97 @@ +/* + self-alignment-interface.cc + + source file of the GNU LilyPond music typesetter + + (c) 2004--2005 Han-Wen Nienhuys +*/ + #include "self-alignment-interface.hh" + #include "warn.hh" -/* - Position centered on parent. - */ -MAKE_SCHEME_CALLBACK (Self_alignment_interface,centered_on_parent,2); +/* Position centered on parent. */ +MAKE_SCHEME_CALLBACK (Self_alignment_interface, centered_on_parent, 2); SCM Self_alignment_interface::centered_on_parent (SCM element_smob, SCM axis) { Grob *me = unsmob_grob (element_smob); - Axis a = (Axis) ly_scm2int (axis); + Axis a = (Axis) scm_to_int (axis); Grob *him = me->get_parent (a); - Interval he = him->extent (him,a); - - return scm_make_real (he.is_empty () ? 0.0 : he.center ()); + Interval he = him->extent (him, a); + + return scm_make_real (he.is_empty () ? 0.0 : he.center ()); } -MAKE_SCHEME_CALLBACK (Self_alignment_interface,aligned_on_parent,2); +MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_parent, 2); SCM Self_alignment_interface::aligned_on_parent (SCM element_smob, SCM axis) { Grob *me = unsmob_grob (element_smob); - Axis a = (Axis) ly_scm2int (axis); + Axis a = (Axis) scm_to_int (axis); Grob *him = me->get_parent (a); - Interval he = him->extent (him,a); - - SCM sym= (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X"): ly_symbol2scm ("self-alignment-Y"); + Interval he = him->extent (him, a); + + SCM sym = (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X") + : ly_symbol2scm ("self-alignment-Y"); SCM align_prop (me->internal_get_property (sym)); - if (!is_number (align_prop)) + if (!scm_is_number (align_prop)) return scm_int2num (0); Real x = 0.0; + Real align = scm_to_double (align_prop); - Real align = ly_scm2double (align_prop); - - Interval ext (me->extent (me,a)); + Interval ext (me->extent (me, a)); if (ext.is_empty ()) - { - programming_error ("I'm empty. Can't align on self"); - - } + programming_error ("can't align on self: empty element"); else - x -= ext.linear_combination (align) ; + x -= ext.linear_combination (align); if (!he.is_empty ()) - { - x += he.linear_combination (align); - } + x += he.linear_combination (align); return scm_make_real (x); } -/* - Position centered on parent. - */ -MAKE_SCHEME_CALLBACK (Self_alignment_interface,centered_on_other_axis_parent,2); +/* Position centered on parent. */ +MAKE_SCHEME_CALLBACK (Self_alignment_interface, centered_on_other_axis_parent, 2); SCM Self_alignment_interface::centered_on_other_axis_parent (SCM element_smob, SCM axis) { Grob *me = unsmob_grob (element_smob); - Axis a = (Axis) ly_scm2int (axis); + Axis a = (Axis) scm_to_int (axis); Grob *him = me->get_parent (other_axis (a)); - Interval he = him->extent (him,a); - - return scm_make_real (he.is_empty () ? 0.0 : he.center ()); -} - - + Interval he = him->extent (him, a); + return scm_make_real (he.is_empty () ? 0.0 : he.center ()); +} -/** - callback that centers the element on itself - - Requires that self-alignment-{X,Y} be set. - */ -MAKE_SCHEME_CALLBACK (Self_alignment_interface,aligned_on_self,2); +/** callback that centers the element on itself + Requires that self-alignment-{X, Y} be set. */ +MAKE_SCHEME_CALLBACK (Self_alignment_interface, aligned_on_self, 2); SCM Self_alignment_interface::aligned_on_self (SCM element_smob, SCM axis) { Grob *me = unsmob_grob (element_smob); - Axis a = (Axis) ly_scm2int (axis); + Axis a = (Axis) scm_to_int (axis); + + SCM sym = (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X") + : ly_symbol2scm ("self-alignment-Y"); - SCM sym= (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X"): ly_symbol2scm ("self-alignment-Y"); - SCM align (me->internal_get_property (sym)); - if (is_number (align)) + if (scm_is_number (align)) { - Interval ext (me->extent (me,a)); - + Interval ext (me->extent (me, a)); if (ext.is_empty ()) - { - programming_error ("I'm empty. Can't align on self"); - return scm_make_real (0.0); - } + programming_error ("can't align on self: empty element"); else - { - return scm_make_real (- ext.linear_combination (ly_scm2double (align))); - } + return scm_make_real (- ext.linear_combination (scm_to_double (align))); } return scm_make_real (0.0); } - ADD_INTERFACE (Self_alignment_interface, "self-alignment-interface", "Position this object on itself and/or on its parent. To this end, the following functions " " are provided: \n" @@ -117,7 +105,6 @@ ADD_INTERFACE (Self_alignment_interface, "self-alignment-interface", " extent of the parent \n" "@item Self_alignment_interface::centered_on_other_axis_parent\n" " For X-axis, center on the Y-parent, and vice versa.\n " - "@end table\n" - , + "@end table\n", "self-alignment-X self-alignment-Y");