X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fsemi-tie.cc;h=042316079841728750fc9a81f7d542c72460f6c2;hb=5bbfc22fce036b9b69df5e420de93e11da23c05e;hp=c5a514b53559662c532a5dae6cdf6d684e0d894e;hpb=8624c6220a4c6a9c3f39f330e7024cdb72fa54ce;p=lilypond.git diff --git a/lily/semi-tie.cc b/lily/semi-tie.cc index c5a514b535..0423160798 100644 --- a/lily/semi-tie.cc +++ b/lily/semi-tie.cc @@ -1,10 +1,21 @@ /* - semi-tie.cc -- implement Semi_tie + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2005--2014 Han-Wen Nienhuys - (c) 2005--2006 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 "semi-tie-column.hh" @@ -15,51 +26,61 @@ #include "warn.hh" #include "staff-symbol-referencer.hh" -ADD_INTERFACE(Semi_tie, - - "semi-tie-interface", - - "A tie which is only on one side connected to note heads. ", +ADD_INTERFACE (Semi_tie, + "A tie which is only connected to a note head on one side." + "\n" + "The following properties may be set in the @code{details}" + " list:\n" + "\n" + "@table @code\n" + "@item height-limit\n" + "Maximum tie height: The longer the tie, the closer it is" + " to this height.\n" + "@item ratio\n" + "Parameter for tie shape. The higher this number, the" + " quicker the tie attains its @code{height-limit}.\n" + "@end table\n", - /* properties */ - "control-points " - "direction " - "details " - "note-head " - "thickness " - ); + /* properties */ + "control-points " + "direction " + "details " + "head-direction " + "note-head " + "thickness " + ); -MAKE_SCHEME_CALLBACK(Semi_tie, calc_control_points, 1) +MAKE_SCHEME_CALLBACK (Semi_tie, calc_control_points, 1) SCM Semi_tie::calc_control_points (SCM smob) { - Grob *me = unsmob_grob (smob); + Grob *me = Grob::unsmob (smob); (void) me->get_property ("direction"); - + if (Semi_tie_column::has_interface (me->get_parent (Y_AXIS))) { me->get_parent (Y_AXIS)->get_property ("positioning-done"); } else { - programming_error ("lv tie without Semi_tie_column. Killing lv tie."); - me->suicide (); + programming_error ("lv tie without Semi_tie_column. Killing lv tie."); + me->suicide (); } - - return SCM_UNSPECIFIED; + + return me->get_property_data ("control-points"); } int Semi_tie::get_position (Grob *me) { - Grob *h = unsmob_grob (me->get_object ("note-head")); + Grob *h = Grob::unsmob (me->get_object ("note-head")); return (int) rint (Staff_symbol_referencer::get_position (h)); } bool Semi_tie::less (Grob *const &s1, - Grob *const &s2) + Grob *const &s2) { return get_position (s1) < get_position (s2); } - +