2 paper-outputter-scheme.cc -- implement Paper_outputter bindings
4 source file of the GNU LilyPond music typesetter
6 (c) 2005--2007 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 LY_ASSERT_TYPE (ly_is_port
, port
, 1);
21 LY_ASSERT_TYPE (ly_is_symbol
, format
, 2);
23 string f
= ly_symbol2string (format
);
24 string output_name
= "<unknown>";
26 SCM port_name
= scm_port_filename (port
);
27 if (scm_is_string (port_name
))
28 output_name
= ly_scm2string (port_name
);
30 message (_f ("Layout output to `%s'...",
31 output_name
.c_str ()));
33 progress_indication ("\n");
34 Paper_outputter
*po
= new Paper_outputter (port
, f
);
37 return po
->self_scm ();
40 /* FIXME: why is output_* wrapper called dump? */
41 LY_DEFINE (ly_outputter_dump_stencil
, "ly:outputter-dump-stencil",
42 2, 0, 0, (SCM outputter
, SCM stencil
),
43 "Dump stencil @var{expr} onto @var{outputter}.")
46 LY_ASSERT_SMOB (Paper_outputter
, outputter
, 1);
47 LY_ASSERT_SMOB (Stencil
, stencil
, 2);
49 Paper_outputter
*po
= unsmob_outputter (outputter
);
50 Stencil
*st
= unsmob_stencil (stencil
);
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 LY_ASSERT_SMOB (Paper_outputter
, outputter
, 1);
61 LY_ASSERT_TYPE (scm_is_string
, str
, 2);
63 Paper_outputter
*po
= unsmob_outputter (outputter
);
65 return po
->dump_string (str
);
68 LY_DEFINE (ly_outputter_port
, "ly:outputter-port",
69 1, 0, 0, (SCM outputter
),
70 "Return output port for @var{outputter}.")
72 LY_ASSERT_SMOB (Paper_outputter
, outputter
, 1);
73 Paper_outputter
*po
= unsmob_outputter (outputter
);
78 LY_DEFINE (ly_outputter_close
, "ly:outputter-close",
79 1, 0, 0, (SCM outputter
),
80 "Close port of @var{outputter}.")
82 LY_ASSERT_SMOB (Paper_outputter
, outputter
, 1);
83 Paper_outputter
*po
= unsmob_outputter (outputter
);
86 return SCM_UNSPECIFIED
;
89 LY_DEFINE (ly_outputter_output_scheme
, "ly:outputter-output-scheme",
90 2, 0, 0, (SCM outputter
, SCM expr
),
91 "Eval @var{expr} in module of @var{outputter}.")
93 LY_ASSERT_SMOB (Paper_outputter
, outputter
, 1);
94 Paper_outputter
*po
= unsmob_outputter (outputter
);
96 po
->output_scheme (expr
);
98 return SCM_UNSPECIFIED
;