X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fpaper-book-scheme.cc;h=b28c7a898a58f997bd267fd0f7462f62a90e49b1;hb=d544bd3103acc8175089ec6aeecd57376f2d201d;hp=94bb17f05e0f3626f25e451f99372aa88f316b95;hpb=14c5f7683efc21f5cd168a713a34b3362f8c6d67;p=lilypond.git diff --git a/lily/paper-book-scheme.cc b/lily/paper-book-scheme.cc index 94bb17f05e..b28c7a898a 100644 --- a/lily/paper-book-scheme.cc +++ b/lily/paper-book-scheme.cc @@ -1,9 +1,20 @@ /* - paper-book-scheme.cc -- implement Paper_book bindings + This file is part of LilyPond, the GNU music typesetter. - source file of the GNU LilyPond music typesetter + Copyright (C) 2005--2011 Han-Wen Nienhuys - (c) 2005--2007 Han-Wen Nienhuys + 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 "paper-book.hh" @@ -11,48 +22,63 @@ #include "output-def.hh" LY_DEFINE (ly_paper_book_pages, "ly:paper-book-pages", - 1, 0, 0, (SCM pb), - "Return pages in book PB.") + 1, 0, 0, (SCM pb), + "Return pages in @code{Paper_book} object @var{pb}.") { LY_ASSERT_SMOB (Paper_book, pb, 1); return unsmob_paper_book (pb)->pages (); } LY_DEFINE (ly_paper_book_scopes, "ly:paper-book-scopes", - 1, 0, 0, (SCM book), - "Return pages in layout book @var{book}.") + 1, 0, 0, (SCM pb), + "Return scopes in @code{Paper_book} object @var{pb}.") { - LY_ASSERT_SMOB (Paper_book, book, 1); - Paper_book *pb = unsmob_paper_book (book); + LY_ASSERT_SMOB (Paper_book, pb, 1); + Paper_book *book = unsmob_paper_book (pb); SCM scopes = SCM_EOL; - if (ly_is_module (pb->header_)) - scopes = scm_cons (pb->header_, scopes); + if (book->parent_) + { + scopes = ly_paper_book_scopes (book->parent_->self_scm ()); + } + if (ly_is_module (book->header_)) + scopes = scm_cons (book->header_, scopes); return scopes; } LY_DEFINE (ly_paper_book_performances, "ly:paper-book-performances", - 1, 0, 0, (SCM paper_book), - "Return performances in book @var{paper-book}.") + 1, 0, 0, (SCM pb), + "Return performances in @code{Paper_book} object @var{pb}.") { - LY_ASSERT_SMOB (Paper_book, paper_book, 1); - return unsmob_paper_book (paper_book)->performances (); + LY_ASSERT_SMOB (Paper_book, pb, 1); + return unsmob_paper_book (pb)->performances (); } LY_DEFINE (ly_paper_book_systems, "ly:paper-book-systems", - 1, 0, 0, (SCM pb), - "Return systems in book PB.") + 1, 0, 0, (SCM pb), + "Return systems in @code{Paper_book} object @var{pb}.") { LY_ASSERT_SMOB (Paper_book, pb, 1); return unsmob_paper_book (pb)->systems (); } LY_DEFINE (ly_paper_book_paper, "ly:paper-book-paper", - 1, 0, 0, (SCM pb), - "Return pages in book PB.") + 1, 0, 0, (SCM pb), + "Return the paper output definition (@code{\\paper})" + " in @code{Paper_book} object @var{pb}.") { LY_ASSERT_SMOB (Paper_book, pb, 1); Paper_book *pbook = unsmob_paper_book (pb); return pbook->paper_->self_scm (); } + +LY_DEFINE (ly_paper_book_header, "ly:paper-book-header", + 1, 0, 0, (SCM pb), + "Return the header definition (@code{\\header})" + " in @code{Paper_book} object @var{pb}.") +{ + LY_ASSERT_SMOB (Paper_book, pb, 1); + Paper_book *pbook = unsmob_paper_book (pb); + return pbook->header_; +}