]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/grob-scheme.cc
Fix and document usage of `convert-ly - < test.ly'.
[lilypond.git] / lily / grob-scheme.cc
index 92f755d7a77e3eb098d84f1c3fa031c13a558d0a..1fe50f00f18b49afb443c5a91ff6014f0c9c3321 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1998--2011 Jan Nieuwenhuizen <janneke@gnu.org>
+  Copyright (C) 1998--2012 Jan Nieuwenhuizen <janneke@gnu.org>
   Han-Wen Nienhuys <hanwen@xs4all.nl>
 
   LilyPond is free software: you can redistribute it and/or modify
@@ -100,6 +100,27 @@ LY_DEFINE (ly_grob_pure_property, "ly:grob-pure-property",
   return retval;
 }
 
+LY_DEFINE (ly_grob_pure_height, "ly:grob-pure-height",
+           4, 1, 0, (SCM grob, SCM refp, SCM beg, SCM end, SCM val),
+           "Return the pure height of @var{grob} given refpoint @var{refp}."
+           "  If no value is found, return @var{val} or @code{'()}"
+           " if @var{val} is not specified.")
+{
+  Grob *sc = unsmob_grob (grob);
+  Grob *ref = unsmob_grob (refp);
+
+  LY_ASSERT_SMOB (Grob, grob, 1);
+  LY_ASSERT_SMOB (Grob, refp, 2);
+  LY_ASSERT_TYPE (scm_is_integer, beg, 3);
+  LY_ASSERT_TYPE (scm_is_integer, end, 4);
+  if (val == SCM_UNDEFINED)
+    val = SCM_EOL;
+
+  Interval retval = sc->pure_height (ref, scm_to_int (beg), scm_to_int (end));
+
+  return ly_interval2scm (retval);
+}
+
 LY_DEFINE (ly_grob_property, "ly:grob-property",
            2, 1, 0, (SCM grob, SCM sym, SCM val),
            "Return the value for property @var{sym} of @var{grob}."
@@ -432,3 +453,28 @@ LY_DEFINE (ly_grob_chain_callback, "ly:grob-chain-callback",
   chain_callback (gr, proc, sym);
   return SCM_UNSPECIFIED;
 }
+
+LY_DEFINE (ly_grob_vertical_less_p, "ly:grob-vertical<?",
+           2, 0, 0, (SCM a, SCM b),
+           "Does @var{a} lie above @var{b} on the page?")
+{
+  LY_ASSERT_SMOB (Grob, a, 1);
+  LY_ASSERT_SMOB (Grob, b, 2);
+
+  Grob *ga = unsmob_grob (a);
+  Grob *gb = unsmob_grob (b);
+
+  return ly_bool2scm (Grob::vertical_less (ga, gb));
+}
+
+LY_DEFINE (ly_grob_get_vertical_axis_group_index, "ly:grob-get-vertical-axis-group-index",
+           1, 0, 0, (SCM grob),
+           "Get the index of the vertical axis group the grob @var{grob} belongs to;"
+           " return @code{-1} if none is found.")
+{
+  Grob *gr = unsmob_grob (grob);
+
+  LY_ASSERT_SMOB (Grob, grob, 1);
+
+  return scm_from_int (Grob::get_vertical_axis_group_index (gr));
+}
\ No newline at end of file