summaryrefslogtreecommitdiff
path: root/fitz/dev_trace.c
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2010-04-15 22:12:13 +0200
committerTor Andersson <tor@ghostscript.com>2010-04-15 22:12:13 +0200
commit54bf79f2bee2f169f7b8611b661a93f9313bf09e (patch)
tree4a4c5698e883972f19bb0c51523441a21bd6eac3 /fitz/dev_trace.c
parent31dfa72b46654404efcb7dc21ffe2a8f1f768404 (diff)
downloadmupdf-54bf79f2bee2f169f7b8611b661a93f9313bf09e.tar.xz
XML-ify output of dev_trace.
Diffstat (limited to 'fitz/dev_trace.c')
-rw-r--r--fitz/dev_trace.c157
1 files changed, 119 insertions, 38 deletions
diff --git a/fitz/dev_trace.c b/fitz/dev_trace.c
index 834aee5c..2a477709 100644
--- a/fitz/dev_trace.c
+++ b/fitz/dev_trace.c
@@ -3,7 +3,7 @@
static void
fz_tracematrix(fz_matrix ctm)
{
- printf("%g %g %g %g %g %g setmatrix\n",
+ printf("matrix=\"%g %g %g %g %g %g\" ",
ctm.a, ctm.b, ctm.c, ctm.d, ctm.e, ctm.f);
}
@@ -11,22 +11,67 @@ static void
fz_tracecolor(fz_colorspace *colorspace, float *color, float alpha)
{
int i;
- printf("/%s setcolorspace\n", colorspace->name);
+ printf("colorspace=\"%s\" color=\"", colorspace->name);
for (i = 0; i < colorspace->n; i++)
- printf("%g ", color[i]);
- printf("setcolor\n");
- printf("%g setalpha\n", alpha);
+ printf("%s%g", i == 0 ? "" : " ", color[i]);
+ printf("\" ");
+ if (alpha != 1.0)
+ printf("alpha=\"%g\" ", alpha);
+}
+
+static void
+fz_tracepath(fz_path *path, int indent)
+{
+ float x, y;
+ int i = 0;
+ int n;
+ while (i < path->len)
+ {
+ for (n = 0; n < indent; n++)
+ putchar(' ');
+ switch (path->els[i++].k)
+ {
+ case FZ_MOVETO:
+ x = path->els[i++].v;
+ y = path->els[i++].v;
+ printf("<moveto x=\"%g\" y=\"%g\" />\n", x, y);
+ break;
+ case FZ_LINETO:
+ x = path->els[i++].v;
+ y = path->els[i++].v;
+ printf("<lineto x=\"%g\" y=\"%g\" />\n", x, y);
+ break;
+ case FZ_CURVETO:
+ x = path->els[i++].v;
+ y = path->els[i++].v;
+ printf("<curveto x1=\"%g\" y1=\"%g\" ", x, y);
+ x = path->els[i++].v;
+ y = path->els[i++].v;
+ printf("x2=\"%g\" y2=\"%g\" ", x, y);
+ x = path->els[i++].v;
+ y = path->els[i++].v;
+ printf("x3=\"%g\" y3=\"%g\" />\n", x, y);
+ break;
+ case FZ_CLOSEPATH:
+ printf("<closepath />\n");
+ }
+ }
}
static void
fz_tracefillpath(void *user, fz_path *path, fz_matrix ctm,
fz_colorspace *colorspace, float *color, float alpha)
{
- fz_printpath(path, 0);
+ printf("<fillpath ");
if (path->evenodd)
- printf("eofill\n");
+ printf("winding=\"eofill\" ");
else
- printf("fill\n");
+ printf("winding=\"nonzero\" ");
+ fz_tracecolor(colorspace, color, alpha);
+ fz_tracematrix(ctm);
+ printf(">\n");
+ fz_tracepath(path, 0);
+ printf("</fillpath>\n");
}
static void
@@ -35,94 +80,128 @@ fz_tracestrokepath(void *user, fz_path *path, fz_matrix ctm,
{
int i;
- fz_tracecolor(colorspace, color, alpha);
-
- printf("%g setlinewidth\n", path->linewidth);
- printf("%g setmiterlimit\n", path->miterlimit);
- printf("%d setlinecap\n", path->linecap);
- printf("%d setlinejoin\n", path->linejoin);
+ printf("<strokepath ");
+ printf("linewidth=\"%g\" ", path->linewidth);
+ printf("miterlimit=\"%g\" ", path->miterlimit);
+ printf("linecap=\"%d\" ", path->linecap);
+ printf("linejoin=\"%d\" ", path->linejoin);
if (path->dashlen)
{
- printf("%g [ ", path->dashphase);
+ printf("dashphase=\"%g\" dash=\"", path->dashphase);
for (i = 0; i < path->dashlen; i++)
printf("%g ", path->dashlist[i]);
- printf("] setdash\n");
+ printf("\"");
}
- fz_printpath(path, 0);
+ fz_tracecolor(colorspace, color, alpha);
+ fz_tracematrix(ctm);
+ printf(">\n");
+
+ fz_tracepath(path, 0);
- printf("stroke\n");
+ printf("</strokepath>\n");
}
static void
fz_traceclippath(void *user, fz_path *path, fz_matrix ctm)
{
- printf("gsave\n");
- fz_printpath(path, 0);
+ printf("<gsave>\n");
+ printf("<clippath ");
if (path->evenodd)
- printf("eoclip\n");
+ printf("winding=\"eofill\" ");
else
- printf("clip\n");
+ printf("winding=\"nonzero\" ");
+ fz_tracematrix(ctm);
+ printf(">\n");
+ fz_tracepath(path, 0);
+ printf("</clippath>\n");
}
static void
fz_tracefilltext(void *user, fz_text *text, fz_matrix ctm,
fz_colorspace *colorspace, float *color, float alpha)
{
- printf("/%s setfont\n", text->font->name);
- fz_tracematrix(text->trm);
+ printf("<filltext font=\"%s\" ", text->font->name);
+ fz_tracecolor(colorspace, color, alpha);
+ fz_tracematrix(fz_concat(ctm, text->trm));
+ printf(">\n");
fz_debugtext(text, 0);
- printf("show\n");
+ printf("</filltext>\n");
}
static void
fz_tracestroketext(void *user, fz_text *text, fz_matrix ctm,
fz_colorspace *colorspace, float *color, float alpha)
{
- printf("/%s setfont\n", text->font->name);
- fz_tracematrix(text->trm);
+ printf("<stroketext font=\"%s\" ", text->font->name);
+ fz_tracecolor(colorspace, color, alpha);
+ fz_tracematrix(fz_concat(ctm, text->trm));
+ printf(">\n");
fz_debugtext(text, 0);
- printf("charpath stroke\n");
+ printf("</stroketext>\n");
}
static void
fz_tracecliptext(void *user, fz_text *text, fz_matrix ctm)
{
- printf("gsave\n");
- printf("/%s setfont\n", text->font->name);
- fz_tracematrix(text->trm);
+ printf("<gsave>\n");
+ printf("<cliptext font=\"%s\" ", text->font->name);
+ fz_tracematrix(fz_concat(ctm, text->trm));
+ printf(">\n");
fz_debugtext(text, 0);
- printf("charpath clip\n");
+ printf("</cliptext>\n");
}
static void
fz_traceignoretext(void *user, fz_text *text, fz_matrix ctm)
{
- printf("/%s setfont\n", text->font->name);
- fz_tracematrix(text->trm);
+ printf("<ignoretext font=\"%s\" ", text->font->name);
+ fz_tracematrix(fz_concat(ctm, text->trm));
+ printf(">\n");
fz_debugtext(text, 0);
- printf("invisibletext\n");
+ printf("</ignoretext>\n");
}
static void
fz_tracefillimage(void *user, fz_pixmap *image, fz_matrix ctm)
{
+ printf("<fillimage ");
fz_tracematrix(ctm);
- printf("fillimage\n");
+ printf("/>\n");
}
static void
fz_tracefillshade(void *user, fz_shade *shade, fz_matrix ctm)
{
+ printf("<fillshade ");
+ fz_tracematrix(ctm);
+ printf("/>\n");
+}
+
+static void
+fz_tracefillimagemask(void *user, fz_pixmap *image, fz_matrix ctm,
+fz_colorspace *colorspace, float *color, float alpha)
+{
+ printf("<fillimagemask ");
+ fz_tracematrix(ctm);
+ fz_tracecolor(colorspace, color, alpha);
+ printf("/>\n");
+}
+
+static void
+fz_traceclipimagemask(void *user, fz_pixmap *image, fz_matrix ctm)
+{
+ printf("<gsave>\n");
+ printf("<clipimagemask ");
fz_tracematrix(ctm);
- printf("fillshade\n");
+ printf("/>\n");
}
static void
fz_tracepopclip(void *user)
{
- printf("grestore\n");
+ printf("</gsave>\n");
}
fz_device *fz_newtracedevice(void)
@@ -140,6 +219,8 @@ fz_device *fz_newtracedevice(void)
dev->fillshade = fz_tracefillshade;
dev->fillimage = fz_tracefillimage;
+ dev->fillimagemask = fz_tracefillimagemask;
+ dev->clipimagemask = fz_traceclipimagemask;
dev->popclip = fz_tracepopclip;