#ifndef STENCIL_HH
#define STENCIL_HH
-#include <stdlib.h> // size_t
+#include <cstdlib> // size_t
+
#include "lily-proto.hh"
#include "box.hh"
-#include "direction.hh"
-#include "lily-guile.hh"
#include "smobs.hh"
/** a group of individually translated symbols. You can add stencils
It is implemented as a "tree" of scheme expressions, as in
- Expr = combine Expr Expr
- | translate Offset Expr
- | SCHEME
- ;
+ Expr = combine Expr-list
+ | translate Offset Expr
+ | origin (ORIGIN) Expr
+ | no-origin Expr
+ | (SCHEME)
+ ;
SCHEME is a Scheme expression that --when eval'd-- produces the
desired output.
efficient to add "fresh" stencils to what you're going to build.
* Do not create Stencil objects on the heap. That includes passing
- around Stencil* which are produced by unsmob_stencil().
+ around Stencil* which are produced by unsmob_stencil(). Either
+ copy Stencil objects, or use SCM references.
* Empty stencils have empty dimensions. If add_at_edge is used to
init the stencil, we assume that
DECLARE_UNSMOB(Stencil,stencil);
SCM fontify_atom (Font_metric const*, SCM atom);
-Stencil create_stencil (SCM print);
-
+void interpret_stencil_expression (SCM expr,
+ void (*func) (void*, SCM),
+ void *func_arg,
+ Offset o);
+Stencil create_stencil (SCM print);
+SCM find_expression_fonts (SCM expr);
-#endif
+#endif /* STENCIL_HH */