From: Mike Solomon Date: Sat, 2 Mar 2013 09:27:30 +0000 (+0100) Subject: Fixes annotate spacing (issue 3169) X-Git-Tag: release/2.17.14-1~16 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=0d1e65a22f4689d6f497243cf65df1a8d3fc8561;p=lilypond.git Fixes annotate spacing (issue 3169) Avoids measuring distances between empty and non-empty skylines. --- diff --git a/lily/skyline.cc b/lily/skyline.cc index ed5f390a01..bf95fe3541 100644 --- a/lily/skyline.cc +++ b/lily/skyline.cc @@ -932,3 +932,12 @@ Skyline::get_height (SCM skyline_scm, SCM x_scm) Real x = robust_scm2double (x_scm, 0.0); return scm_from_double (Skyline::unsmob (skyline_scm)->height (x)); } + +LY_DEFINE (ly_skyline_empty_p, "ly:skyline-empty?", + 1, 0, 0, (SCM sky), + "Return whether @var{sky} is empty.") +{ + Skyline *s = Skyline::unsmob (sky); + LY_ASSERT_SMOB (Skyline, sky, 1); + return scm_from_bool (s->is_empty ()); +} diff --git a/scm/lily.scm b/scm/lily.scm index e5e8cd93d6..1c9353ff59 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -458,6 +458,7 @@ messages into errors.") "define-note-names.scm" "c++.scm" "chord-entry.scm" + "skyline.scm" "stencil.scm" "define-markup-commands.scm" "markup.scm" diff --git a/scm/paper-system.scm b/scm/paper-system.scm index 5a368dbe62..8269c77e18 100644 --- a/scm/paper-system.scm +++ b/scm/paper-system.scm @@ -226,7 +226,7 @@ (horizon-padding (and (ly:grob? grob) (ly:grob-property grob 'skyline-horizontal-padding 0))) - (padding-annotation (if next-system + (padding-annotation (if (skyline-pair-and-non-empty? next-system) (annotate-padding (- system-Y) system-X skyline (paper-system-extent system X) (- next-system-Y) next-system-X next-skyline (paper-system-extent next-system X) diff --git a/scm/skyline.scm b/scm/skyline.scm new file mode 100644 index 0000000000..c4d18396e9 --- /dev/null +++ b/scm/skyline.scm @@ -0,0 +1,25 @@ +;;;; This file is part of LilyPond, the GNU music typesetter. +;;;; +;;;; Copyright (C) 2013 Mike Solomon +;;;; +;;;; 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 . + +(define-public (skyline-pair::empty? skyp) + (and (ly:skyline-empty? (ly:skyline-pair::skyline skyp UP)) + (ly:skyline-empty? (ly:skyline-pair::skyline skyp DOWN)))) + +; checks if the pair is not null, and then if not empty +(define-public (skyline-pair-and-non-empty? skyp) + (and (ly:skyline-pair? skyp) + (not (skyline-pair::empty? skyp))))