[script] A little utility to convert a trace into a trace

Replay the trace using the interpreter onto a script surface - useful for
checking idempotency.
This commit is contained in:
Chris Wilson 2009-08-11 23:40:04 +01:00
parent 4f129863df
commit 55eddb7ef4
2 changed files with 46 additions and 0 deletions

View file

@ -28,5 +28,11 @@ csi_replay_LDADD = libcairo-script-interpreter.la $(top_builddir)/src/libcairo.l
csi_exec_SOURCES = csi-exec.c
csi_exec_LDADD = libcairo-script-interpreter.la $(top_builddir)/src/libcairo.la $(CAIRO_LIBS)
if CAIRO_HAS_SCRIPT_SURFACE
EXTRA_PROGRAMS += csi-trace
csi_trace_SOURCES = csi-trace.c
csi_trace_LDADD = libcairo-script-interpreter.la $(top_builddir)/src/libcairo.la $(CAIRO_LIBS)
endif
EXTRA_DIST = \
COPYING

View file

@ -0,0 +1,40 @@
#include <cairo-script.h>
#include <cairo-script-interpreter.h>
#include <stdio.h>
#include <string.h>
#include <libgen.h>
static cairo_surface_t *
_similar_surface_create (void *closure,
cairo_content_t content,
double width, double height)
{
return cairo_surface_create_similar (closure, content, width, height);
}
int
main (int argc, char **argv)
{
cairo_script_interpreter_t *csi;
cairo_script_interpreter_hooks_t hooks = {
.surface_create = _similar_surface_create,
};
int i;
csi = cairo_script_interpreter_create ();
for (i = 1; i < argc; i++) {
char buf[4096];
snprintf (buf, sizeof (buf), "%s.trace", basename (argv[i]));
cairo_surface_destroy (hooks.closure);
hooks.closure = cairo_script_surface_create (buf, -1, -1);
cairo_script_interpreter_install_hooks (csi, &hooks);
cairo_script_interpreter_run (csi, argv[i]);
}
cairo_surface_destroy (hooks.closure);
return cairo_script_interpreter_destroy (csi);
}