X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fline-spanner.cc;h=6ad9b5879cac3428c65b5e5cec8e1eb169979295;hb=eee9576c5d8ee45e432365d15159044f9a06229c;hp=e9f18461a133b332eb204f2aef3288ca93c6387e;hpb=dd87abcb392b82031b1acb23de381b07b448b8b0;p=lilypond.git diff --git a/lily/line-spanner.cc b/lily/line-spanner.cc index e9f18461a1..6ad9b5879c 100644 --- a/lily/line-spanner.cc +++ b/lily/line-spanner.cc @@ -1,9 +1,20 @@ /* - line-spanner.cc -- implement Line_spanner + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2000--2009 Jan Nieuwenhuizen - (c) 2000--2007 Jan Nieuwenhuizen + 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 "align-interface.hh" @@ -13,7 +24,6 @@ #include "item.hh" #include "lily-proto.hh" #include "line-interface.hh" -#include "moment.hh" #include "output-def.hh" #include "pointer-group-interface.hh" #include "spanner.hh" @@ -26,7 +36,6 @@ class Line_spanner { public: DECLARE_SCHEME_CALLBACK (print, (SCM)); - DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM)); DECLARE_SCHEME_CALLBACK (calc_left_bound_info, (SCM)); DECLARE_SCHEME_CALLBACK (calc_left_bound_info_and_text, (SCM)); DECLARE_SCHEME_CALLBACK (calc_right_bound_info, (SCM)); @@ -100,7 +109,7 @@ Line_spanner::calc_bound_info (SCM smob, Direction dir) } details = scm_acons (ly_symbol2scm ("X"), - scm_from_double (bound_grob->extent (commonx, X_AXIS) + scm_from_double (robust_relative_extent (bound_grob, commonx, X_AXIS) .linear_combination (attach)), details); } @@ -212,28 +221,8 @@ Line_spanner::print (SCM smob) { Spanner *me = dynamic_cast (unsmob_grob (smob)); - Interval_t moments = me->spanned_time (); - /* - We remove the line at the start of the line. For piano voice - indicators, it makes no sense to have them at the start of the - line. - - I'm not sure what the official rules for glissandi are, but - usually the 2nd note of the glissando is "exact", so when playing - from the start of the line, there is no need to glide. - - From a typographical p.o.v. this makes sense, since the amount of - space left of a note at the start of a line is very small. - - --hwn. - - */ - if (moments.length () == Moment (0,0)) - return SCM_EOL; - Drul_array bounds (me->get_property ("left-bound-info"), me->get_property ("right-bound-info")); - Grob *commonx = me->get_bound (LEFT)->common_refpoint (me->get_bound (RIGHT), X_AXIS); commonx = me->common_refpoint (commonx, X_AXIS); @@ -343,23 +332,22 @@ Line_spanner::print (SCM smob) line.translate (Offset (-me->relative_coordinate (commonx, X_AXIS), -me->relative_coordinate (my_common_y, Y_AXIS))); - + return line.smobbed_copy (); } ADD_INTERFACE (Line_spanner, - "Generic line drawn between two objects, e.g. for use with glissandi.\n" - "The property @code{style} can be @code{line}, " - "@code{dashed-line}, @code{trill}, \n" - "@code{dotted-line} or @code{zigzag}.\n" - "\n", + "Generic line drawn between two objects, e.g., for use with" + " glissandi.", - "bound-details " + /* properties */ + "bound-details " "extra-dy " "gap " "left-bound-info " "note-columns " - "right-bound-info " + "right-bound-info " "thickness " + "to-barline " );