2 paper-outputter-scheme.cc -- implement Paper_outputter bindings
4 source file of the GNU LilyPond music typesetter
6 (c) 2005--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
9 #include "paper-outputter.hh"
11 #include "international.hh"
15 LY_DEFINE (ly_make_paper_outputter, "ly:make-paper-outputter",
16 2, 0, 0, (SCM port, SCM format),
17 "Create an outputter that evaluates within "
18 "@code{output-}@var{format}, writing to @var{port}.")
20 SCM_ASSERT_TYPE (ly_is_port (port), port, SCM_ARG1, __FUNCTION__,
22 SCM_ASSERT_TYPE (scm_is_string (format), format, SCM_ARG2, __FUNCTION__,
25 string f = ly_scm2string (format);
27 string output_name = "<unknown>";
29 SCM port_name = scm_port_filename (port);
30 if (scm_is_string (port_name))
31 output_name = ly_scm2string (port_name);
33 message (_f ("Layout output to `%s'...",
34 output_name.c_str ()));
36 progress_indication ("\n");
37 Paper_outputter *po = new Paper_outputter (port, f);
40 return po->self_scm ();
43 /* FIXME: why is output_* wrapper called dump? */
44 LY_DEFINE (ly_outputter_dump_stencil, "ly:outputter-dump-stencil",
45 2, 0, 0, (SCM outputter, SCM stencil),
46 "Dump stencil @var{expr} onto @var{outputter}.")
48 Paper_outputter *po = unsmob_outputter (outputter);
49 Stencil *st = unsmob_stencil (stencil);
50 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
51 SCM_ASSERT_TYPE (st, stencil, SCM_ARG1, __FUNCTION__, "Paper_outputter");
52 po->output_stencil (*st);
53 return SCM_UNSPECIFIED;
56 LY_DEFINE (ly_outputter_dump_string, "ly:outputter-dump-string",
57 2, 0, 0, (SCM outputter, SCM str),
58 "Dump @var{str} onto @var{outputter}.")
60 Paper_outputter *po = unsmob_outputter (outputter);
61 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
62 SCM_ASSERT_TYPE (scm_is_string (str), str, SCM_ARG1, __FUNCTION__, "Paper_outputter");
64 return po->dump_string (str);
67 LY_DEFINE (ly_outputter_port, "ly:outputter-port",
68 1, 0, 0, (SCM outputter),
69 "Return output port for @var{outputter}.")
71 Paper_outputter *po = unsmob_outputter (outputter);
72 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
77 LY_DEFINE (ly_outputter_close, "ly:outputter-close",
78 1, 0, 0, (SCM outputter),
79 "Close port of @var{outputter}.")
81 Paper_outputter *po = unsmob_outputter (outputter);
82 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
85 return SCM_UNSPECIFIED;
88 LY_DEFINE (ly_outputter_output_scheme, "ly:outputter-output-scheme",
89 2, 0, 0, (SCM outputter, SCM expr),
90 "Eval @var{expr} in module of @var{outputter}.")
92 Paper_outputter *po = unsmob_outputter (outputter);
93 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
95 po->output_scheme (expr);
97 return SCM_UNSPECIFIED;