2 paper-outputter-scheme.cc -- implement Paper_outputter bindings
4 source file of the GNU LilyPond music typesetter
6 (c) 2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
9 #include "paper-outputter.hh"
14 LY_DEFINE (ly_make_paper_outputter, "ly:make-paper-outputter",
15 2, 0, 0, (SCM port, SCM format),
16 "Create an outputter that evaluates within "
17 "@code{output-}@var{format}, writing to @var{port}.")
19 SCM_ASSERT_TYPE (ly_is_port (port), port, SCM_ARG1, __FUNCTION__,
21 SCM_ASSERT_TYPE (scm_is_string (format), format, SCM_ARG2, __FUNCTION__,
24 String f = ly_scm2string (format);
26 String output_name = "<unknown>";
28 SCM port_name = scm_port_filename (port);
29 if (scm_is_string (port_name))
30 output_name = ly_scm2string (port_name);
32 message (_f ("Layout output to `%s'...",
33 output_name.to_str0 ()));
35 progress_indication ("\n");
36 Paper_outputter *po = new Paper_outputter (port, f);
39 return po->self_scm ();
42 /* FIXME: why is output_* wrapper called dump? */
43 LY_DEFINE (ly_outputter_dump_stencil, "ly:outputter-dump-stencil",
44 2, 0, 0, (SCM outputter, SCM stencil),
45 "Dump stencil @var{expr} onto @var{outputter}.")
47 Paper_outputter *po = unsmob_outputter (outputter);
48 Stencil *st = unsmob_stencil (stencil);
49 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
50 SCM_ASSERT_TYPE (st, stencil, SCM_ARG1, __FUNCTION__, "Paper_outputter");
51 po->output_stencil (*st);
52 return SCM_UNSPECIFIED;
55 LY_DEFINE (ly_outputter_dump_string, "ly:outputter-dump-string",
56 2, 0, 0, (SCM outputter, SCM str),
57 "Dump @var{str} onto @var{outputter}.")
59 Paper_outputter *po = unsmob_outputter (outputter);
60 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
61 SCM_ASSERT_TYPE (scm_is_string (str), str, SCM_ARG1, __FUNCTION__, "Paper_outputter");
63 return po->dump_string (str);
66 LY_DEFINE (ly_outputter_port, "ly:outputter-port",
67 1, 0, 0, (SCM outputter),
68 "Return output port for @var{outputter}.")
70 Paper_outputter *po = unsmob_outputter (outputter);
71 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
76 LY_DEFINE (ly_outputter_close, "ly:outputter-close",
77 1, 0, 0, (SCM outputter),
78 "Close port of @var{outputter}.")
80 Paper_outputter *po = unsmob_outputter (outputter);
81 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
84 return SCM_UNSPECIFIED;
87 LY_DEFINE (ly_outputter_output_scheme, "ly:outputter-output-scheme",
88 2, 0, 0, (SCM outputter, SCM expr),
89 "Eval @var{expr} in module of @var{outputter}.")
91 Paper_outputter *po = unsmob_outputter (outputter);
92 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
94 po->output_scheme (expr);
96 return SCM_UNSPECIFIED;