diff options
Diffstat (limited to 'util/cairo-script/csi-exec.c')
-rwxr-xr-x | util/cairo-script/csi-exec.c | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/util/cairo-script/csi-exec.c b/util/cairo-script/csi-exec.c new file mode 100755 index 000000000..d30b1c9c8 --- /dev/null +++ b/util/cairo-script/csi-exec.c @@ -0,0 +1,41 @@ +#include <cairo.h> +#include <cairo-script-interpreter.h> + +#include <stdio.h> +#include <stdlib.h> + +static cairo_surface_t * +_surface_create (void *closure, + cairo_content_t content, + double width, double height, + long uid) +{ + return cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height); +} + +int +main (int argc, char **argv) +{ + const cairo_script_interpreter_hooks_t hooks = { + .surface_create = _surface_create + }; + cairo_script_interpreter_t *csi; + int i; + + for (i = 1; i < argc; i++) { + int status, line; + + csi = cairo_script_interpreter_create (); + cairo_script_interpreter_install_hooks (csi, &hooks); + cairo_script_interpreter_run (csi, argv[i]); + line = cairo_script_interpreter_get_line_number (csi); + status = cairo_script_interpreter_destroy (csi); + if (status) { + fprintf (stderr, "Error during replay of '%s', line %d: %d\n", + argv[i], line, status); + return 1; + } + } + + return 0; +} |