]> git.donarmstrong.com Git - lilypond.git/blob - lily/paper-outputter-scheme.cc
*** empty log message ***
[lilypond.git] / lily / paper-outputter-scheme.cc
1 /*
2   paper-outputter-scheme.cc --  implement Paper_outputter bindings
3
4   source file of the GNU LilyPond music typesetter
5
6   (c) 2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
7
8 */
9
10 #include "paper-outputter.hh"
11 #include "warn.hh"
12 #include "stencil.hh"
13
14 LY_DEFINE (ly_make_paper_outputter, "ly:make-paper-outputter",
15            2, 0, 0, (SCM outname, SCM format),
16            "Create an outputter that evaluates within "
17            "@code{output-}@var{format}, writing to file @var{outname}.")
18 {
19   SCM_ASSERT_TYPE(scm_is_string (outname), outname, SCM_ARG1, __FUNCTION__,
20                   "String");
21   SCM_ASSERT_TYPE(scm_is_string (format), format, SCM_ARG2, __FUNCTION__,
22                   "String");
23   
24   String outname_str = ly_scm2string (outname);
25   String f = ly_scm2string (format);
26
27   progress_indication (_f ("Layout output to `%s'...",
28                            outname_str == "-"
29                            ? String ("<stdout>")
30                            : outname_str));
31   progress_indication ("\n");
32   Paper_outputter *po = new Paper_outputter (outname_str, f);
33
34   scm_gc_unprotect_object (po->self_scm ());
35   return po->self_scm ();
36 }
37
38 /* FIXME: why is output_* wrapper called dump?  */
39 LY_DEFINE (ly_outputter_dump_stencil, "ly:outputter-dump-stencil",
40            2, 0, 0, (SCM outputter, SCM stencil),
41            "Dump stencil @var{expr} onto @var{outputter}.")
42 {
43   Paper_outputter *po = unsmob_outputter (outputter);
44   Stencil *st = unsmob_stencil (stencil);
45   SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
46   SCM_ASSERT_TYPE (st, stencil, SCM_ARG1, __FUNCTION__, "Paper_outputter");
47   po->output_stencil (*st);
48   return SCM_UNSPECIFIED;
49 }
50
51 LY_DEFINE (ly_outputter_dump_string, "ly:outputter-dump-string",
52            2, 0, 0, (SCM outputter, SCM str),
53            "Dump @var{str} onto @var{outputter}.")
54 {
55   Paper_outputter *po = unsmob_outputter (outputter);
56   SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
57   SCM_ASSERT_TYPE (scm_is_string (str), str, SCM_ARG1, __FUNCTION__, "Paper_outputter");
58   
59   return po->dump_string (str);
60 }
61
62
63 LY_DEFINE (ly_outputter_close, "ly:outputter-close",
64            1, 0, 0, (SCM outputter),
65            "Close port of @var{outputter}.")
66 {
67   Paper_outputter *po = unsmob_outputter (outputter);
68   SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
69
70   po->close ();
71   return SCM_UNSPECIFIED;
72 }