X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fself-aligment-interface.cc;h=47607b096f84ab1fbf4742a26314dca52fa79305;hb=7aca33f5805fcf6af6ccc1fa722abbfbb9b26ee6;hp=66e71f0497083a98348dfe50e96ee7fefeec95f3;hpb=9e80da91309faff260dacdf2e25ed91d183ebc5d;p=lilypond.git diff --git a/lily/self-aligment-interface.cc b/lily/self-aligment-interface.cc index 66e71f0497..47607b096f 100644 --- a/lily/self-aligment-interface.cc +++ b/lily/self-aligment-interface.cc @@ -1,9 +1,20 @@ /* - self-alignment-interface.cc -- implement Self_alignment_interface - - source file of the GNU LilyPond music typesetter + This file is part of LilyPond, the GNU music typesetter. - (c) 2004--2007 Han-Wen Nienhuys + Copyright (C) 2004--2010 Han-Wen Nienhuys + + LilyPond is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + LilyPond is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with LilyPond. If not, see . */ #include "self-alignment-interface.hh" @@ -16,18 +27,25 @@ MAKE_SCHEME_CALLBACK (Self_alignment_interface, y_aligned_on_self, 1); SCM Self_alignment_interface::y_aligned_on_self (SCM element) { - return aligned_on_self (unsmob_grob (element), Y_AXIS); + return aligned_on_self (unsmob_grob (element), Y_AXIS, false, 0, 0); } MAKE_SCHEME_CALLBACK (Self_alignment_interface, x_aligned_on_self, 1); SCM Self_alignment_interface::x_aligned_on_self (SCM element) { - return aligned_on_self (unsmob_grob (element), X_AXIS); + return aligned_on_self (unsmob_grob (element), X_AXIS, false, 0, 0); +} + +MAKE_SCHEME_CALLBACK (Self_alignment_interface, pure_y_aligned_on_self, 3); +SCM +Self_alignment_interface::pure_y_aligned_on_self (SCM smob, SCM start, SCM end) +{ + return aligned_on_self (unsmob_grob (smob), Y_AXIS, true, robust_scm2int (start, 0), robust_scm2int (end, INT_MAX)); } SCM -Self_alignment_interface::aligned_on_self (Grob *me, Axis a) +Self_alignment_interface::aligned_on_self (Grob *me, Axis a, bool pure, int start, int end) { SCM sym = (a == X_AXIS) ? ly_symbol2scm ("self-alignment-X") : ly_symbol2scm ("self-alignment-Y"); @@ -35,7 +53,7 @@ Self_alignment_interface::aligned_on_self (Grob *me, Axis a) SCM align (me->internal_get_property (sym)); if (scm_is_number (align)) { - Interval ext (me->extent (me, a)); + Interval ext (me->maybe_pure_extent (me, a, pure, start, end)); if (ext.is_empty ()) programming_error ("cannot align on self: empty element"); else