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>
10 #include "paper-outputter.hh"
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}.")
19 SCM_ASSERT_TYPE(scm_is_string (outname), outname, SCM_ARG1, __FUNCTION__,
21 SCM_ASSERT_TYPE(scm_is_string (format), format, SCM_ARG2, __FUNCTION__,
24 String outname_str = ly_scm2string (outname);
25 String f = ly_scm2string (format);
27 progress_indication (_f ("Layout output to `%s'...",
31 progress_indication ("\n");
32 Paper_outputter *po = new Paper_outputter (outname_str, f);
34 scm_gc_unprotect_object (po->self_scm ());
35 return po->self_scm ();
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}.")
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;
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}.")
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");
59 return po->dump_string (str);
63 LY_DEFINE (ly_outputter_port, "ly:outputter-port",
64 1, 0, 0, (SCM outputter),
65 "Return output port for @var{outputter}.")
67 Paper_outputter *po = unsmob_outputter (outputter);
68 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
73 LY_DEFINE (ly_outputter_close, "ly:outputter-close",
74 1, 0, 0, (SCM outputter),
75 "Close port of @var{outputter}.")
77 Paper_outputter *po = unsmob_outputter (outputter);
78 SCM_ASSERT_TYPE (po, outputter, SCM_ARG1, __FUNCTION__, "Paper_outputter");
81 return SCM_UNSPECIFIED;