]> git.donarmstrong.com Git - lilypond.git/blob - lily/include/paper-outputter.hh
44c8b1bf57019a28ef58cf522e96248e299146b1
[lilypond.git] / lily / include / paper-outputter.hh
1 /*
2   paper-outputter.hh -- declare Paper_outputter
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 1997--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
7 */
8
9 #ifndef PAPER_OUTPUTTER_HH
10 #define PAPER_OUTPUTTER_HH
11
12 #include "lily-proto.hh"
13 #include "std-vector.hh"
14 #include "std-string.hh"
15 #include "protected-scm.hh"
16 #include "smobs.hh"
17
18 /*
19   Glue between the backend (grobs, systems, pages) and the output file.
20   proxy for Scheme backends.
21 */
22 class Paper_outputter
23 {
24   SCM output_module_;
25   string file_name_;
26   SCM file_;
27
28 public:
29   DECLARE_SMOBS (Paper_outputter);
30
31 public:
32   SCM file () const;
33   SCM dump_string (SCM);
34   void output_scheme (SCM scm);
35   Paper_outputter (SCM port, string format);
36   SCM scheme_to_string (SCM);
37   void output_stencil (Stencil);
38   void close ();
39 };
40
41 Paper_outputter *get_paper_outputter (string, string);
42 DECLARE_UNSMOB (Paper_outputter, outputter);
43
44 #endif /* PAPER_OUTPUTTER_HH */