mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-01-06 13:10:33 +01:00
[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:
parent
4f129863df
commit
55eddb7ef4
2 changed files with 46 additions and 0 deletions
|
|
@ -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
|
||||
|
|
|
|||
40
util/cairo-script/csi-trace.c
Normal file
40
util/cairo-script/csi-trace.c
Normal 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);
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue