]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/paper-book.hh
Run `make grand-replace'.
[lilypond.git] / lily / include / paper-book.hh
1 /*
2   paper-book.hh -- declare Paper_book
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 2004--2008  Jan Nieuwenhuizen <janneke@gnu.org>
7 */
8 #ifndef PAPER_BOOK_HH
9 #define PAPER_BOOK_HH
10
11 #include "std-vector.hh"
12 #include "smobs.hh"
13 #include "lily-proto.hh"
14
15 /** Paper_book collects headers, systems (Paper_system) and texts, and
16     exports them to the output backend, either as systems or as
17     completely formatted pages.  */
18
19 class Paper_book
20 {
21   DECLARE_SMOBS (Paper_book);
22
23   SCM systems_;
24   SCM pages_;
25   SCM performances_;
26
27   void add_score_title (SCM);
28   SCM get_score_title (SCM);
29   
30 public:
31   SCM header_;
32   SCM header_0_;
33   SCM scores_;
34   SCM bookparts_;
35   Paper_book *parent_;
36   Output_def *paper_;
37
38   Paper_book ();
39
40   Output_def *top_paper ();
41
42   void add_score (SCM);
43   void add_bookpart (SCM);
44   void add_performance (SCM);
45
46   SCM performances () const;
47   SCM systems ();
48   SCM pages ();
49   SCM get_system_specs ();
50
51
52   Stencil book_title ();
53   Stencil score_title (SCM);
54   
55   void classic_output (SCM output_channel);
56   void output (SCM output_channel);
57
58 protected:
59   void classic_output_aux (SCM output,
60                            int *first_performance_number);
61   void output_aux (SCM output_channel,
62                    bool is_last,
63                    int *first_page_number,
64                    int *first_performance_number);
65 };
66
67 DECLARE_UNSMOB (Paper_book, paper_book)
68
69 #endif /* PAPER_BOOK_HH */