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"
13 LY_DEFINE (ly_make_paper_outputter, "ly:make-paper-outputter",
14 2, 0, 0, (SCM port, SCM format),
15 "Create an outputter that evaluates within "
16 "@code{output-}@var{format}, writing to @var{port}.")
18 SCM_ASSERT_TYPE (ly_is_port (port), port, SCM_ARG1, __FUNCTION__,
20 SCM_ASSERT_TYPE (scm_is_string (format), format, SCM_ARG2, __FUNCTION__,
23 String f = ly_scm2string (format);
25 String output_name = "<unknown>";
27 SCM port_name = scm_port_filename (port);
28 if (scm_is_string (port_name))
29 output_name = ly_scm2string (port_name);
31 message (_f ("Layout output to `%s'...",
32 output_name.to_str0 ()));
34 progress_indication ("\n");
35 Paper_outputter *po = new Paper_outputter (port, f);
38 return po->self_scm ();
41 /* FIXME: why is output_* wrapper called dump? */
42 LY_DEFINE (ly_outputter_dump_stencil, "ly:outputter-dump-stencil",
43 2, 0, 0, (SCM outputter, SCM stencil),
44 "Dump stencil @var{expr} onto @var{outputter}.")
46 Paper_outputter *po = unsmob_outputter (outputter);
47 Stencil *st = unsmob_stencil (stencil);
48 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
49 SCM_ASSERT_TYPE (st, stencil, SCM_ARG1, __FUNCTION__, "Paper_outputter");
50 po->output_stencil (*st);
51 return SCM_UNSPECIFIED;
54 LY_DEFINE (ly_outputter_dump_string, "ly:outputter-dump-string",
55 2, 0, 0, (SCM outputter, SCM str),
56 "Dump @var{str} onto @var{outputter}.")
58 Paper_outputter *po = unsmob_outputter (outputter);
59 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
60 SCM_ASSERT_TYPE (scm_is_string (str), str, SCM_ARG1, __FUNCTION__, "Paper_outputter");
62 return po->dump_string (str);
65 LY_DEFINE (ly_outputter_port, "ly:outputter-port",
66 1, 0, 0, (SCM outputter),
67 "Return output port for @var{outputter}.")
69 Paper_outputter *po = unsmob_outputter (outputter);
70 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
75 LY_DEFINE (ly_outputter_close, "ly:outputter-close",
76 1, 0, 0, (SCM outputter),
77 "Close port of @var{outputter}.")
79 Paper_outputter *po = unsmob_outputter (outputter);
80 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
83 return SCM_UNSPECIFIED;
86 LY_DEFINE (ly_outputter_output_scheme, "ly:outputter-output-scheme",
87 2, 0, 0, (SCM outputter, SCM expr),
88 "Eval @var{expr} in module of @var{outputter}.")
90 Paper_outputter *po = unsmob_outputter (outputter);
91 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
93 po->output_scheme (expr);
95 return SCM_UNSPECIFIED;