]> git.donarmstrong.com Git - lilypond.git/commitdiff
Fixes annotate spacing (issue 3169)
authorMike Solomon <mike@apollinemike.com>
Sat, 2 Mar 2013 09:27:30 +0000 (10:27 +0100)
committerMike Solomon <mike@apollinemike.com>
Sat, 2 Mar 2013 09:27:30 +0000 (10:27 +0100)
Avoids measuring distances between empty and non-empty skylines.

lily/skyline.cc
scm/lily.scm
scm/paper-system.scm
scm/skyline.scm [new file with mode: 0644]

index ed5f390a017bbfdf59ad773c61d7f77fa0570c1b..bf95fe35418153ce65237a415a29c4d4553ecde0 100644 (file)
@@ -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 ());
+}
index e5e8cd93d67d871ef2be83499d2b572db9a5bee3..1c9353ff59a0750b9267424e39fc5be872ad419a 100644 (file)
@@ -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"
index 5a368dbe623b6bc772a623841ee88d4b4c91ae77..8269c77e1881e01cc6df806573ecaaa88ebe1226 100644 (file)
         (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 (file)
index 0000000..c4d1839
--- /dev/null
@@ -0,0 +1,25 @@
+;;;; This file is part of LilyPond, the GNU music typesetter.
+;;;;
+;;;; Copyright (C) 2013 Mike Solomon <mike@mikesolomon.org>
+;;;;
+;;;; 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 <http://www.gnu.org/licenses/>.
+
+(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))))