Go to most recent revision | Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
4680 | right-hear | 1 | #include "fitz.h" |
2 | |||
3 | static void |
||
4 | fz_trace_matrix(fz_matrix ctm) |
||
5 | { |
||
6 | printf("matrix=\"%g %g %g %g %g %g\" ", |
||
7 | ctm.a, ctm.b, ctm.c, ctm.d, ctm.e, ctm.f); |
||
8 | } |
||
9 | |||
10 | static void |
||
11 | fz_trace_color(fz_colorspace *colorspace, float *color, float alpha) |
||
12 | { |
||
13 | int i; |
||
14 | printf("colorspace=\"%s\" color=\"", colorspace->name); |
||
15 | for (i = 0; i < colorspace->n; i++) |
||
16 | printf("%s%g", i == 0 ? "" : " ", color[i]); |
||
17 | printf("\" "); |
||
18 | if (alpha < 1) |
||
19 | printf("alpha=\"%g\" ", alpha); |
||
20 | } |
||
21 | |||
22 | static void |
||
23 | fz_trace_path(fz_path *path, int indent) |
||
24 | { |
||
25 | float x, y; |
||
26 | int i = 0; |
||
27 | int n; |
||
28 | while (i < path->len) |
||
29 | { |
||
30 | for (n = 0; n < indent; n++) |
||
31 | putchar(' '); |
||
32 | switch (path->items[i++].k) |
||
33 | { |
||
34 | case FZ_MOVETO: |
||
35 | x = path->items[i++].v; |
||
36 | y = path->items[i++].v; |
||
37 | printf(" |
||
38 | break; |
||
39 | case FZ_LINETO: |
||
40 | x = path->items[i++].v; |
||
41 | y = path->items[i++].v; |
||
42 | printf(" |
||
43 | break; |
||
44 | case FZ_CURVETO: |
||
45 | x = path->items[i++].v; |
||
46 | y = path->items[i++].v; |
||
47 | printf(" |
||
48 | x = path->items[i++].v; |
||
49 | y = path->items[i++].v; |
||
50 | printf("x2=\"%g\" y2=\"%g\" ", x, y); |
||
51 | x = path->items[i++].v; |
||
52 | y = path->items[i++].v; |
||
53 | printf("x3=\"%g\" y3=\"%g\" />\n", x, y); |
||
54 | break; |
||
55 | case FZ_CLOSE_PATH: |
||
56 | printf(" |
||
57 | break; |
||
58 | } |
||
59 | } |
||
60 | } |
||
61 | |||
62 | static void |
||
63 | fz_trace_fill_path(void *user, fz_path *path, int even_odd, fz_matrix ctm, |
||
64 | fz_colorspace *colorspace, float *color, float alpha) |
||
65 | { |
||
66 | printf(" |
||
67 | if (even_odd) |
||
68 | printf("winding=\"eofill\" "); |
||
69 | else |
||
70 | printf("winding=\"nonzero\" "); |
||
71 | fz_trace_color(colorspace, color, alpha); |
||
72 | fz_trace_matrix(ctm); |
||
73 | printf(">\n"); |
||
74 | fz_trace_path(path, 0); |
||
75 | printf("\n"); |
||
76 | } |
||
77 | |||
78 | static void |
||
79 | fz_trace_stroke_path(void *user, fz_path *path, fz_stroke_state *stroke, fz_matrix ctm, |
||
80 | fz_colorspace *colorspace, float *color, float alpha) |
||
81 | { |
||
82 | int i; |
||
83 | |||
84 | printf(" |
||
85 | printf("linewidth=\"%g\" ", stroke->linewidth); |
||
86 | printf("miterlimit=\"%g\" ", stroke->miterlimit); |
||
87 | printf("linecap=\"%d,%d,%d\" ", stroke->start_cap, stroke->dash_cap, stroke->end_cap); |
||
88 | printf("linejoin=\"%d\" ", stroke->linejoin); |
||
89 | |||
90 | if (stroke->dash_len) |
||
91 | { |
||
92 | printf("dash_phase=\"%g\" dash=\"", stroke->dash_phase); |
||
93 | for (i = 0; i < stroke->dash_len; i++) |
||
94 | printf("%g ", stroke->dash_list[i]); |
||
95 | printf("\""); |
||
96 | } |
||
97 | |||
98 | fz_trace_color(colorspace, color, alpha); |
||
99 | fz_trace_matrix(ctm); |
||
100 | printf(">\n"); |
||
101 | |||
102 | fz_trace_path(path, 0); |
||
103 | |||
104 | printf("\n"); |
||
105 | } |
||
106 | |||
107 | static void |
||
108 | fz_trace_clip_path(void *user, fz_path *path, fz_rect *rect, int even_odd, fz_matrix ctm) |
||
109 | { |
||
110 | printf(" |
||
111 | if (even_odd) |
||
112 | printf("winding=\"eofill\" "); |
||
113 | else |
||
114 | printf("winding=\"nonzero\" "); |
||
115 | fz_trace_matrix(ctm); |
||
116 | printf("contentbbox=\"%g %g %g %g\">\n", |
||
117 | rect->x0, rect->y0, rect->x1, rect->y1); |
||
118 | fz_trace_path(path, 0); |
||
119 | printf("\n"); |
||
120 | } |
||
121 | |||
122 | static void |
||
123 | fz_trace_clip_stroke_path(void *user, fz_path *path, fz_rect *rect, fz_stroke_state *stroke, fz_matrix ctm) |
||
124 | { |
||
125 | printf(" |
||
126 | fz_trace_matrix(ctm); |
||
127 | printf(">\n"); |
||
128 | fz_trace_path(path, 0); |
||
129 | printf("\n"); |
||
130 | } |
||
131 | |||
132 | static void |
||
133 | fz_trace_fill_text(void *user, fz_text *text, fz_matrix ctm, |
||
134 | fz_colorspace *colorspace, float *color, float alpha) |
||
135 | { |
||
136 | printf(" |
||
137 | fz_trace_color(colorspace, color, alpha); |
||
138 | fz_trace_matrix(fz_concat(ctm, text->trm)); |
||
139 | printf(">\n"); |
||
140 | fz_debug_text(text, 0); |
||
141 | printf("\n"); |
||
142 | } |
||
143 | |||
144 | static void |
||
145 | fz_trace_stroke_text(void *user, fz_text *text, fz_stroke_state *stroke, fz_matrix ctm, |
||
146 | fz_colorspace *colorspace, float *color, float alpha) |
||
147 | { |
||
148 | printf(" |
||
149 | fz_trace_color(colorspace, color, alpha); |
||
150 | fz_trace_matrix(fz_concat(ctm, text->trm)); |
||
151 | printf(">\n"); |
||
152 | fz_debug_text(text, 0); |
||
153 | printf("\n"); |
||
154 | } |
||
155 | |||
156 | static void |
||
157 | fz_trace_clip_text(void *user, fz_text *text, fz_matrix ctm, int accumulate) |
||
158 | { |
||
159 | printf(" |
||
160 | printf("accumulate=\"%d\" ", accumulate); |
||
161 | fz_trace_matrix(fz_concat(ctm, text->trm)); |
||
162 | printf(">\n"); |
||
163 | fz_debug_text(text, 0); |
||
164 | printf("\n"); |
||
165 | } |
||
166 | |||
167 | static void |
||
168 | fz_trace_clip_stroke_text(void *user, fz_text *text, fz_stroke_state *stroke, fz_matrix ctm) |
||
169 | { |
||
170 | printf(" |
||
171 | fz_trace_matrix(fz_concat(ctm, text->trm)); |
||
172 | printf(">\n"); |
||
173 | fz_debug_text(text, 0); |
||
174 | printf("\n"); |
||
175 | } |
||
176 | |||
177 | static void |
||
178 | fz_trace_ignore_text(void *user, fz_text *text, fz_matrix ctm) |
||
179 | { |
||
180 | printf(" |
||
181 | fz_trace_matrix(fz_concat(ctm, text->trm)); |
||
182 | printf(">\n"); |
||
183 | fz_debug_text(text, 0); |
||
184 | printf("\n"); |
||
185 | } |
||
186 | |||
187 | static void |
||
188 | fz_trace_fill_image(void *user, fz_pixmap *image, fz_matrix ctm, float alpha) |
||
189 | { |
||
190 | printf(" |
||
191 | fz_trace_matrix(ctm); |
||
192 | printf("/>\n"); |
||
193 | } |
||
194 | |||
195 | static void |
||
196 | fz_trace_fill_shade(void *user, fz_shade *shade, fz_matrix ctm, float alpha) |
||
197 | { |
||
198 | printf(" |
||
199 | fz_trace_matrix(ctm); |
||
200 | printf("/>\n"); |
||
201 | } |
||
202 | |||
203 | static void |
||
204 | fz_trace_fill_image_mask(void *user, fz_pixmap *image, fz_matrix ctm, |
||
205 | fz_colorspace *colorspace, float *color, float alpha) |
||
206 | { |
||
207 | printf(" |
||
208 | fz_trace_matrix(ctm); |
||
209 | fz_trace_color(colorspace, color, alpha); |
||
210 | printf("/>\n"); |
||
211 | } |
||
212 | |||
213 | static void |
||
214 | fz_trace_clip_image_mask(void *user, fz_pixmap *image, fz_rect *rect, fz_matrix ctm) |
||
215 | { |
||
216 | printf(" |
||
217 | fz_trace_matrix(ctm); |
||
218 | printf("/>\n"); |
||
219 | } |
||
220 | |||
221 | static void |
||
222 | fz_trace_pop_clip(void *user) |
||
223 | { |
||
224 | printf(" |
||
225 | } |
||
226 | |||
227 | static void |
||
228 | fz_trace_begin_mask(void *user, fz_rect bbox, int luminosity, fz_colorspace *colorspace, float *color) |
||
229 | { |
||
230 | printf(" |
||
231 | bbox.x0, bbox.y0, bbox.x1, bbox.y1, |
||
232 | luminosity ? "luminosity" : "alpha"); |
||
233 | // fz_trace_color(colorspace, color, 1); |
||
234 | printf(">\n"); |
||
235 | } |
||
236 | |||
237 | static void |
||
238 | fz_trace_end_mask(void *user) |
||
239 | { |
||
240 | printf("\n"); |
||
241 | } |
||
242 | |||
243 | static void |
||
244 | fz_trace_begin_group(void *user, fz_rect bbox, int isolated, int knockout, int blendmode, float alpha) |
||
245 | { |
||
246 | printf(" |
||
247 | bbox.x0, bbox.y0, bbox.x1, bbox.y1, |
||
248 | isolated, knockout, fz_blendmode_name(blendmode), alpha); |
||
249 | } |
||
250 | |||
251 | static void |
||
252 | fz_trace_end_group(void *user) |
||
253 | { |
||
254 | printf("\n"); |
||
255 | } |
||
256 | |||
257 | static void |
||
258 | fz_trace_begin_tile(void *user, fz_rect area, fz_rect view, float xstep, float ystep, fz_matrix ctm) |
||
259 | { |
||
260 | printf(" |
||
261 | printf("area=\"%g %g %g %g\" ", area.x0, area.y0, area.x1, area.y1); |
||
262 | printf("view=\"%g %g %g %g\" ", view.x0, view.y0, view.x1, view.y1); |
||
263 | printf("xstep=\"%g\" ystep=\"%g\" ", xstep, ystep); |
||
264 | fz_trace_matrix(ctm); |
||
265 | printf(">\n"); |
||
266 | } |
||
267 | |||
268 | static void |
||
269 | fz_trace_end_tile(void *user) |
||
270 | { |
||
271 | printf("\n"); |
||
272 | } |
||
273 | |||
274 | fz_device *fz_new_trace_device(void) |
||
275 | { |
||
276 | fz_device *dev = fz_new_device(NULL); |
||
277 | |||
278 | dev->fill_path = fz_trace_fill_path; |
||
279 | dev->stroke_path = fz_trace_stroke_path; |
||
280 | dev->clip_path = fz_trace_clip_path; |
||
281 | dev->clip_stroke_path = fz_trace_clip_stroke_path; |
||
282 | |||
283 | dev->fill_text = fz_trace_fill_text; |
||
284 | dev->stroke_text = fz_trace_stroke_text; |
||
285 | dev->clip_text = fz_trace_clip_text; |
||
286 | dev->clip_stroke_text = fz_trace_clip_stroke_text; |
||
287 | dev->ignore_text = fz_trace_ignore_text; |
||
288 | |||
289 | dev->fill_shade = fz_trace_fill_shade; |
||
290 | dev->fill_image = fz_trace_fill_image; |
||
291 | dev->fill_image_mask = fz_trace_fill_image_mask; |
||
292 | dev->clip_image_mask = fz_trace_clip_image_mask; |
||
293 | |||
294 | dev->pop_clip = fz_trace_pop_clip; |
||
295 | |||
296 | dev->begin_mask = fz_trace_begin_mask; |
||
297 | dev->end_mask = fz_trace_end_mask; |
||
298 | dev->begin_group = fz_trace_begin_group; |
||
299 | dev->end_group = fz_trace_end_group; |
||
300 | |||
301 | dev->begin_tile = fz_trace_begin_tile; |
||
302 | dev->end_tile = fz_trace_end_tile; |
||
303 | |||
304 | return dev; |
||
305 | }>>>>> |