2 #include "fitz-world.h"
4 static void indent(int level
)
10 static void xmlnode(fz_node
*node
, int level
);
12 static void xmlmeta(fz_metanode
*node
, int level
)
17 printf("<meta name=\"%s\">\n", node
->name
);
19 for (child
= node
->super
.first
; child
; child
= child
->next
)
20 xmlnode(child
, level
+ 1);
26 static void xmlover(fz_overnode
*node
, int level
)
31 for (child
= node
->super
.first
; child
; child
= child
->next
)
32 xmlnode(child
, level
+ 1);
37 static void xmlmask(fz_masknode
*node
, int level
)
42 for (child
= node
->super
.first
; child
; child
= child
->next
)
43 xmlnode(child
, level
+ 1);
48 static void xmlblend(fz_blendnode
*node
, int level
)
52 printf("<blend mode=\"%d\">\n", node
->mode
);
53 for (child
= node
->super
.first
; child
; child
= child
->next
)
54 xmlnode(child
, level
+ 1);
59 static void xmltransform(fz_transformnode
*node
, int level
)
62 printf("<transform matrix=\"%g %g %g %g %g %g\">\n",
65 node
->m
.e
, node
->m
.f
);
66 xmlnode(node
->super
.first
, level
+ 1);
68 printf("</transform>\n");
71 static void xmlsolid(fz_solidnode
*node
, int level
)
75 printf("<solid colorspace=\"%s\" v=\"", node
->cs
->name
);
76 for (i
= 0; i
< node
->n
; i
++)
78 printf("%g", node
->samples
[i
]);
85 static void xmllink(fz_linknode
*node
, int level
)
88 printf("<link name=\"%p\" />\n", node
->tree
);
91 static void xmlpath(fz_pathnode
*node
, int level
)
97 if (node
->paint
== FZ_STROKE
)
99 printf("<path fill=\"stroke\" cap=\"%d\" join=\"%d\" width=\"%g\" miter=\"%g\"",
106 printf(" phase=\"%g\" array=\"", node
->dash
->phase
);
107 for (i
= 0; i
< node
->dash
->len
; i
++)
108 printf("%g ", node
->dash
->array
[i
]);
115 printf("<path fill=\"%s\">\n",
116 node
->paint
== FZ_FILL
? "nonzero" : "evenodd");
119 fz_debugpathnode(node
);
125 static void xmltext(fz_textnode
*node
, int level
)
130 printf("<text font=\"%s\" matrix=\"%g %g %g %g\">\n", node
->font
->name
,
131 node
->trm
.a
, node
->trm
.b
, node
->trm
.c
, node
->trm
.d
);
133 for (i
= 0; i
< node
->len
; i
++)
136 if (node
->els
[i
].cid
>= 32 && node
->els
[i
].cid
< 128)
137 printf("<g c=\"%c\" x=\"%g\" y=\"%g\" />\n",
138 node
->els
[i
].cid
, node
->els
[i
].x
, node
->els
[i
].y
);
140 printf("<g c=\"<%04x>\" x=\"%g\" y=\"%g\" />\n",
141 node
->els
[i
].cid
, node
->els
[i
].x
, node
->els
[i
].y
);
148 static void xmlimage(fz_imagenode
*node
, int level
)
150 fz_image
*image
= node
->image
;
152 printf("<image w=\"%d\" h=\"%d\" n=\"%d\" a=\"%d\" />\n",
153 image
->w
, image
->h
, image
->n
, image
->a
);
156 static void xmlshade(fz_shadenode
*node
, int level
)
159 printf("<shade />\n");
162 static void xmlnode(fz_node
*node
, int level
)
173 case FZ_NMETA
: xmlmeta((fz_metanode
*)node
, level
); break;
174 case FZ_NOVER
: xmlover((fz_overnode
*)node
, level
); break;
175 case FZ_NMASK
: xmlmask((fz_masknode
*)node
, level
); break;
176 case FZ_NBLEND
: xmlblend((fz_blendnode
*)node
, level
); break;
177 case FZ_NTRANSFORM
: xmltransform((fz_transformnode
*)node
, level
); break;
178 case FZ_NCOLOR
: xmlsolid((fz_solidnode
*)node
, level
); break;
179 case FZ_NPATH
: xmlpath((fz_pathnode
*)node
, level
); break;
180 case FZ_NTEXT
: xmltext((fz_textnode
*)node
, level
); break;
181 case FZ_NIMAGE
: xmlimage((fz_imagenode
*)node
, level
); break;
182 case FZ_NSHADE
: xmlshade((fz_shadenode
*)node
, level
); break;
183 case FZ_NLINK
: xmllink((fz_linknode
*)node
, level
); break;
188 fz_debugnode(fz_node
*node
)
194 fz_debugtree(fz_tree
*tree
)
197 xmlnode(tree
->root
, 1);