]> git.donarmstrong.com Git - lilypond.git/blobdiff - lily/grob.cc
Docs: adjust translations include path
[lilypond.git] / lily / grob.cc
index 5660b688b81fe477be9a4a538a5d69f02f1f074d..911243bd5bd0a77a72e4f076a457d94ea9f03ef3 100644 (file)
@@ -1,9 +1,20 @@
 /*
-  grob.cc -- implement Grob
+  This file is part of LilyPond, the GNU music typesetter.
 
-  source file of the GNU LilyPond music typesetter
+  Copyright (C) 1997--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
 
-  (c) 1997--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  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/>.
 */
 
 #include "grob.hh"
@@ -11,6 +22,7 @@
 #include <cstring>
 
 #include "align-interface.hh"
+#include "axis-group-interface.hh"
 #include "input.hh"
 #include "international.hh"
 #include "item.hh"
@@ -143,6 +155,15 @@ Grob::get_print_stencil () const
          retval = Stencil (retval.extent_box (), expr);
        }
 
+      /* process whiteout */
+      if (to_boolean (get_property ("whiteout")))
+        {
+          /* Call the scheme procedure stencil-whiteout in scm/stencils.scm */
+          /* to add a round-filled-box stencil to the stencil list */
+          retval
+            = *unsmob_stencil (scm_call_1 (ly_lily_module_constant ("stencil-whiteout"),
+                                           retval.smobbed_copy()));
+        }
     }
 
   return retval;
@@ -650,6 +671,7 @@ ADD_INTERFACE (Grob,
               "staff-symbol "
               "stencil "
               "transparent "
+              "whiteout "
               );
 
 /****************************************************************
@@ -747,3 +769,18 @@ robust_relative_extent (Grob *me, Grob *refpoint, Axis a)
   return ext;
 }
 
+// Checks whether there is a vertical alignment in the chain of
+// parents between this and commony.
+bool
+Grob::check_cross_staff (Grob *commony)
+{
+  if (Align_interface::has_interface (commony))
+    return true;
+
+  for (Grob *g = this; g && g != commony; g = g->get_parent (Y_AXIS))
+    if (Align_interface::has_interface (g))
+      return true;
+
+  return false;
+}
+