Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3584 | sourcerer | 1 | #include |
2 | #include |
||
3 | #include |
||
4 | |||
5 | static size_t dump_css_fixed(css_fixed f, char *ptr, size_t len) |
||
6 | { |
||
7 | #define ABS(x) (uint32_t)((x) < 0 ? -(x) : (x)) |
||
8 | uint32_t uintpart = FIXTOINT(ABS(f)); |
||
9 | /* + 500 to ensure round to nearest (division will truncate) */ |
||
10 | uint32_t fracpart = ((ABS(f) & 0x3ff) * 1000 + 500) / (1 << 10); |
||
11 | #undef ABS |
||
12 | size_t flen = 0; |
||
13 | char tmp[20]; |
||
14 | size_t tlen = 0; |
||
15 | char *buf = ptr; |
||
16 | |||
17 | if (len == 0) |
||
18 | return 0; |
||
19 | |||
20 | if (f < 0) { |
||
21 | buf[0] = '-'; |
||
22 | buf++; |
||
23 | len--; |
||
24 | } |
||
25 | |||
26 | do { |
||
27 | tmp[tlen] = "0123456789"[uintpart % 10]; |
||
28 | tlen++; |
||
29 | |||
30 | uintpart /= 10; |
||
31 | } while (tlen < 20 && uintpart != 0); |
||
32 | |||
33 | while (tlen > 0 && len > 0) { |
||
34 | buf[0] = tmp[--tlen]; |
||
35 | buf++; |
||
36 | len--; |
||
37 | } |
||
38 | |||
39 | if (len > 0) { |
||
40 | buf[0] = '.'; |
||
41 | buf++; |
||
42 | len--; |
||
43 | } |
||
44 | |||
45 | do { |
||
46 | tmp[tlen] = "0123456789"[fracpart % 10]; |
||
47 | tlen++; |
||
48 | |||
49 | fracpart /= 10; |
||
50 | } while (tlen < 20 && fracpart != 0); |
||
51 | |||
52 | while (tlen > 0 && len > 0) { |
||
53 | buf[0] = tmp[--tlen]; |
||
54 | buf++; |
||
55 | flen++; |
||
56 | len--; |
||
57 | } |
||
58 | |||
59 | while (flen < 3 && len > 0) { |
||
60 | buf[0] = '0'; |
||
61 | buf++; |
||
62 | flen++; |
||
63 | len--; |
||
64 | } |
||
65 | |||
66 | if (len > 0) |
||
67 | buf[0] = '\0'; |
||
68 | |||
69 | return buf - ptr; |
||
70 | } |
||
71 | static size_t dump_css_number(css_fixed val, char *ptr, size_t len) |
||
72 | { |
||
73 | if (INTTOFIX(FIXTOINT(val)) == val) |
||
74 | return snprintf(ptr, len, "%d", FIXTOINT(val)); |
||
75 | else |
||
76 | return dump_css_fixed(val, ptr, len); |
||
77 | } |
||
78 | |||
79 | static size_t dump_css_unit(css_fixed val, css_unit unit, char *ptr, size_t len) |
||
80 | { |
||
81 | size_t ret = dump_css_number(val, ptr, len); |
||
82 | |||
83 | switch (unit) { |
||
84 | case CSS_UNIT_PX: |
||
85 | ret += snprintf(ptr + ret, len - ret, "px"); |
||
86 | break; |
||
87 | case CSS_UNIT_EX: |
||
88 | ret += snprintf(ptr + ret, len - ret, "ex"); |
||
89 | break; |
||
90 | case CSS_UNIT_EM: |
||
91 | ret += snprintf(ptr + ret, len - ret, "em"); |
||
92 | break; |
||
93 | case CSS_UNIT_IN: |
||
94 | ret += snprintf(ptr + ret, len - ret, "in"); |
||
95 | break; |
||
96 | case CSS_UNIT_CM: |
||
97 | ret += snprintf(ptr + ret, len - ret, "cm"); |
||
98 | break; |
||
99 | case CSS_UNIT_MM: |
||
100 | ret += snprintf(ptr + ret, len - ret, "mm"); |
||
101 | break; |
||
102 | case CSS_UNIT_PT: |
||
103 | ret += snprintf(ptr + ret, len - ret, "pt"); |
||
104 | break; |
||
105 | case CSS_UNIT_PC: |
||
106 | ret += snprintf(ptr + ret, len - ret, "pc"); |
||
107 | break; |
||
108 | case CSS_UNIT_PCT: |
||
109 | ret += snprintf(ptr + ret, len - ret, "%%"); |
||
110 | break; |
||
111 | case CSS_UNIT_DEG: |
||
112 | ret += snprintf(ptr + ret, len - ret, "deg"); |
||
113 | break; |
||
114 | case CSS_UNIT_GRAD: |
||
115 | ret += snprintf(ptr + ret, len - ret, "grad"); |
||
116 | break; |
||
117 | case CSS_UNIT_RAD: |
||
118 | ret += snprintf(ptr + ret, len - ret, "rad"); |
||
119 | break; |
||
120 | case CSS_UNIT_MS: |
||
121 | ret += snprintf(ptr + ret, len - ret, "ms"); |
||
122 | break; |
||
123 | case CSS_UNIT_S: |
||
124 | ret += snprintf(ptr + ret, len - ret, "s"); |
||
125 | break; |
||
126 | case CSS_UNIT_HZ: |
||
127 | ret += snprintf(ptr + ret, len - ret, "Hz"); |
||
128 | break; |
||
129 | case CSS_UNIT_KHZ: |
||
130 | ret += snprintf(ptr + ret, len - ret, "kHz"); |
||
131 | break; |
||
132 | } |
||
133 | |||
134 | return ret; |
||
135 | } |
||
136 | |||
137 | |||
138 | static void dump_computed_style(const css_computed_style *style, char *buf, |
||
139 | size_t *len) |
||
140 | { |
||
141 | char *ptr = buf; |
||
142 | size_t wrote = 0; |
||
143 | uint8_t val; |
||
144 | css_color color = 0; |
||
145 | lwc_string *url = NULL; |
||
146 | css_fixed len1 = 0, len2 = 0; |
||
147 | css_unit unit1 = CSS_UNIT_PX, unit2 = CSS_UNIT_PX; |
||
148 | css_computed_clip_rect rect = { 0, 0, 0, 0, CSS_UNIT_PX, CSS_UNIT_PX, |
||
149 | CSS_UNIT_PX, CSS_UNIT_PX, true, true, |
||
150 | true, true }; |
||
151 | const css_computed_content_item *content = NULL; |
||
152 | const css_computed_counter *counter = NULL; |
||
153 | lwc_string **string_list = NULL; |
||
154 | int32_t zindex = 0; |
||
155 | |||
156 | /* background-attachment */ |
||
157 | val = css_computed_background_attachment(style); |
||
158 | switch (val) { |
||
159 | case CSS_BACKGROUND_ATTACHMENT_INHERIT: |
||
160 | wrote = snprintf(ptr, *len, "background-attachment: inherit\n"); |
||
161 | break; |
||
162 | case CSS_BACKGROUND_ATTACHMENT_FIXED: |
||
163 | wrote = snprintf(ptr, *len, "background-attachment: fixed\n"); |
||
164 | break; |
||
165 | case CSS_BACKGROUND_ATTACHMENT_SCROLL: |
||
166 | wrote = snprintf(ptr, *len, "background-attachment: scroll\n"); |
||
167 | break; |
||
168 | default: |
||
169 | wrote = 0; |
||
170 | break; |
||
171 | } |
||
172 | ptr += wrote; |
||
173 | *len -= wrote; |
||
174 | |||
175 | /* background-color */ |
||
176 | val = css_computed_background_color(style, &color); |
||
177 | switch (val) { |
||
178 | case CSS_BACKGROUND_COLOR_INHERIT: |
||
179 | wrote = snprintf(ptr, *len, "background-color: inherit\n"); |
||
180 | break; |
||
181 | case CSS_BACKGROUND_COLOR_COLOR: |
||
182 | wrote = snprintf(ptr, *len, "background-color: #%08x\n", color); |
||
183 | break; |
||
184 | default: |
||
185 | wrote = 0; |
||
186 | break; |
||
187 | } |
||
188 | ptr += wrote; |
||
189 | *len -= wrote; |
||
190 | |||
191 | /* background-image */ |
||
192 | val = css_computed_background_image(style, &url); |
||
193 | if (val == CSS_BACKGROUND_IMAGE_INHERIT) { |
||
194 | wrote = snprintf(ptr, *len, "background-image: inherit\n"); |
||
195 | } else if (val == CSS_BACKGROUND_IMAGE_IMAGE && url != NULL) { |
||
196 | wrote = snprintf(ptr, *len, "background-image: url('%.*s')\n", |
||
197 | (int) lwc_string_length(url), |
||
198 | lwc_string_data(url)); |
||
199 | } else if (val == CSS_BACKGROUND_IMAGE_NONE) { |
||
200 | wrote = snprintf(ptr, *len, "background-image: none\n"); |
||
201 | } else { |
||
202 | wrote = 0; |
||
203 | } |
||
204 | ptr += wrote; |
||
205 | *len -= wrote; |
||
206 | |||
207 | /* background-position */ |
||
208 | val = css_computed_background_position(style, &len1, &unit1, |
||
209 | &len2, &unit2); |
||
210 | if (val == CSS_BACKGROUND_POSITION_INHERIT) { |
||
211 | wrote = snprintf(ptr, *len, "background-position: inherit\n"); |
||
212 | ptr += wrote; |
||
213 | *len -= wrote; |
||
214 | } else if (val == CSS_BACKGROUND_POSITION_SET) { |
||
215 | wrote = snprintf(ptr, *len, "background-position: "); |
||
216 | ptr += wrote; |
||
217 | *len -= wrote; |
||
218 | |||
219 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
220 | ptr += wrote; |
||
221 | *len -= wrote; |
||
222 | |||
223 | wrote = snprintf(ptr, *len, " "); |
||
224 | ptr += wrote; |
||
225 | *len -= wrote; |
||
226 | |||
227 | wrote = dump_css_unit(len2, unit2, ptr, *len); |
||
228 | ptr += wrote; |
||
229 | *len -= wrote; |
||
230 | |||
231 | wrote = snprintf(ptr, *len, "\n"); |
||
232 | ptr += wrote; |
||
233 | *len -= wrote; |
||
234 | } |
||
235 | |||
236 | /* background-repeat */ |
||
237 | val = css_computed_background_repeat(style); |
||
238 | switch (val) { |
||
239 | case CSS_BACKGROUND_REPEAT_INHERIT: |
||
240 | wrote = snprintf(ptr, *len, "background-repeat: inherit\n"); |
||
241 | break; |
||
242 | case CSS_BACKGROUND_REPEAT_REPEAT_X: |
||
243 | wrote = snprintf(ptr, *len, "background-repeat: repeat-x\n"); |
||
244 | break; |
||
245 | case CSS_BACKGROUND_REPEAT_REPEAT_Y: |
||
246 | wrote = snprintf(ptr, *len, "background-repeat: repeat-y\n"); |
||
247 | break; |
||
248 | case CSS_BACKGROUND_REPEAT_REPEAT: |
||
249 | wrote = snprintf(ptr, *len, "background-repeat: repeat\n"); |
||
250 | break; |
||
251 | case CSS_BACKGROUND_REPEAT_NO_REPEAT: |
||
252 | wrote = snprintf(ptr, *len, "background-repeat: no-repeat\n"); |
||
253 | break; |
||
254 | default: |
||
255 | wrote = 0; |
||
256 | break; |
||
257 | } |
||
258 | ptr += wrote; |
||
259 | *len -= wrote; |
||
260 | |||
261 | /* border-collapse */ |
||
262 | val = css_computed_border_collapse(style); |
||
263 | switch (val) { |
||
264 | case CSS_BORDER_COLLAPSE_INHERIT: |
||
265 | wrote = snprintf(ptr, *len, "border-collapse: inherit\n"); |
||
266 | break; |
||
267 | case CSS_BORDER_COLLAPSE_SEPARATE: |
||
268 | wrote = snprintf(ptr, *len, "border-collapse: separate\n"); |
||
269 | break; |
||
270 | case CSS_BORDER_COLLAPSE_COLLAPSE: |
||
271 | wrote = snprintf(ptr, *len, "border-collapse: collapse\n"); |
||
272 | break; |
||
273 | default: |
||
274 | wrote = 0; |
||
275 | break; |
||
276 | } |
||
277 | ptr += wrote; |
||
278 | *len -= wrote; |
||
279 | |||
280 | /* border-spacing */ |
||
281 | val = css_computed_border_spacing(style, &len1, &unit1, &len2, &unit2); |
||
282 | if (val == CSS_BORDER_SPACING_INHERIT) { |
||
283 | wrote = snprintf(ptr, *len, "border-spacing: inherit\n"); |
||
284 | ptr += wrote; |
||
285 | *len -= wrote; |
||
286 | } else if (val == CSS_BORDER_SPACING_SET) { |
||
287 | wrote = snprintf(ptr, *len, "border-spacing: "); |
||
288 | ptr += wrote; |
||
289 | *len -= wrote; |
||
290 | |||
291 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
292 | ptr += wrote; |
||
293 | *len -= wrote; |
||
294 | |||
295 | wrote = snprintf(ptr, *len, " "); |
||
296 | ptr += wrote; |
||
297 | *len -= wrote; |
||
298 | |||
299 | wrote = dump_css_unit(len2, unit2, ptr, *len); |
||
300 | ptr += wrote; |
||
301 | *len -= wrote; |
||
302 | |||
303 | wrote = snprintf(ptr, *len, "\n"); |
||
304 | ptr += wrote; |
||
305 | *len -= wrote; |
||
306 | } |
||
307 | |||
308 | /* border-top-color */ |
||
309 | val = css_computed_border_top_color(style, &color); |
||
310 | switch (val) { |
||
311 | case CSS_BORDER_COLOR_INHERIT: |
||
312 | wrote = snprintf(ptr, *len, "border-top-color: inherit\n"); |
||
313 | break; |
||
314 | case CSS_BORDER_COLOR_CURRENT_COLOR: |
||
315 | wrote = snprintf(ptr, *len, "border-top-color: currentColor\n"); |
||
316 | break; |
||
317 | case CSS_BORDER_COLOR_COLOR: |
||
318 | wrote = snprintf(ptr, *len, "border-top-color: #%08x\n", color); |
||
319 | break; |
||
320 | default: |
||
321 | wrote = 0; |
||
322 | break; |
||
323 | } |
||
324 | ptr += wrote; |
||
325 | *len -= wrote; |
||
326 | |||
327 | /* border-right-color */ |
||
328 | val = css_computed_border_right_color(style, &color); |
||
329 | switch (val) { |
||
330 | case CSS_BORDER_COLOR_INHERIT: |
||
331 | wrote = snprintf(ptr, *len, "border-right-color: inherit\n"); |
||
332 | break; |
||
333 | case CSS_BORDER_COLOR_CURRENT_COLOR: |
||
334 | wrote = snprintf(ptr, *len, "border-right-color: currentColor\n"); |
||
335 | break; |
||
336 | case CSS_BORDER_COLOR_COLOR: |
||
337 | wrote = snprintf(ptr, *len, |
||
338 | "border-right-color: #%08x\n", color); |
||
339 | break; |
||
340 | default: |
||
341 | wrote = 0; |
||
342 | break; |
||
343 | } |
||
344 | ptr += wrote; |
||
345 | *len -= wrote; |
||
346 | |||
347 | /* border-bottom-color */ |
||
348 | val = css_computed_border_bottom_color(style, &color); |
||
349 | switch (val) { |
||
350 | case CSS_BORDER_COLOR_INHERIT: |
||
351 | wrote = snprintf(ptr, *len, "border-bottom-color: inherit\n"); |
||
352 | break; |
||
353 | case CSS_BORDER_COLOR_CURRENT_COLOR: |
||
354 | wrote = snprintf(ptr, *len, "border-bottom-color: currentColor\n"); |
||
355 | break; |
||
356 | case CSS_BORDER_COLOR_COLOR: |
||
357 | wrote = snprintf(ptr, *len, |
||
358 | "border-bottom-color: #%08x\n", color); |
||
359 | break; |
||
360 | default: |
||
361 | wrote = 0; |
||
362 | break; |
||
363 | } |
||
364 | ptr += wrote; |
||
365 | *len -= wrote; |
||
366 | |||
367 | /* border-left-color */ |
||
368 | val = css_computed_border_left_color(style, &color); |
||
369 | switch (val) { |
||
370 | case CSS_BORDER_COLOR_INHERIT: |
||
371 | wrote = snprintf(ptr, *len, "border-left-color: inherit\n"); |
||
372 | break; |
||
373 | case CSS_BORDER_COLOR_CURRENT_COLOR: |
||
374 | wrote = snprintf(ptr, *len, "border-left-color: currentColor\n"); |
||
375 | break; |
||
376 | case CSS_BORDER_COLOR_COLOR: |
||
377 | wrote = snprintf(ptr, *len, |
||
378 | "border-left-color: #%08x\n", color); |
||
379 | break; |
||
380 | default: |
||
381 | wrote = 0; |
||
382 | break; |
||
383 | } |
||
384 | ptr += wrote; |
||
385 | *len -= wrote; |
||
386 | |||
387 | /* border-top-style */ |
||
388 | val = css_computed_border_top_style(style); |
||
389 | switch (val) { |
||
390 | case CSS_BORDER_STYLE_INHERIT: |
||
391 | wrote = snprintf(ptr, *len, "border-top-style: inherit\n"); |
||
392 | break; |
||
393 | case CSS_BORDER_STYLE_NONE: |
||
394 | wrote = snprintf(ptr, *len, "border-top-style: none\n"); |
||
395 | break; |
||
396 | case CSS_BORDER_STYLE_HIDDEN: |
||
397 | wrote = snprintf(ptr, *len, "border-top-style: hidden\n"); |
||
398 | break; |
||
399 | case CSS_BORDER_STYLE_DOTTED: |
||
400 | wrote = snprintf(ptr, *len, "border-top-style: dotted\n"); |
||
401 | break; |
||
402 | case CSS_BORDER_STYLE_DASHED: |
||
403 | wrote = snprintf(ptr, *len, "border-top-style: dashed\n"); |
||
404 | break; |
||
405 | case CSS_BORDER_STYLE_SOLID: |
||
406 | wrote = snprintf(ptr, *len, "border-top-style: solid\n"); |
||
407 | break; |
||
408 | case CSS_BORDER_STYLE_DOUBLE: |
||
409 | wrote = snprintf(ptr, *len, "border-top-style: double\n"); |
||
410 | break; |
||
411 | case CSS_BORDER_STYLE_GROOVE: |
||
412 | wrote = snprintf(ptr, *len, "border-top-style: groove\n"); |
||
413 | break; |
||
414 | case CSS_BORDER_STYLE_RIDGE: |
||
415 | wrote = snprintf(ptr, *len, "border-top-style: ridge\n"); |
||
416 | break; |
||
417 | case CSS_BORDER_STYLE_INSET: |
||
418 | wrote = snprintf(ptr, *len, "border-top-style: inset\n"); |
||
419 | break; |
||
420 | case CSS_BORDER_STYLE_OUTSET: |
||
421 | wrote = snprintf(ptr, *len, "border-top-style: outset\n"); |
||
422 | break; |
||
423 | default: |
||
424 | wrote = 0; |
||
425 | break; |
||
426 | } |
||
427 | ptr += wrote; |
||
428 | *len -= wrote; |
||
429 | |||
430 | /* border-right-style */ |
||
431 | val = css_computed_border_right_style(style); |
||
432 | switch (val) { |
||
433 | case CSS_BORDER_STYLE_INHERIT: |
||
434 | wrote = snprintf(ptr, *len, "border-right-style: inherit\n"); |
||
435 | break; |
||
436 | case CSS_BORDER_STYLE_NONE: |
||
437 | wrote = snprintf(ptr, *len, "border-right-style: none\n"); |
||
438 | break; |
||
439 | case CSS_BORDER_STYLE_HIDDEN: |
||
440 | wrote = snprintf(ptr, *len, "border-right-style: hidden\n"); |
||
441 | break; |
||
442 | case CSS_BORDER_STYLE_DOTTED: |
||
443 | wrote = snprintf(ptr, *len, "border-right-style: dotted\n"); |
||
444 | break; |
||
445 | case CSS_BORDER_STYLE_DASHED: |
||
446 | wrote = snprintf(ptr, *len, "border-right-style: dashed\n"); |
||
447 | break; |
||
448 | case CSS_BORDER_STYLE_SOLID: |
||
449 | wrote = snprintf(ptr, *len, "border-right-style: solid\n"); |
||
450 | break; |
||
451 | case CSS_BORDER_STYLE_DOUBLE: |
||
452 | wrote = snprintf(ptr, *len, "border-right-style: double\n"); |
||
453 | break; |
||
454 | case CSS_BORDER_STYLE_GROOVE: |
||
455 | wrote = snprintf(ptr, *len, "border-right-style: groove\n"); |
||
456 | break; |
||
457 | case CSS_BORDER_STYLE_RIDGE: |
||
458 | wrote = snprintf(ptr, *len, "border-right-style: ridge\n"); |
||
459 | break; |
||
460 | case CSS_BORDER_STYLE_INSET: |
||
461 | wrote = snprintf(ptr, *len, "border-right-style: inset\n"); |
||
462 | break; |
||
463 | case CSS_BORDER_STYLE_OUTSET: |
||
464 | wrote = snprintf(ptr, *len, "border-right-style: outset\n"); |
||
465 | break; |
||
466 | default: |
||
467 | wrote = 0; |
||
468 | break; |
||
469 | } |
||
470 | ptr += wrote; |
||
471 | *len -= wrote; |
||
472 | |||
473 | /* border-bottom-style */ |
||
474 | val = css_computed_border_bottom_style(style); |
||
475 | switch (val) { |
||
476 | case CSS_BORDER_STYLE_INHERIT: |
||
477 | wrote = snprintf(ptr, *len, "border-bottom-style: inherit\n"); |
||
478 | break; |
||
479 | case CSS_BORDER_STYLE_NONE: |
||
480 | wrote = snprintf(ptr, *len, "border-bottom-style: none\n"); |
||
481 | break; |
||
482 | case CSS_BORDER_STYLE_HIDDEN: |
||
483 | wrote = snprintf(ptr, *len, "border-bottom-style: hidden\n"); |
||
484 | break; |
||
485 | case CSS_BORDER_STYLE_DOTTED: |
||
486 | wrote = snprintf(ptr, *len, "border-bottom-style: dotted\n"); |
||
487 | break; |
||
488 | case CSS_BORDER_STYLE_DASHED: |
||
489 | wrote = snprintf(ptr, *len, "border-bottom-style: dashed\n"); |
||
490 | break; |
||
491 | case CSS_BORDER_STYLE_SOLID: |
||
492 | wrote = snprintf(ptr, *len, "border-bottom-style: solid\n"); |
||
493 | break; |
||
494 | case CSS_BORDER_STYLE_DOUBLE: |
||
495 | wrote = snprintf(ptr, *len, "border-bottom-style: double\n"); |
||
496 | break; |
||
497 | case CSS_BORDER_STYLE_GROOVE: |
||
498 | wrote = snprintf(ptr, *len, "border-bottom-style: groove\n"); |
||
499 | break; |
||
500 | case CSS_BORDER_STYLE_RIDGE: |
||
501 | wrote = snprintf(ptr, *len, "border-bottom-style: ridge\n"); |
||
502 | break; |
||
503 | case CSS_BORDER_STYLE_INSET: |
||
504 | wrote = snprintf(ptr, *len, "border-bottom-style: inset\n"); |
||
505 | break; |
||
506 | case CSS_BORDER_STYLE_OUTSET: |
||
507 | wrote = snprintf(ptr, *len, "border-bottom-style: outset\n"); |
||
508 | break; |
||
509 | default: |
||
510 | wrote = 0; |
||
511 | break; |
||
512 | } |
||
513 | ptr += wrote; |
||
514 | *len -= wrote; |
||
515 | |||
516 | /* border-left-style */ |
||
517 | val = css_computed_border_left_style(style); |
||
518 | switch (val) { |
||
519 | case CSS_BORDER_STYLE_INHERIT: |
||
520 | wrote = snprintf(ptr, *len, "border-left-style: inherit\n"); |
||
521 | break; |
||
522 | case CSS_BORDER_STYLE_NONE: |
||
523 | wrote = snprintf(ptr, *len, "border-left-style: none\n"); |
||
524 | break; |
||
525 | case CSS_BORDER_STYLE_HIDDEN: |
||
526 | wrote = snprintf(ptr, *len, "border-left-style: hidden\n"); |
||
527 | break; |
||
528 | case CSS_BORDER_STYLE_DOTTED: |
||
529 | wrote = snprintf(ptr, *len, "border-left-style: dotted\n"); |
||
530 | break; |
||
531 | case CSS_BORDER_STYLE_DASHED: |
||
532 | wrote = snprintf(ptr, *len, "border-left-style: dashed\n"); |
||
533 | break; |
||
534 | case CSS_BORDER_STYLE_SOLID: |
||
535 | wrote = snprintf(ptr, *len, "border-left-style: solid\n"); |
||
536 | break; |
||
537 | case CSS_BORDER_STYLE_DOUBLE: |
||
538 | wrote = snprintf(ptr, *len, "border-left-style: double\n"); |
||
539 | break; |
||
540 | case CSS_BORDER_STYLE_GROOVE: |
||
541 | wrote = snprintf(ptr, *len, "border-left-style: groove\n"); |
||
542 | break; |
||
543 | case CSS_BORDER_STYLE_RIDGE: |
||
544 | wrote = snprintf(ptr, *len, "border-left-style: ridge\n"); |
||
545 | break; |
||
546 | case CSS_BORDER_STYLE_INSET: |
||
547 | wrote = snprintf(ptr, *len, "border-left-style: inset\n"); |
||
548 | break; |
||
549 | case CSS_BORDER_STYLE_OUTSET: |
||
550 | wrote = snprintf(ptr, *len, "border-left-style: outset\n"); |
||
551 | break; |
||
552 | default: |
||
553 | wrote = 0; |
||
554 | break; |
||
555 | } |
||
556 | ptr += wrote; |
||
557 | *len -= wrote; |
||
558 | |||
559 | /* border-top-width */ |
||
560 | val = css_computed_border_top_width(style, &len1, &unit1); |
||
561 | switch (val) { |
||
562 | case CSS_BORDER_WIDTH_INHERIT: |
||
563 | wrote = snprintf(ptr, *len, "border-top-width: inherit\n"); |
||
564 | break; |
||
565 | case CSS_BORDER_WIDTH_THIN: |
||
566 | wrote = snprintf(ptr, *len, "border-top-width: thin\n"); |
||
567 | break; |
||
568 | case CSS_BORDER_WIDTH_MEDIUM: |
||
569 | wrote = snprintf(ptr, *len, "border-top-width: medium\n"); |
||
570 | break; |
||
571 | case CSS_BORDER_WIDTH_THICK: |
||
572 | wrote = snprintf(ptr, *len, "border-top-width: thick\n"); |
||
573 | break; |
||
574 | case CSS_BORDER_WIDTH_WIDTH: |
||
575 | wrote = snprintf(ptr, *len, "border-top-width: "); |
||
576 | ptr += wrote; |
||
577 | *len -= wrote; |
||
578 | |||
579 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
580 | ptr += wrote; |
||
581 | *len -= wrote; |
||
582 | |||
583 | wrote = snprintf(ptr, *len, "\n"); |
||
584 | break; |
||
585 | default: |
||
586 | wrote = 0; |
||
587 | break; |
||
588 | } |
||
589 | ptr += wrote; |
||
590 | *len -= wrote; |
||
591 | |||
592 | /* border-right-width */ |
||
593 | val = css_computed_border_right_width(style, &len1, &unit1); |
||
594 | switch (val) { |
||
595 | case CSS_BORDER_WIDTH_INHERIT: |
||
596 | wrote = snprintf(ptr, *len, "border-right-width: inherit\n"); |
||
597 | break; |
||
598 | case CSS_BORDER_WIDTH_THIN: |
||
599 | wrote = snprintf(ptr, *len, "border-right-width: thin\n"); |
||
600 | break; |
||
601 | case CSS_BORDER_WIDTH_MEDIUM: |
||
602 | wrote = snprintf(ptr, *len, "border-right-width: medium\n"); |
||
603 | break; |
||
604 | case CSS_BORDER_WIDTH_THICK: |
||
605 | wrote = snprintf(ptr, *len, "border-right-width: thick\n"); |
||
606 | break; |
||
607 | case CSS_BORDER_WIDTH_WIDTH: |
||
608 | wrote = snprintf(ptr, *len, "border-right-width: "); |
||
609 | ptr += wrote; |
||
610 | *len -= wrote; |
||
611 | |||
612 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
613 | ptr += wrote; |
||
614 | *len -= wrote; |
||
615 | |||
616 | wrote = snprintf(ptr, *len, "\n"); |
||
617 | break; |
||
618 | default: |
||
619 | wrote = 0; |
||
620 | break; |
||
621 | } |
||
622 | ptr += wrote; |
||
623 | *len -= wrote; |
||
624 | |||
625 | /* border-bottom-width */ |
||
626 | val = css_computed_border_bottom_width(style, &len1, &unit1); |
||
627 | switch (val) { |
||
628 | case CSS_BORDER_WIDTH_INHERIT: |
||
629 | wrote = snprintf(ptr, *len, "border-bottom-width: inherit\n"); |
||
630 | break; |
||
631 | case CSS_BORDER_WIDTH_THIN: |
||
632 | wrote = snprintf(ptr, *len, "border-bottom-width: thin\n"); |
||
633 | break; |
||
634 | case CSS_BORDER_WIDTH_MEDIUM: |
||
635 | wrote = snprintf(ptr, *len, "border-bottom-width: medium\n"); |
||
636 | break; |
||
637 | case CSS_BORDER_WIDTH_THICK: |
||
638 | wrote = snprintf(ptr, *len, "border-bottom-width: thick\n"); |
||
639 | break; |
||
640 | case CSS_BORDER_WIDTH_WIDTH: |
||
641 | wrote = snprintf(ptr, *len, "border-bottom-width: "); |
||
642 | ptr += wrote; |
||
643 | *len -= wrote; |
||
644 | |||
645 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
646 | ptr += wrote; |
||
647 | *len -= wrote; |
||
648 | |||
649 | wrote = snprintf(ptr, *len, "\n"); |
||
650 | break; |
||
651 | default: |
||
652 | wrote = 0; |
||
653 | break; |
||
654 | } |
||
655 | ptr += wrote; |
||
656 | *len -= wrote; |
||
657 | |||
658 | /* border-left-width */ |
||
659 | val = css_computed_border_left_width(style, &len1, &unit1); |
||
660 | switch (val) { |
||
661 | case CSS_BORDER_WIDTH_INHERIT: |
||
662 | wrote = snprintf(ptr, *len, "border-left-width: inherit\n"); |
||
663 | break; |
||
664 | case CSS_BORDER_WIDTH_THIN: |
||
665 | wrote = snprintf(ptr, *len, "border-left-width: thin\n"); |
||
666 | break; |
||
667 | case CSS_BORDER_WIDTH_MEDIUM: |
||
668 | wrote = snprintf(ptr, *len, "border-left-width: medium\n"); |
||
669 | break; |
||
670 | case CSS_BORDER_WIDTH_THICK: |
||
671 | wrote = snprintf(ptr, *len, "border-left-width: thick\n"); |
||
672 | break; |
||
673 | case CSS_BORDER_WIDTH_WIDTH: |
||
674 | wrote = snprintf(ptr, *len, "border-left-width: "); |
||
675 | ptr += wrote; |
||
676 | *len -= wrote; |
||
677 | |||
678 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
679 | ptr += wrote; |
||
680 | *len -= wrote; |
||
681 | |||
682 | wrote = snprintf(ptr, *len, "\n"); |
||
683 | break; |
||
684 | default: |
||
685 | wrote = 0; |
||
686 | break; |
||
687 | } |
||
688 | ptr += wrote; |
||
689 | *len -= wrote; |
||
690 | |||
691 | /* bottom */ |
||
692 | val = css_computed_bottom(style, &len1, &unit1); |
||
693 | switch (val) { |
||
694 | case CSS_BOTTOM_INHERIT: |
||
695 | wrote = snprintf(ptr, *len, "bottom: inherit\n"); |
||
696 | break; |
||
697 | case CSS_BOTTOM_AUTO: |
||
698 | wrote = snprintf(ptr, *len, "bottom: auto\n"); |
||
699 | break; |
||
700 | case CSS_BOTTOM_SET: |
||
701 | wrote = snprintf(ptr, *len, "bottom: "); |
||
702 | ptr += wrote; |
||
703 | *len -= wrote; |
||
704 | |||
705 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
706 | ptr += wrote; |
||
707 | *len -= wrote; |
||
708 | |||
709 | wrote = snprintf(ptr, *len, "\n"); |
||
710 | break; |
||
711 | default: |
||
712 | wrote = 0; |
||
713 | break; |
||
714 | } |
||
715 | ptr += wrote; |
||
716 | *len -= wrote; |
||
717 | |||
718 | /* caption-side */ |
||
719 | val = css_computed_caption_side(style); |
||
720 | switch (val) { |
||
721 | case CSS_CAPTION_SIDE_INHERIT: |
||
722 | wrote = snprintf(ptr, *len, "caption-side: inherit\n"); |
||
723 | break; |
||
724 | case CSS_CAPTION_SIDE_TOP: |
||
725 | wrote = snprintf(ptr, *len, "caption-side: top\n"); |
||
726 | break; |
||
727 | case CSS_CAPTION_SIDE_BOTTOM: |
||
728 | wrote = snprintf(ptr, *len, "caption-side: bottom\n"); |
||
729 | break; |
||
730 | default: |
||
731 | wrote = 0; |
||
732 | break; |
||
733 | } |
||
734 | ptr += wrote; |
||
735 | *len -= wrote; |
||
736 | |||
737 | /* clear */ |
||
738 | val = css_computed_clear(style); |
||
739 | switch (val) { |
||
740 | case CSS_CLEAR_INHERIT: |
||
741 | wrote = snprintf(ptr, *len, "clear: inherit\n"); |
||
742 | break; |
||
743 | case CSS_CLEAR_NONE: |
||
744 | wrote = snprintf(ptr, *len, "clear: none\n"); |
||
745 | break; |
||
746 | case CSS_CLEAR_LEFT: |
||
747 | wrote = snprintf(ptr, *len, "clear: left\n"); |
||
748 | break; |
||
749 | case CSS_CLEAR_RIGHT: |
||
750 | wrote = snprintf(ptr, *len, "clear: right\n"); |
||
751 | break; |
||
752 | case CSS_CLEAR_BOTH: |
||
753 | wrote = snprintf(ptr, *len, "clear: both\n"); |
||
754 | break; |
||
755 | default: |
||
756 | wrote = 0; |
||
757 | break; |
||
758 | } |
||
759 | ptr += wrote; |
||
760 | *len -= wrote; |
||
761 | |||
762 | /* clip */ |
||
763 | val = css_computed_clip(style, &rect); |
||
764 | switch (val) { |
||
765 | case CSS_CLIP_INHERIT: |
||
766 | wrote = snprintf(ptr, *len, "clip: inherit\n"); |
||
767 | break; |
||
768 | case CSS_CLIP_AUTO: |
||
769 | wrote = snprintf(ptr, *len, "clip: auto\n"); |
||
770 | break; |
||
771 | case CSS_CLIP_RECT: |
||
772 | wrote = snprintf(ptr, *len, "clip: rect( "); |
||
773 | ptr += wrote; |
||
774 | *len -= wrote; |
||
775 | |||
776 | if (rect.top_auto) |
||
777 | wrote = snprintf(ptr, *len, "auto"); |
||
778 | else |
||
779 | wrote = dump_css_unit(rect.top, rect.tunit, |
||
780 | ptr, *len); |
||
781 | wrote += snprintf(ptr + wrote, *len - wrote, ", "); |
||
782 | ptr += wrote; |
||
783 | *len -= wrote; |
||
784 | |||
785 | if (rect.right_auto) |
||
786 | wrote = snprintf(ptr, *len, "auto"); |
||
787 | else |
||
788 | wrote = dump_css_unit(rect.right, rect.runit, |
||
789 | ptr, *len); |
||
790 | wrote += snprintf(ptr + wrote, *len - wrote, ", "); |
||
791 | ptr += wrote; |
||
792 | *len -= wrote; |
||
793 | |||
794 | if (rect.bottom_auto) |
||
795 | wrote = snprintf(ptr, *len, "auto"); |
||
796 | else |
||
797 | wrote = dump_css_unit(rect.bottom, rect.bunit, |
||
798 | ptr, *len); |
||
799 | wrote += snprintf(ptr + wrote, *len - wrote, ", "); |
||
800 | ptr += wrote; |
||
801 | *len -= wrote; |
||
802 | |||
803 | if (rect.left_auto) |
||
804 | wrote = snprintf(ptr, *len, "auto"); |
||
805 | else |
||
806 | wrote = dump_css_unit(rect.left, rect.lunit, |
||
807 | ptr, *len); |
||
808 | wrote += snprintf(ptr + wrote, *len - wrote, ")\n"); |
||
809 | break; |
||
810 | default: |
||
811 | wrote = 0; |
||
812 | break; |
||
813 | } |
||
814 | ptr += wrote; |
||
815 | *len -= wrote; |
||
816 | |||
817 | /* color */ |
||
818 | val = css_computed_color(style, &color); |
||
819 | if (val == CSS_COLOR_INHERIT) { |
||
820 | wrote = snprintf(ptr, *len, "color: inherit\n"); |
||
821 | } else if (val == CSS_COLOR_COLOR) { |
||
822 | wrote = snprintf(ptr, *len, "color: #%08x\n", color); |
||
823 | } |
||
824 | ptr += wrote; |
||
825 | *len -= wrote; |
||
826 | |||
827 | /* content */ |
||
828 | val = css_computed_content(style, &content); |
||
829 | switch (val) { |
||
830 | case CSS_CONTENT_INHERIT: |
||
831 | wrote = snprintf(ptr, *len, "content: inherit\n"); |
||
832 | break; |
||
833 | case CSS_CONTENT_NONE: |
||
834 | wrote = snprintf(ptr, *len, "content: none\n"); |
||
835 | break; |
||
836 | case CSS_CONTENT_NORMAL: |
||
837 | wrote = snprintf(ptr, *len, "content: normal\n"); |
||
838 | break; |
||
839 | case CSS_CONTENT_SET: |
||
840 | wrote = snprintf(ptr, *len, "content:"); |
||
841 | ptr += wrote; |
||
842 | *len -= wrote; |
||
843 | |||
844 | while (content->type != CSS_COMPUTED_CONTENT_NONE) { |
||
845 | wrote = snprintf(ptr, *len, " "); |
||
846 | |||
847 | switch (content->type) { |
||
848 | case CSS_COMPUTED_CONTENT_STRING: |
||
849 | wrote += snprintf(ptr + wrote, |
||
850 | *len - wrote, |
||
851 | "\"%.*s\"", |
||
852 | (int) lwc_string_length( |
||
853 | content->data.string), |
||
854 | lwc_string_data( |
||
855 | content->data.string)); |
||
856 | break; |
||
857 | case CSS_COMPUTED_CONTENT_URI: |
||
858 | wrote += snprintf(ptr + wrote, |
||
859 | *len - wrote, |
||
860 | "uri(\"%.*s\")", |
||
861 | (int) lwc_string_length( |
||
862 | content->data.uri), |
||
863 | lwc_string_data( |
||
864 | content->data.uri)); |
||
865 | break; |
||
866 | case CSS_COMPUTED_CONTENT_COUNTER: |
||
867 | wrote += snprintf(ptr + wrote, |
||
868 | *len - wrote, |
||
869 | "counter(%.*s)", |
||
870 | (int) lwc_string_length( |
||
871 | content->data.counter.name), |
||
872 | lwc_string_data( |
||
873 | content->data.counter.name)); |
||
874 | break; |
||
875 | case CSS_COMPUTED_CONTENT_COUNTERS: |
||
876 | wrote += snprintf(ptr + wrote, |
||
877 | *len - wrote, |
||
878 | "counters(%.*s, " |
||
879 | "\"%.*s\")", |
||
880 | (int) lwc_string_length( |
||
881 | content->data.counters.name), |
||
882 | lwc_string_data( |
||
883 | content->data.counters.name), |
||
884 | (int) lwc_string_length( |
||
885 | content->data.counters.sep), |
||
886 | lwc_string_data( |
||
887 | content->data.counters.sep)); |
||
888 | break; |
||
889 | case CSS_COMPUTED_CONTENT_ATTR: |
||
890 | wrote += snprintf(ptr + wrote, |
||
891 | *len - wrote, |
||
892 | "attr(%.*s)", |
||
893 | (int) lwc_string_length( |
||
894 | content->data.attr), |
||
895 | lwc_string_data( |
||
896 | content->data.attr)); |
||
897 | break; |
||
898 | case CSS_COMPUTED_CONTENT_OPEN_QUOTE: |
||
899 | wrote += snprintf(ptr + wrote, |
||
900 | *len - wrote, |
||
901 | "open-quote"); |
||
902 | break; |
||
903 | case CSS_COMPUTED_CONTENT_CLOSE_QUOTE: |
||
904 | wrote += snprintf(ptr + wrote, |
||
905 | *len - wrote, |
||
906 | "close-quote"); |
||
907 | break; |
||
908 | case CSS_COMPUTED_CONTENT_NO_OPEN_QUOTE: |
||
909 | wrote += snprintf(ptr + wrote, |
||
910 | *len - wrote, |
||
911 | "no-open-quote"); |
||
912 | break; |
||
913 | case CSS_COMPUTED_CONTENT_NO_CLOSE_QUOTE: |
||
914 | wrote += snprintf(ptr + wrote, |
||
915 | *len - wrote, |
||
916 | "no-close-quote"); |
||
917 | break; |
||
918 | } |
||
919 | |||
920 | ptr += wrote; |
||
921 | *len -= wrote; |
||
922 | |||
923 | content++; |
||
924 | } |
||
925 | |||
926 | wrote = snprintf(ptr, *len, "\n"); |
||
927 | break; |
||
928 | default: |
||
929 | wrote = 0; |
||
930 | break; |
||
931 | } |
||
932 | ptr += wrote; |
||
933 | *len -= wrote; |
||
934 | |||
935 | /* counter-increment */ |
||
936 | val = css_computed_counter_increment(style, &counter); |
||
937 | if (val == CSS_COUNTER_INCREMENT_INHERIT) { |
||
938 | wrote = snprintf(ptr, *len, "counter-increment: inherit\n"); |
||
939 | } else if (counter == NULL) { |
||
940 | wrote = snprintf(ptr, *len, "counter-increment: none\n"); |
||
941 | } else { |
||
942 | wrote = snprintf(ptr, *len, "counter-increment:"); |
||
943 | ptr += wrote; |
||
944 | *len -= wrote; |
||
945 | |||
946 | while (counter->name != NULL) { |
||
947 | wrote = snprintf(ptr, *len, " %.*s ", |
||
948 | (int) lwc_string_length(counter->name), |
||
949 | lwc_string_data(counter->name)); |
||
950 | ptr += wrote; |
||
951 | *len -= wrote; |
||
952 | |||
953 | wrote = dump_css_fixed(counter->value, ptr, *len); |
||
954 | ptr += wrote; |
||
955 | *len -= wrote; |
||
956 | |||
957 | counter++; |
||
958 | } |
||
959 | |||
960 | wrote = snprintf(ptr, *len, "\n"); |
||
961 | } |
||
962 | ptr += wrote; |
||
963 | *len -= wrote; |
||
964 | |||
965 | /* counter-reset */ |
||
966 | val = css_computed_counter_reset(style, &counter); |
||
967 | if (val == CSS_COUNTER_RESET_INHERIT) { |
||
968 | wrote = snprintf(ptr, *len, "counter-reset: inherit\n"); |
||
969 | } else if (counter == NULL) { |
||
970 | wrote = snprintf(ptr, *len, "counter-reset: none\n"); |
||
971 | } else { |
||
972 | wrote = snprintf(ptr, *len, "counter-reset:"); |
||
973 | ptr += wrote; |
||
974 | *len -= wrote; |
||
975 | |||
976 | while (counter->name != NULL) { |
||
977 | wrote = snprintf(ptr, *len, " %.*s ", |
||
978 | (int) lwc_string_length(counter->name), |
||
979 | lwc_string_data(counter->name)); |
||
980 | ptr += wrote; |
||
981 | *len -= wrote; |
||
982 | |||
983 | wrote = dump_css_fixed(counter->value, ptr, *len); |
||
984 | ptr += wrote; |
||
985 | *len -= wrote; |
||
986 | |||
987 | counter++; |
||
988 | } |
||
989 | |||
990 | wrote = snprintf(ptr, *len, "\n"); |
||
991 | } |
||
992 | ptr += wrote; |
||
993 | *len -= wrote; |
||
994 | |||
995 | /* cursor */ |
||
996 | val = css_computed_cursor(style, &string_list); |
||
997 | wrote = snprintf(ptr, *len, "cursor:"); |
||
998 | ptr += wrote; |
||
999 | *len -= wrote; |
||
1000 | |||
1001 | if (string_list != NULL) { |
||
1002 | while (*string_list != NULL) { |
||
1003 | wrote = snprintf(ptr, *len, " url('%.*s')", |
||
1004 | (int) lwc_string_length(*string_list), |
||
1005 | lwc_string_data(*string_list)); |
||
1006 | ptr += wrote; |
||
1007 | *len -= wrote; |
||
1008 | |||
1009 | string_list++; |
||
1010 | } |
||
1011 | } |
||
1012 | switch (val) { |
||
1013 | case CSS_CURSOR_INHERIT: |
||
1014 | wrote = snprintf(ptr, *len, " inherit\n"); |
||
1015 | break; |
||
1016 | case CSS_CURSOR_AUTO: |
||
1017 | wrote = snprintf(ptr, *len, " auto\n"); |
||
1018 | break; |
||
1019 | case CSS_CURSOR_CROSSHAIR: |
||
1020 | wrote = snprintf(ptr, *len, " crosshair\n"); |
||
1021 | break; |
||
1022 | case CSS_CURSOR_DEFAULT: |
||
1023 | wrote = snprintf(ptr, *len, " default\n"); |
||
1024 | break; |
||
1025 | case CSS_CURSOR_POINTER: |
||
1026 | wrote = snprintf(ptr, *len, " pointer\n"); |
||
1027 | break; |
||
1028 | case CSS_CURSOR_MOVE: |
||
1029 | wrote = snprintf(ptr, *len, " move\n"); |
||
1030 | break; |
||
1031 | case CSS_CURSOR_E_RESIZE: |
||
1032 | wrote = snprintf(ptr, *len, " e-resize\n"); |
||
1033 | break; |
||
1034 | case CSS_CURSOR_NE_RESIZE: |
||
1035 | wrote = snprintf(ptr, *len, " ne-resize\n"); |
||
1036 | break; |
||
1037 | case CSS_CURSOR_NW_RESIZE: |
||
1038 | wrote = snprintf(ptr, *len, " nw-resize\n"); |
||
1039 | break; |
||
1040 | case CSS_CURSOR_N_RESIZE: |
||
1041 | wrote = snprintf(ptr, *len, " n-resize\n"); |
||
1042 | break; |
||
1043 | case CSS_CURSOR_SE_RESIZE: |
||
1044 | wrote = snprintf(ptr, *len, " se-resize\n"); |
||
1045 | break; |
||
1046 | case CSS_CURSOR_SW_RESIZE: |
||
1047 | wrote = snprintf(ptr, *len, " sw-resize\n"); |
||
1048 | break; |
||
1049 | case CSS_CURSOR_S_RESIZE: |
||
1050 | wrote = snprintf(ptr, *len, " s-resize\n"); |
||
1051 | break; |
||
1052 | case CSS_CURSOR_W_RESIZE: |
||
1053 | wrote = snprintf(ptr, *len, " w-resize\n"); |
||
1054 | break; |
||
1055 | case CSS_CURSOR_TEXT: |
||
1056 | wrote = snprintf(ptr, *len, " text\n"); |
||
1057 | break; |
||
1058 | case CSS_CURSOR_WAIT: |
||
1059 | wrote = snprintf(ptr, *len, " wait\n"); |
||
1060 | break; |
||
1061 | case CSS_CURSOR_HELP: |
||
1062 | wrote = snprintf(ptr, *len, " help\n"); |
||
1063 | break; |
||
1064 | case CSS_CURSOR_PROGRESS: |
||
1065 | wrote = snprintf(ptr, *len, " progress\n"); |
||
1066 | break; |
||
1067 | default: |
||
1068 | wrote = 0; |
||
1069 | break; |
||
1070 | } |
||
1071 | ptr += wrote; |
||
1072 | *len -= wrote; |
||
1073 | |||
1074 | /* direction */ |
||
1075 | val = css_computed_direction(style); |
||
1076 | switch (val) { |
||
1077 | case CSS_DIRECTION_INHERIT: |
||
1078 | wrote = snprintf(ptr, *len, "direction: inherit\n"); |
||
1079 | break; |
||
1080 | case CSS_DIRECTION_LTR: |
||
1081 | wrote = snprintf(ptr, *len, "direction: ltr\n"); |
||
1082 | break; |
||
1083 | case CSS_DIRECTION_RTL: |
||
1084 | wrote = snprintf(ptr, *len, "direction: rtl\n"); |
||
1085 | break; |
||
1086 | default: |
||
1087 | wrote = 0; |
||
1088 | break; |
||
1089 | } |
||
1090 | ptr += wrote; |
||
1091 | *len -= wrote; |
||
1092 | |||
1093 | /* display */ |
||
1094 | val = css_computed_display_static(style); |
||
1095 | switch (val) { |
||
1096 | case CSS_DISPLAY_INHERIT: |
||
1097 | wrote = snprintf(ptr, *len, "display: inherit\n"); |
||
1098 | break; |
||
1099 | case CSS_DISPLAY_INLINE: |
||
1100 | wrote = snprintf(ptr, *len, "display: inline\n"); |
||
1101 | break; |
||
1102 | case CSS_DISPLAY_BLOCK: |
||
1103 | wrote = snprintf(ptr, *len, "display: block\n"); |
||
1104 | break; |
||
1105 | case CSS_DISPLAY_LIST_ITEM: |
||
1106 | wrote = snprintf(ptr, *len, "display: list-item\n"); |
||
1107 | break; |
||
1108 | case CSS_DISPLAY_RUN_IN: |
||
1109 | wrote = snprintf(ptr, *len, "display: run-in\n"); |
||
1110 | break; |
||
1111 | case CSS_DISPLAY_INLINE_BLOCK: |
||
1112 | wrote = snprintf(ptr, *len, "display: inline-block\n"); |
||
1113 | break; |
||
1114 | case CSS_DISPLAY_TABLE: |
||
1115 | wrote = snprintf(ptr, *len, "display: table\n"); |
||
1116 | break; |
||
1117 | case CSS_DISPLAY_INLINE_TABLE: |
||
1118 | wrote = snprintf(ptr, *len, "display: inline-table\n"); |
||
1119 | break; |
||
1120 | case CSS_DISPLAY_TABLE_ROW_GROUP: |
||
1121 | wrote = snprintf(ptr, *len, "display: table-row-group\n"); |
||
1122 | break; |
||
1123 | case CSS_DISPLAY_TABLE_HEADER_GROUP: |
||
1124 | wrote = snprintf(ptr, *len, "display: table-header-group\n"); |
||
1125 | break; |
||
1126 | case CSS_DISPLAY_TABLE_FOOTER_GROUP: |
||
1127 | wrote = snprintf(ptr, *len, "display: table-footer-group\n"); |
||
1128 | break; |
||
1129 | case CSS_DISPLAY_TABLE_ROW: |
||
1130 | wrote = snprintf(ptr, *len, "display: table-row\n"); |
||
1131 | break; |
||
1132 | case CSS_DISPLAY_TABLE_COLUMN_GROUP: |
||
1133 | wrote = snprintf(ptr, *len, "display: table-column-group\n"); |
||
1134 | break; |
||
1135 | case CSS_DISPLAY_TABLE_COLUMN: |
||
1136 | wrote = snprintf(ptr, *len, "display: table-column\n"); |
||
1137 | break; |
||
1138 | case CSS_DISPLAY_TABLE_CELL: |
||
1139 | wrote = snprintf(ptr, *len, "display: table-cell\n"); |
||
1140 | break; |
||
1141 | case CSS_DISPLAY_TABLE_CAPTION: |
||
1142 | wrote = snprintf(ptr, *len, "display: table-caption\n"); |
||
1143 | break; |
||
1144 | case CSS_DISPLAY_NONE: |
||
1145 | wrote = snprintf(ptr, *len, "display: none\n"); |
||
1146 | break; |
||
1147 | default: |
||
1148 | wrote = 0; |
||
1149 | break; |
||
1150 | } |
||
1151 | ptr += wrote; |
||
1152 | *len -= wrote; |
||
1153 | |||
1154 | /* empty-cells */ |
||
1155 | val = css_computed_empty_cells(style); |
||
1156 | switch (val) { |
||
1157 | case CSS_EMPTY_CELLS_INHERIT: |
||
1158 | wrote = snprintf(ptr, *len, "empty-cells: inherit\n"); |
||
1159 | break; |
||
1160 | case CSS_EMPTY_CELLS_SHOW: |
||
1161 | wrote = snprintf(ptr, *len, "empty-cells: show\n"); |
||
1162 | break; |
||
1163 | case CSS_EMPTY_CELLS_HIDE: |
||
1164 | wrote = snprintf(ptr, *len, "empty-cells: hide\n"); |
||
1165 | break; |
||
1166 | default: |
||
1167 | wrote = 0; |
||
1168 | break; |
||
1169 | } |
||
1170 | ptr += wrote; |
||
1171 | *len -= wrote; |
||
1172 | |||
1173 | /* float */ |
||
1174 | val = css_computed_float(style); |
||
1175 | switch (val) { |
||
1176 | case CSS_FLOAT_INHERIT: |
||
1177 | wrote = snprintf(ptr, *len, "float: inherit\n"); |
||
1178 | break; |
||
1179 | case CSS_FLOAT_LEFT: |
||
1180 | wrote = snprintf(ptr, *len, "float: left\n"); |
||
1181 | break; |
||
1182 | case CSS_FLOAT_RIGHT: |
||
1183 | wrote = snprintf(ptr, *len, "float: right\n"); |
||
1184 | break; |
||
1185 | case CSS_FLOAT_NONE: |
||
1186 | wrote = snprintf(ptr, *len, "float: none\n"); |
||
1187 | break; |
||
1188 | default: |
||
1189 | wrote = 0; |
||
1190 | break; |
||
1191 | } |
||
1192 | ptr += wrote; |
||
1193 | *len -= wrote; |
||
1194 | |||
1195 | /* font-family */ |
||
1196 | val = css_computed_font_family(style, &string_list); |
||
1197 | if (val == CSS_FONT_FAMILY_INHERIT) { |
||
1198 | wrote = snprintf(ptr, *len, "font-family: inherit\n"); |
||
1199 | ptr += wrote; |
||
1200 | *len -= wrote; |
||
1201 | } else { |
||
1202 | wrote = snprintf(ptr, *len, "font-family:"); |
||
1203 | ptr += wrote; |
||
1204 | *len -= wrote; |
||
1205 | |||
1206 | if (string_list != NULL) { |
||
1207 | while (*string_list != NULL) { |
||
1208 | wrote = snprintf(ptr, *len, " \"%.*s\"", |
||
1209 | (int) lwc_string_length(*string_list), |
||
1210 | lwc_string_data(*string_list)); |
||
1211 | ptr += wrote; |
||
1212 | *len -= wrote; |
||
1213 | |||
1214 | string_list++; |
||
1215 | } |
||
1216 | } |
||
1217 | switch (val) { |
||
1218 | case CSS_FONT_FAMILY_SERIF: |
||
1219 | wrote = snprintf(ptr, *len, " serif\n"); |
||
1220 | break; |
||
1221 | case CSS_FONT_FAMILY_SANS_SERIF: |
||
1222 | wrote = snprintf(ptr, *len, " sans-serif\n"); |
||
1223 | break; |
||
1224 | case CSS_FONT_FAMILY_CURSIVE: |
||
1225 | wrote = snprintf(ptr, *len, " cursive\n"); |
||
1226 | break; |
||
1227 | case CSS_FONT_FAMILY_FANTASY: |
||
1228 | wrote = snprintf(ptr, *len, " fantasy\n"); |
||
1229 | break; |
||
1230 | case CSS_FONT_FAMILY_MONOSPACE: |
||
1231 | wrote = snprintf(ptr, *len, " monospace\n"); |
||
1232 | break; |
||
1233 | } |
||
1234 | ptr += wrote; |
||
1235 | *len -= wrote; |
||
1236 | } |
||
1237 | |||
1238 | /* font-size */ |
||
1239 | val = css_computed_font_size(style, &len1, &unit1); |
||
1240 | switch (val) { |
||
1241 | case CSS_FONT_SIZE_INHERIT: |
||
1242 | wrote = snprintf(ptr, *len, "font-size: inherit\n"); |
||
1243 | break; |
||
1244 | case CSS_FONT_SIZE_XX_SMALL: |
||
1245 | wrote = snprintf(ptr, *len, "font-size: xx-small\n"); |
||
1246 | break; |
||
1247 | case CSS_FONT_SIZE_X_SMALL: |
||
1248 | wrote = snprintf(ptr, *len, "font-size: x-small\n"); |
||
1249 | break; |
||
1250 | case CSS_FONT_SIZE_SMALL: |
||
1251 | wrote = snprintf(ptr, *len, "font-size: small\n"); |
||
1252 | break; |
||
1253 | case CSS_FONT_SIZE_MEDIUM: |
||
1254 | wrote = snprintf(ptr, *len, "font-size: medium\n"); |
||
1255 | break; |
||
1256 | case CSS_FONT_SIZE_LARGE: |
||
1257 | wrote = snprintf(ptr, *len, "font-size: large\n"); |
||
1258 | break; |
||
1259 | case CSS_FONT_SIZE_X_LARGE: |
||
1260 | wrote = snprintf(ptr, *len, "font-size: x-large\n"); |
||
1261 | break; |
||
1262 | case CSS_FONT_SIZE_XX_LARGE: |
||
1263 | wrote = snprintf(ptr, *len, "font-size: xx-large\n"); |
||
1264 | break; |
||
1265 | case CSS_FONT_SIZE_LARGER: |
||
1266 | wrote = snprintf(ptr, *len, "font-size: larger\n"); |
||
1267 | break; |
||
1268 | case CSS_FONT_SIZE_SMALLER: |
||
1269 | wrote = snprintf(ptr, *len, "font-size: smaller\n"); |
||
1270 | break; |
||
1271 | case CSS_FONT_SIZE_DIMENSION: |
||
1272 | wrote = snprintf(ptr, *len, "font-size: "); |
||
1273 | ptr += wrote; |
||
1274 | *len -= wrote; |
||
1275 | |||
1276 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1277 | ptr += wrote; |
||
1278 | *len -= wrote; |
||
1279 | |||
1280 | wrote = snprintf(ptr, *len, "\n"); |
||
1281 | break; |
||
1282 | default: |
||
1283 | wrote = 0; |
||
1284 | break; |
||
1285 | } |
||
1286 | ptr += wrote; |
||
1287 | *len -= wrote; |
||
1288 | |||
1289 | /* font-style */ |
||
1290 | val = css_computed_font_style(style); |
||
1291 | switch (val) { |
||
1292 | case CSS_FONT_STYLE_INHERIT: |
||
1293 | wrote = snprintf(ptr, *len, "font-style: inherit\n"); |
||
1294 | break; |
||
1295 | case CSS_FONT_STYLE_NORMAL: |
||
1296 | wrote = snprintf(ptr, *len, "font-style: normal\n"); |
||
1297 | break; |
||
1298 | case CSS_FONT_STYLE_ITALIC: |
||
1299 | wrote = snprintf(ptr, *len, "font-style: italic\n"); |
||
1300 | break; |
||
1301 | case CSS_FONT_STYLE_OBLIQUE: |
||
1302 | wrote = snprintf(ptr, *len, "font-style: oblique\n"); |
||
1303 | break; |
||
1304 | default: |
||
1305 | wrote = 0; |
||
1306 | break; |
||
1307 | } |
||
1308 | ptr += wrote; |
||
1309 | *len -= wrote; |
||
1310 | |||
1311 | /* font-variant */ |
||
1312 | val = css_computed_font_variant(style); |
||
1313 | switch (val) { |
||
1314 | case CSS_FONT_VARIANT_INHERIT: |
||
1315 | wrote = snprintf(ptr, *len, "font-variant: inherit\n"); |
||
1316 | break; |
||
1317 | case CSS_FONT_VARIANT_NORMAL: |
||
1318 | wrote = snprintf(ptr, *len, "font-variant: normal\n"); |
||
1319 | break; |
||
1320 | case CSS_FONT_VARIANT_SMALL_CAPS: |
||
1321 | wrote = snprintf(ptr, *len, "font-variant: small-caps\n"); |
||
1322 | break; |
||
1323 | default: |
||
1324 | wrote = 0; |
||
1325 | break; |
||
1326 | } |
||
1327 | ptr += wrote; |
||
1328 | *len -= wrote; |
||
1329 | |||
1330 | /* font-weight */ |
||
1331 | val = css_computed_font_weight(style); |
||
1332 | switch (val) { |
||
1333 | case CSS_FONT_WEIGHT_INHERIT: |
||
1334 | wrote = snprintf(ptr, *len, "font-weight: inherit\n"); |
||
1335 | break; |
||
1336 | case CSS_FONT_WEIGHT_NORMAL: |
||
1337 | wrote = snprintf(ptr, *len, "font-weight: normal\n"); |
||
1338 | break; |
||
1339 | case CSS_FONT_WEIGHT_BOLD: |
||
1340 | wrote = snprintf(ptr, *len, "font-weight: bold\n"); |
||
1341 | break; |
||
1342 | case CSS_FONT_WEIGHT_BOLDER: |
||
1343 | wrote = snprintf(ptr, *len, "font-weight: bolder\n"); |
||
1344 | break; |
||
1345 | case CSS_FONT_WEIGHT_LIGHTER: |
||
1346 | wrote = snprintf(ptr, *len, "font-weight: lighter\n"); |
||
1347 | break; |
||
1348 | case CSS_FONT_WEIGHT_100: |
||
1349 | wrote = snprintf(ptr, *len, "font-weight: 100\n"); |
||
1350 | break; |
||
1351 | case CSS_FONT_WEIGHT_200: |
||
1352 | wrote = snprintf(ptr, *len, "font-weight: 200\n"); |
||
1353 | break; |
||
1354 | case CSS_FONT_WEIGHT_300: |
||
1355 | wrote = snprintf(ptr, *len, "font-weight: 300\n"); |
||
1356 | break; |
||
1357 | case CSS_FONT_WEIGHT_400: |
||
1358 | wrote = snprintf(ptr, *len, "font-weight: 400\n"); |
||
1359 | break; |
||
1360 | case CSS_FONT_WEIGHT_500: |
||
1361 | wrote = snprintf(ptr, *len, "font-weight: 500\n"); |
||
1362 | break; |
||
1363 | case CSS_FONT_WEIGHT_600: |
||
1364 | wrote = snprintf(ptr, *len, "font-weight: 600\n"); |
||
1365 | break; |
||
1366 | case CSS_FONT_WEIGHT_700: |
||
1367 | wrote = snprintf(ptr, *len, "font-weight: 700\n"); |
||
1368 | break; |
||
1369 | case CSS_FONT_WEIGHT_800: |
||
1370 | wrote = snprintf(ptr, *len, "font-weight: 800\n"); |
||
1371 | break; |
||
1372 | case CSS_FONT_WEIGHT_900: |
||
1373 | wrote = snprintf(ptr, *len, "font-weight: 900\n"); |
||
1374 | break; |
||
1375 | default: |
||
1376 | wrote = 0; |
||
1377 | break; |
||
1378 | } |
||
1379 | ptr += wrote; |
||
1380 | *len -= wrote; |
||
1381 | |||
1382 | /* height */ |
||
1383 | val = css_computed_height(style, &len1, &unit1); |
||
1384 | switch (val) { |
||
1385 | case CSS_HEIGHT_INHERIT: |
||
1386 | wrote = snprintf(ptr, *len, "height: inherit\n"); |
||
1387 | break; |
||
1388 | case CSS_HEIGHT_AUTO: |
||
1389 | wrote = snprintf(ptr, *len, "height: auto\n"); |
||
1390 | break; |
||
1391 | case CSS_HEIGHT_SET: |
||
1392 | wrote = snprintf(ptr, *len, "height: "); |
||
1393 | ptr += wrote; |
||
1394 | *len -= wrote; |
||
1395 | |||
1396 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1397 | ptr += wrote; |
||
1398 | *len -= wrote; |
||
1399 | |||
1400 | wrote = snprintf(ptr, *len, "\n"); |
||
1401 | break; |
||
1402 | default: |
||
1403 | wrote = 0; |
||
1404 | break; |
||
1405 | } |
||
1406 | ptr += wrote; |
||
1407 | *len -= wrote; |
||
1408 | |||
1409 | /* left */ |
||
1410 | val = css_computed_left(style, &len1, &unit1); |
||
1411 | switch (val) { |
||
1412 | case CSS_LEFT_INHERIT: |
||
1413 | wrote = snprintf(ptr, *len, "left: inherit\n"); |
||
1414 | break; |
||
1415 | case CSS_LEFT_AUTO: |
||
1416 | wrote = snprintf(ptr, *len, "left: auto\n"); |
||
1417 | break; |
||
1418 | case CSS_LEFT_SET: |
||
1419 | wrote = snprintf(ptr, *len, "left: "); |
||
1420 | ptr += wrote; |
||
1421 | *len -= wrote; |
||
1422 | |||
1423 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1424 | ptr += wrote; |
||
1425 | *len -= wrote; |
||
1426 | |||
1427 | wrote = snprintf(ptr, *len, "\n"); |
||
1428 | break; |
||
1429 | default: |
||
1430 | wrote = 0; |
||
1431 | break; |
||
1432 | } |
||
1433 | ptr += wrote; |
||
1434 | *len -= wrote; |
||
1435 | |||
1436 | /* letter-spacing */ |
||
1437 | val = css_computed_letter_spacing(style, &len1, &unit1); |
||
1438 | switch (val) { |
||
1439 | case CSS_LETTER_SPACING_INHERIT: |
||
1440 | wrote = snprintf(ptr, *len, "letter-spacing: inherit\n"); |
||
1441 | break; |
||
1442 | case CSS_LETTER_SPACING_NORMAL: |
||
1443 | wrote = snprintf(ptr, *len, "letter-spacing: normal\n"); |
||
1444 | break; |
||
1445 | case CSS_LETTER_SPACING_SET: |
||
1446 | wrote = snprintf(ptr, *len, "letter-spacing: "); |
||
1447 | ptr += wrote; |
||
1448 | *len -= wrote; |
||
1449 | |||
1450 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1451 | ptr += wrote; |
||
1452 | *len -= wrote; |
||
1453 | |||
1454 | wrote = snprintf(ptr, *len, "\n"); |
||
1455 | break; |
||
1456 | default: |
||
1457 | wrote = 0; |
||
1458 | break; |
||
1459 | } |
||
1460 | ptr += wrote; |
||
1461 | *len -= wrote; |
||
1462 | |||
1463 | /* line-height */ |
||
1464 | val = css_computed_line_height(style, &len1, &unit1); |
||
1465 | switch (val) { |
||
1466 | case CSS_LINE_HEIGHT_INHERIT: |
||
1467 | wrote = snprintf(ptr, *len, "line-height: inherit\n"); |
||
1468 | break; |
||
1469 | case CSS_LINE_HEIGHT_NORMAL: |
||
1470 | wrote = snprintf(ptr, *len, "line-height: normal\n"); |
||
1471 | break; |
||
1472 | case CSS_LINE_HEIGHT_NUMBER: |
||
1473 | wrote = snprintf(ptr, *len, "line-height: "); |
||
1474 | ptr += wrote; |
||
1475 | *len -= wrote; |
||
1476 | |||
1477 | wrote = dump_css_fixed(len1, ptr, *len); |
||
1478 | ptr += wrote; |
||
1479 | *len -= wrote; |
||
1480 | |||
1481 | wrote = snprintf(ptr, *len, "\n"); |
||
1482 | break; |
||
1483 | case CSS_LINE_HEIGHT_DIMENSION: |
||
1484 | wrote = snprintf(ptr, *len, "line-height: "); |
||
1485 | ptr += wrote; |
||
1486 | *len -= wrote; |
||
1487 | |||
1488 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1489 | ptr += wrote; |
||
1490 | *len -= wrote; |
||
1491 | |||
1492 | wrote = snprintf(ptr, *len, "\n"); |
||
1493 | break; |
||
1494 | default: |
||
1495 | wrote = 0; |
||
1496 | break; |
||
1497 | } |
||
1498 | ptr += wrote; |
||
1499 | *len -= wrote; |
||
1500 | |||
1501 | /* list-style-image */ |
||
1502 | val = css_computed_list_style_image(style, &url); |
||
1503 | if (val == CSS_LIST_STYLE_IMAGE_INHERIT) { |
||
1504 | wrote = snprintf(ptr, *len, "list-style-image: inherit\n"); |
||
1505 | } else if (url != NULL) { |
||
1506 | wrote = snprintf(ptr, *len, "list-style-image: url('%.*s')\n", |
||
1507 | (int) lwc_string_length(url), |
||
1508 | lwc_string_data(url)); |
||
1509 | } else if (val == CSS_LIST_STYLE_IMAGE_NONE) { |
||
1510 | wrote = snprintf(ptr, *len, "list-style-image: none\n"); |
||
1511 | } else { |
||
1512 | wrote = 0; |
||
1513 | } |
||
1514 | ptr += wrote; |
||
1515 | *len -= wrote; |
||
1516 | |||
1517 | /* list-style-position */ |
||
1518 | val = css_computed_list_style_position(style); |
||
1519 | switch (val) { |
||
1520 | case CSS_LIST_STYLE_POSITION_INHERIT: |
||
1521 | wrote = snprintf(ptr, *len, "list-style-position: inherit\n"); |
||
1522 | break; |
||
1523 | case CSS_LIST_STYLE_POSITION_INSIDE: |
||
1524 | wrote = snprintf(ptr, *len, "list-style-position: inside\n"); |
||
1525 | break; |
||
1526 | case CSS_LIST_STYLE_POSITION_OUTSIDE: |
||
1527 | wrote = snprintf(ptr, *len, "list-style-position: outside\n"); |
||
1528 | break; |
||
1529 | default: |
||
1530 | wrote = 0; |
||
1531 | break; |
||
1532 | } |
||
1533 | ptr += wrote; |
||
1534 | *len -= wrote; |
||
1535 | |||
1536 | /* list-style-type */ |
||
1537 | val = css_computed_list_style_type(style); |
||
1538 | switch (val) { |
||
1539 | case CSS_LIST_STYLE_TYPE_INHERIT: |
||
1540 | wrote = snprintf(ptr, *len, "list-style-type: inherit\n"); |
||
1541 | break; |
||
1542 | case CSS_LIST_STYLE_TYPE_DISC: |
||
1543 | wrote = snprintf(ptr, *len, "list-style-type: disc\n"); |
||
1544 | break; |
||
1545 | case CSS_LIST_STYLE_TYPE_CIRCLE: |
||
1546 | wrote = snprintf(ptr, *len, "list-style-type: circle\n"); |
||
1547 | break; |
||
1548 | case CSS_LIST_STYLE_TYPE_SQUARE: |
||
1549 | wrote = snprintf(ptr, *len, "list-style-type: square\n"); |
||
1550 | break; |
||
1551 | case CSS_LIST_STYLE_TYPE_DECIMAL: |
||
1552 | wrote = snprintf(ptr, *len, "list-style-type: decimal\n"); |
||
1553 | break; |
||
1554 | case CSS_LIST_STYLE_TYPE_DECIMAL_LEADING_ZERO: |
||
1555 | wrote = snprintf(ptr, *len, |
||
1556 | "list-style-type: decimal-leading-zero\n"); |
||
1557 | break; |
||
1558 | case CSS_LIST_STYLE_TYPE_LOWER_ROMAN: |
||
1559 | wrote = snprintf(ptr, *len, "list-style-type: lower-roman\n"); |
||
1560 | break; |
||
1561 | case CSS_LIST_STYLE_TYPE_UPPER_ROMAN: |
||
1562 | wrote = snprintf(ptr, *len, "list-style-type: upper-roman\n"); |
||
1563 | break; |
||
1564 | case CSS_LIST_STYLE_TYPE_LOWER_GREEK: |
||
1565 | wrote = snprintf(ptr, *len, "list-style-type: lower-greek\n"); |
||
1566 | break; |
||
1567 | case CSS_LIST_STYLE_TYPE_LOWER_LATIN: |
||
1568 | wrote = snprintf(ptr, *len, "list-style-type: lower-latin\n"); |
||
1569 | break; |
||
1570 | case CSS_LIST_STYLE_TYPE_UPPER_LATIN: |
||
1571 | wrote = snprintf(ptr, *len, "list-style-type: upper-latin\n"); |
||
1572 | break; |
||
1573 | case CSS_LIST_STYLE_TYPE_ARMENIAN: |
||
1574 | wrote = snprintf(ptr, *len, "list-style-type: armenian\n"); |
||
1575 | break; |
||
1576 | case CSS_LIST_STYLE_TYPE_GEORGIAN: |
||
1577 | wrote = snprintf(ptr, *len, "list-style-type: georgian\n"); |
||
1578 | break; |
||
1579 | case CSS_LIST_STYLE_TYPE_LOWER_ALPHA: |
||
1580 | wrote = snprintf(ptr, *len, "list-style-type: lower-alpha\n"); |
||
1581 | break; |
||
1582 | case CSS_LIST_STYLE_TYPE_UPPER_ALPHA: |
||
1583 | wrote = snprintf(ptr, *len, "list-style-type: upper-alpha\n"); |
||
1584 | break; |
||
1585 | case CSS_LIST_STYLE_TYPE_NONE: |
||
1586 | wrote = snprintf(ptr, *len, "list-style-type: none\n"); |
||
1587 | break; |
||
1588 | default: |
||
1589 | wrote = 0; |
||
1590 | break; |
||
1591 | } |
||
1592 | ptr += wrote; |
||
1593 | *len -= wrote; |
||
1594 | |||
1595 | /* margin-top */ |
||
1596 | val = css_computed_margin_top(style, &len1, &unit1); |
||
1597 | switch (val) { |
||
1598 | case CSS_MARGIN_INHERIT: |
||
1599 | wrote = snprintf(ptr, *len, "margin-top: inherit\n"); |
||
1600 | break; |
||
1601 | case CSS_MARGIN_AUTO: |
||
1602 | wrote = snprintf(ptr, *len, "margin-top: auto\n"); |
||
1603 | break; |
||
1604 | case CSS_MARGIN_SET: |
||
1605 | wrote = snprintf(ptr, *len, "margin-top: "); |
||
1606 | ptr += wrote; |
||
1607 | *len -= wrote; |
||
1608 | |||
1609 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1610 | ptr += wrote; |
||
1611 | *len -= wrote; |
||
1612 | |||
1613 | wrote = snprintf(ptr, *len, "\n"); |
||
1614 | break; |
||
1615 | default: |
||
1616 | wrote = 0; |
||
1617 | break; |
||
1618 | } |
||
1619 | ptr += wrote; |
||
1620 | *len -= wrote; |
||
1621 | |||
1622 | /* margin-right */ |
||
1623 | val = css_computed_margin_right(style, &len1, &unit1); |
||
1624 | switch (val) { |
||
1625 | case CSS_MARGIN_INHERIT: |
||
1626 | wrote = snprintf(ptr, *len, "margin-right: inherit\n"); |
||
1627 | break; |
||
1628 | case CSS_MARGIN_AUTO: |
||
1629 | wrote = snprintf(ptr, *len, "margin-right: auto\n"); |
||
1630 | break; |
||
1631 | case CSS_MARGIN_SET: |
||
1632 | wrote = snprintf(ptr, *len, "margin-right: "); |
||
1633 | ptr += wrote; |
||
1634 | *len -= wrote; |
||
1635 | |||
1636 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1637 | ptr += wrote; |
||
1638 | *len -= wrote; |
||
1639 | |||
1640 | wrote = snprintf(ptr, *len, "\n"); |
||
1641 | break; |
||
1642 | default: |
||
1643 | wrote = 0; |
||
1644 | break; |
||
1645 | } |
||
1646 | ptr += wrote; |
||
1647 | *len -= wrote; |
||
1648 | |||
1649 | /* margin-bottom */ |
||
1650 | val = css_computed_margin_bottom(style, &len1, &unit1); |
||
1651 | switch (val) { |
||
1652 | case CSS_MARGIN_INHERIT: |
||
1653 | wrote = snprintf(ptr, *len, "margin-bottom: inherit\n"); |
||
1654 | break; |
||
1655 | case CSS_MARGIN_AUTO: |
||
1656 | wrote = snprintf(ptr, *len, "margin-bottom: auto\n"); |
||
1657 | break; |
||
1658 | case CSS_MARGIN_SET: |
||
1659 | wrote = snprintf(ptr, *len, "margin-bottom: "); |
||
1660 | ptr += wrote; |
||
1661 | *len -= wrote; |
||
1662 | |||
1663 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1664 | ptr += wrote; |
||
1665 | *len -= wrote; |
||
1666 | |||
1667 | wrote = snprintf(ptr, *len, "\n"); |
||
1668 | break; |
||
1669 | default: |
||
1670 | wrote = 0; |
||
1671 | break; |
||
1672 | } |
||
1673 | ptr += wrote; |
||
1674 | *len -= wrote; |
||
1675 | |||
1676 | /* margin-left */ |
||
1677 | val = css_computed_margin_left(style, &len1, &unit1); |
||
1678 | switch (val) { |
||
1679 | case CSS_MARGIN_INHERIT: |
||
1680 | wrote = snprintf(ptr, *len, "margin-left: inherit\n"); |
||
1681 | break; |
||
1682 | case CSS_MARGIN_AUTO: |
||
1683 | wrote = snprintf(ptr, *len, "margin-left: auto\n"); |
||
1684 | break; |
||
1685 | case CSS_MARGIN_SET: |
||
1686 | wrote = snprintf(ptr, *len, "margin-left: "); |
||
1687 | ptr += wrote; |
||
1688 | *len -= wrote; |
||
1689 | |||
1690 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1691 | ptr += wrote; |
||
1692 | *len -= wrote; |
||
1693 | |||
1694 | wrote = snprintf(ptr, *len, "\n"); |
||
1695 | break; |
||
1696 | default: |
||
1697 | wrote = 0; |
||
1698 | break; |
||
1699 | } |
||
1700 | ptr += wrote; |
||
1701 | *len -= wrote; |
||
1702 | |||
1703 | /* max-height */ |
||
1704 | val = css_computed_max_height(style, &len1, &unit1); |
||
1705 | switch (val) { |
||
1706 | case CSS_MAX_HEIGHT_INHERIT: |
||
1707 | wrote = snprintf(ptr, *len, "max-height: inherit\n"); |
||
1708 | break; |
||
1709 | case CSS_MAX_HEIGHT_NONE: |
||
1710 | wrote = snprintf(ptr, *len, "max-height: none\n"); |
||
1711 | break; |
||
1712 | case CSS_MAX_HEIGHT_SET: |
||
1713 | wrote = snprintf(ptr, *len, "max-height: "); |
||
1714 | ptr += wrote; |
||
1715 | *len -= wrote; |
||
1716 | |||
1717 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1718 | ptr += wrote; |
||
1719 | *len -= wrote; |
||
1720 | |||
1721 | wrote = snprintf(ptr, *len, "\n"); |
||
1722 | break; |
||
1723 | default: |
||
1724 | wrote = 0; |
||
1725 | break; |
||
1726 | } |
||
1727 | ptr += wrote; |
||
1728 | *len -= wrote; |
||
1729 | |||
1730 | /* max-width */ |
||
1731 | val = css_computed_max_width(style, &len1, &unit1); |
||
1732 | switch (val) { |
||
1733 | case CSS_MAX_WIDTH_INHERIT: |
||
1734 | wrote = snprintf(ptr, *len, "max-width: inherit\n"); |
||
1735 | break; |
||
1736 | case CSS_MAX_WIDTH_NONE: |
||
1737 | wrote = snprintf(ptr, *len, "max-width: none\n"); |
||
1738 | break; |
||
1739 | case CSS_MAX_WIDTH_SET: |
||
1740 | wrote = snprintf(ptr, *len, "max-width: "); |
||
1741 | ptr += wrote; |
||
1742 | *len -= wrote; |
||
1743 | |||
1744 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1745 | ptr += wrote; |
||
1746 | *len -= wrote; |
||
1747 | |||
1748 | wrote = snprintf(ptr, *len, "\n"); |
||
1749 | break; |
||
1750 | default: |
||
1751 | wrote = 0; |
||
1752 | break; |
||
1753 | } |
||
1754 | ptr += wrote; |
||
1755 | *len -= wrote; |
||
1756 | |||
1757 | /* min-height */ |
||
1758 | val = css_computed_min_height(style, &len1, &unit1); |
||
1759 | switch (val) { |
||
1760 | case CSS_MIN_HEIGHT_INHERIT: |
||
1761 | wrote = snprintf(ptr, *len, "min-height: inherit\n"); |
||
1762 | break; |
||
1763 | case CSS_MIN_HEIGHT_SET: |
||
1764 | wrote = snprintf(ptr, *len, "min-height: "); |
||
1765 | ptr += wrote; |
||
1766 | *len -= wrote; |
||
1767 | |||
1768 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1769 | ptr += wrote; |
||
1770 | *len -= wrote; |
||
1771 | |||
1772 | wrote = snprintf(ptr, *len, "\n"); |
||
1773 | break; |
||
1774 | default: |
||
1775 | wrote = 0; |
||
1776 | break; |
||
1777 | } |
||
1778 | ptr += wrote; |
||
1779 | *len -= wrote; |
||
1780 | |||
1781 | /* min-width */ |
||
1782 | val = css_computed_min_width(style, &len1, &unit1); |
||
1783 | switch (val) { |
||
1784 | case CSS_MIN_WIDTH_INHERIT: |
||
1785 | wrote = snprintf(ptr, *len, "min-width: inherit\n"); |
||
1786 | break; |
||
1787 | case CSS_MIN_WIDTH_SET: |
||
1788 | wrote = snprintf(ptr, *len, "min-width: "); |
||
1789 | ptr += wrote; |
||
1790 | *len -= wrote; |
||
1791 | |||
1792 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1793 | ptr += wrote; |
||
1794 | *len -= wrote; |
||
1795 | |||
1796 | wrote = snprintf(ptr, *len, "\n"); |
||
1797 | break; |
||
1798 | default: |
||
1799 | wrote = 0; |
||
1800 | break; |
||
1801 | } |
||
1802 | ptr += wrote; |
||
1803 | *len -= wrote; |
||
1804 | |||
1805 | /* opacity */ |
||
1806 | val = css_computed_opacity(style, &len1); |
||
1807 | switch (val) { |
||
1808 | case CSS_OPACITY_INHERIT: |
||
1809 | wrote = snprintf(ptr, *len, "opacity: inherit\n"); |
||
1810 | break; |
||
1811 | case CSS_OPACITY_SET: |
||
1812 | wrote = snprintf(ptr, *len, "opacity: "); |
||
1813 | ptr += wrote; |
||
1814 | *len -= wrote; |
||
1815 | |||
1816 | wrote = dump_css_fixed(len1, ptr, *len); |
||
1817 | ptr += wrote; |
||
1818 | *len -= wrote; |
||
1819 | |||
1820 | wrote = snprintf(ptr, *len, "\n"); |
||
1821 | break; |
||
1822 | default: |
||
1823 | wrote = 0; |
||
1824 | break; |
||
1825 | } |
||
1826 | ptr += wrote; |
||
1827 | *len -= wrote; |
||
1828 | |||
1829 | /* outline-color */ |
||
1830 | val = css_computed_outline_color(style, &color); |
||
1831 | switch (val) { |
||
1832 | case CSS_OUTLINE_COLOR_INHERIT: |
||
1833 | wrote = snprintf(ptr, *len, "outline-color: inherit\n"); |
||
1834 | break; |
||
1835 | case CSS_OUTLINE_COLOR_INVERT: |
||
1836 | wrote = snprintf(ptr, *len, "outline-color: invert\n"); |
||
1837 | break; |
||
1838 | case CSS_OUTLINE_COLOR_COLOR: |
||
1839 | wrote = snprintf(ptr, *len, "outline-color: #%08x\n", color); |
||
1840 | break; |
||
1841 | default: |
||
1842 | wrote = 0; |
||
1843 | break; |
||
1844 | } |
||
1845 | ptr += wrote; |
||
1846 | *len -= wrote; |
||
1847 | |||
1848 | /* outline-style */ |
||
1849 | val = css_computed_outline_style(style); |
||
1850 | switch (val) { |
||
1851 | case CSS_OUTLINE_STYLE_INHERIT: |
||
1852 | wrote = snprintf(ptr, *len, "outline-style: inherit\n"); |
||
1853 | break; |
||
1854 | case CSS_OUTLINE_STYLE_NONE: |
||
1855 | wrote = snprintf(ptr, *len, "outline-style: none\n"); |
||
1856 | break; |
||
1857 | case CSS_OUTLINE_STYLE_DOTTED: |
||
1858 | wrote = snprintf(ptr, *len, "outline-style: dotted\n"); |
||
1859 | break; |
||
1860 | case CSS_OUTLINE_STYLE_DASHED: |
||
1861 | wrote = snprintf(ptr, *len, "outline-style: dashed\n"); |
||
1862 | break; |
||
1863 | case CSS_OUTLINE_STYLE_SOLID: |
||
1864 | wrote = snprintf(ptr, *len, "outline-style: solid\n"); |
||
1865 | break; |
||
1866 | case CSS_OUTLINE_STYLE_DOUBLE: |
||
1867 | wrote = snprintf(ptr, *len, "outline-style: double\n"); |
||
1868 | break; |
||
1869 | case CSS_OUTLINE_STYLE_GROOVE: |
||
1870 | wrote = snprintf(ptr, *len, "outline-style: groove\n"); |
||
1871 | break; |
||
1872 | case CSS_OUTLINE_STYLE_RIDGE: |
||
1873 | wrote = snprintf(ptr, *len, "outline-style: ridge\n"); |
||
1874 | break; |
||
1875 | case CSS_OUTLINE_STYLE_INSET: |
||
1876 | wrote = snprintf(ptr, *len, "outline-style: inset\n"); |
||
1877 | break; |
||
1878 | case CSS_OUTLINE_STYLE_OUTSET: |
||
1879 | wrote = snprintf(ptr, *len, "outline-style: outset\n"); |
||
1880 | break; |
||
1881 | default: |
||
1882 | wrote = 0; |
||
1883 | break; |
||
1884 | } |
||
1885 | ptr += wrote; |
||
1886 | *len -= wrote; |
||
1887 | |||
1888 | /* outline-width */ |
||
1889 | val = css_computed_outline_width(style, &len1, &unit1); |
||
1890 | switch (val) { |
||
1891 | case CSS_OUTLINE_WIDTH_INHERIT: |
||
1892 | wrote = snprintf(ptr, *len, "outline-width: inherit\n"); |
||
1893 | break; |
||
1894 | case CSS_OUTLINE_WIDTH_THIN: |
||
1895 | wrote = snprintf(ptr, *len, "outline-width: thin\n"); |
||
1896 | break; |
||
1897 | case CSS_OUTLINE_WIDTH_MEDIUM: |
||
1898 | wrote = snprintf(ptr, *len, "outline-width: medium\n"); |
||
1899 | break; |
||
1900 | case CSS_OUTLINE_WIDTH_THICK: |
||
1901 | wrote = snprintf(ptr, *len, "outline-width: thick\n"); |
||
1902 | break; |
||
1903 | case CSS_OUTLINE_WIDTH_WIDTH: |
||
1904 | wrote = snprintf(ptr, *len, "outline-width: "); |
||
1905 | ptr += wrote; |
||
1906 | *len -= wrote; |
||
1907 | |||
1908 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1909 | ptr += wrote; |
||
1910 | *len -= wrote; |
||
1911 | |||
1912 | wrote = snprintf(ptr, *len, "\n"); |
||
1913 | break; |
||
1914 | default: |
||
1915 | wrote = 0; |
||
1916 | break; |
||
1917 | } |
||
1918 | ptr += wrote; |
||
1919 | *len -= wrote; |
||
1920 | |||
1921 | /* overflow */ |
||
1922 | val = css_computed_overflow(style); |
||
1923 | switch (val) { |
||
1924 | case CSS_OVERFLOW_INHERIT: |
||
1925 | wrote = snprintf(ptr, *len, "overflow: inherit\n"); |
||
1926 | break; |
||
1927 | case CSS_OVERFLOW_VISIBLE: |
||
1928 | wrote = snprintf(ptr, *len, "overflow: visible\n"); |
||
1929 | break; |
||
1930 | case CSS_OVERFLOW_HIDDEN: |
||
1931 | wrote = snprintf(ptr, *len, "overflow: hidden\n"); |
||
1932 | break; |
||
1933 | case CSS_OVERFLOW_SCROLL: |
||
1934 | wrote = snprintf(ptr, *len, "overflow: scroll\n"); |
||
1935 | break; |
||
1936 | case CSS_OVERFLOW_AUTO: |
||
1937 | wrote = snprintf(ptr, *len, "overflow: auto\n"); |
||
1938 | break; |
||
1939 | default: |
||
1940 | wrote = 0; |
||
1941 | break; |
||
1942 | } |
||
1943 | ptr += wrote; |
||
1944 | *len -= wrote; |
||
1945 | |||
1946 | /* padding-top */ |
||
1947 | val = css_computed_padding_top(style, &len1, &unit1); |
||
1948 | switch (val) { |
||
1949 | case CSS_PADDING_INHERIT: |
||
1950 | wrote = snprintf(ptr, *len, "padding-top: inherit\n"); |
||
1951 | break; |
||
1952 | case CSS_PADDING_SET: |
||
1953 | wrote = snprintf(ptr, *len, "padding-top: "); |
||
1954 | ptr += wrote; |
||
1955 | *len -= wrote; |
||
1956 | |||
1957 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1958 | ptr += wrote; |
||
1959 | *len -= wrote; |
||
1960 | |||
1961 | wrote = snprintf(ptr, *len, "\n"); |
||
1962 | break; |
||
1963 | default: |
||
1964 | wrote = 0; |
||
1965 | break; |
||
1966 | } |
||
1967 | ptr += wrote; |
||
1968 | *len -= wrote; |
||
1969 | |||
1970 | /* padding-right */ |
||
1971 | val = css_computed_padding_right(style, &len1, &unit1); |
||
1972 | switch (val) { |
||
1973 | case CSS_PADDING_INHERIT: |
||
1974 | wrote = snprintf(ptr, *len, "padding-right: inherit\n"); |
||
1975 | break; |
||
1976 | case CSS_PADDING_SET: |
||
1977 | wrote = snprintf(ptr, *len, "padding-right: "); |
||
1978 | ptr += wrote; |
||
1979 | *len -= wrote; |
||
1980 | |||
1981 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
1982 | ptr += wrote; |
||
1983 | *len -= wrote; |
||
1984 | |||
1985 | wrote = snprintf(ptr, *len, "\n"); |
||
1986 | break; |
||
1987 | default: |
||
1988 | wrote = 0; |
||
1989 | break; |
||
1990 | } |
||
1991 | ptr += wrote; |
||
1992 | *len -= wrote; |
||
1993 | |||
1994 | /* padding-bottom */ |
||
1995 | val = css_computed_padding_bottom(style, &len1, &unit1); |
||
1996 | switch (val) { |
||
1997 | case CSS_PADDING_INHERIT: |
||
1998 | wrote = snprintf(ptr, *len, "padding-bottom: inherit\n"); |
||
1999 | break; |
||
2000 | case CSS_PADDING_SET: |
||
2001 | wrote = snprintf(ptr, *len, "padding-bottom: "); |
||
2002 | ptr += wrote; |
||
2003 | *len -= wrote; |
||
2004 | |||
2005 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
2006 | ptr += wrote; |
||
2007 | *len -= wrote; |
||
2008 | |||
2009 | wrote = snprintf(ptr, *len, "\n"); |
||
2010 | break; |
||
2011 | default: |
||
2012 | wrote = 0; |
||
2013 | break; |
||
2014 | } |
||
2015 | ptr += wrote; |
||
2016 | *len -= wrote; |
||
2017 | |||
2018 | /* padding-left */ |
||
2019 | val = css_computed_padding_left(style, &len1, &unit1); |
||
2020 | switch (val) { |
||
2021 | case CSS_PADDING_INHERIT: |
||
2022 | wrote = snprintf(ptr, *len, "padding-left: inherit\n"); |
||
2023 | break; |
||
2024 | case CSS_PADDING_SET: |
||
2025 | wrote = snprintf(ptr, *len, "padding-left: "); |
||
2026 | ptr += wrote; |
||
2027 | *len -= wrote; |
||
2028 | |||
2029 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
2030 | ptr += wrote; |
||
2031 | *len -= wrote; |
||
2032 | |||
2033 | wrote = snprintf(ptr, *len, "\n"); |
||
2034 | break; |
||
2035 | default: |
||
2036 | wrote = 0; |
||
2037 | break; |
||
2038 | } |
||
2039 | ptr += wrote; |
||
2040 | *len -= wrote; |
||
2041 | |||
2042 | /* position */ |
||
2043 | val = css_computed_position(style); |
||
2044 | switch (val) { |
||
2045 | case CSS_POSITION_INHERIT: |
||
2046 | wrote = snprintf(ptr, *len, "position: inherit\n"); |
||
2047 | break; |
||
2048 | case CSS_POSITION_STATIC: |
||
2049 | wrote = snprintf(ptr, *len, "position: static\n"); |
||
2050 | break; |
||
2051 | case CSS_POSITION_RELATIVE: |
||
2052 | wrote = snprintf(ptr, *len, "position: relative\n"); |
||
2053 | break; |
||
2054 | case CSS_POSITION_ABSOLUTE: |
||
2055 | wrote = snprintf(ptr, *len, "position: absolute\n"); |
||
2056 | break; |
||
2057 | case CSS_POSITION_FIXED: |
||
2058 | wrote = snprintf(ptr, *len, "position: fixed\n"); |
||
2059 | break; |
||
2060 | default: |
||
2061 | wrote = 0; |
||
2062 | break; |
||
2063 | } |
||
2064 | ptr += wrote; |
||
2065 | *len -= wrote; |
||
2066 | |||
2067 | /* quotes */ |
||
2068 | val = css_computed_quotes(style, &string_list); |
||
2069 | if (val == CSS_QUOTES_STRING && string_list != NULL) { |
||
2070 | wrote = snprintf(ptr, *len, "quotes:"); |
||
2071 | ptr += wrote; |
||
2072 | *len -= wrote; |
||
2073 | |||
2074 | while (*string_list != NULL) { |
||
2075 | wrote = snprintf(ptr, *len, " \"%.*s\"", |
||
2076 | (int) lwc_string_length(*string_list), |
||
2077 | lwc_string_data(*string_list)); |
||
2078 | ptr += wrote; |
||
2079 | *len -= wrote; |
||
2080 | |||
2081 | string_list++; |
||
2082 | } |
||
2083 | |||
2084 | wrote = snprintf(ptr, *len, "\n"); |
||
2085 | } else { |
||
2086 | switch (val) { |
||
2087 | case CSS_QUOTES_INHERIT: |
||
2088 | wrote = snprintf(ptr, *len, "quotes: inherit\n"); |
||
2089 | break; |
||
2090 | case CSS_QUOTES_NONE: |
||
2091 | wrote = snprintf(ptr, *len, "quotes: none\n"); |
||
2092 | break; |
||
2093 | default: |
||
2094 | wrote = 0; |
||
2095 | break; |
||
2096 | } |
||
2097 | } |
||
2098 | ptr += wrote; |
||
2099 | *len -= wrote; |
||
2100 | |||
2101 | /* right */ |
||
2102 | val = css_computed_right(style, &len1, &unit1); |
||
2103 | switch (val) { |
||
2104 | case CSS_RIGHT_INHERIT: |
||
2105 | wrote = snprintf(ptr, *len, "right: inherit\n"); |
||
2106 | break; |
||
2107 | case CSS_RIGHT_AUTO: |
||
2108 | wrote = snprintf(ptr, *len, "right: auto\n"); |
||
2109 | break; |
||
2110 | case CSS_RIGHT_SET: |
||
2111 | wrote = snprintf(ptr, *len, "right: "); |
||
2112 | ptr += wrote; |
||
2113 | *len -= wrote; |
||
2114 | |||
2115 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
2116 | ptr += wrote; |
||
2117 | *len -= wrote; |
||
2118 | |||
2119 | wrote = snprintf(ptr, *len, "\n"); |
||
2120 | break; |
||
2121 | default: |
||
2122 | wrote = 0; |
||
2123 | break; |
||
2124 | } |
||
2125 | ptr += wrote; |
||
2126 | *len -= wrote; |
||
2127 | |||
2128 | /* table-layout */ |
||
2129 | val = css_computed_table_layout(style); |
||
2130 | switch (val) { |
||
2131 | case CSS_TABLE_LAYOUT_INHERIT: |
||
2132 | wrote = snprintf(ptr, *len, "table-layout: inherit\n"); |
||
2133 | break; |
||
2134 | case CSS_TABLE_LAYOUT_AUTO: |
||
2135 | wrote = snprintf(ptr, *len, "table-layout: auto\n"); |
||
2136 | break; |
||
2137 | case CSS_TABLE_LAYOUT_FIXED: |
||
2138 | wrote = snprintf(ptr, *len, "table-layout: fixed\n"); |
||
2139 | break; |
||
2140 | default: |
||
2141 | wrote = 0; |
||
2142 | break; |
||
2143 | } |
||
2144 | ptr += wrote; |
||
2145 | *len -= wrote; |
||
2146 | |||
2147 | /* text-align */ |
||
2148 | val = css_computed_text_align(style); |
||
2149 | switch (val) { |
||
2150 | case CSS_TEXT_ALIGN_INHERIT: |
||
2151 | wrote = snprintf(ptr, *len, "text-align: inherit\n"); |
||
2152 | break; |
||
2153 | case CSS_TEXT_ALIGN_LEFT: |
||
2154 | wrote = snprintf(ptr, *len, "text-align: left\n"); |
||
2155 | break; |
||
2156 | case CSS_TEXT_ALIGN_RIGHT: |
||
2157 | wrote = snprintf(ptr, *len, "text-align: right\n"); |
||
2158 | break; |
||
2159 | case CSS_TEXT_ALIGN_CENTER: |
||
2160 | wrote = snprintf(ptr, *len, "text-align: center\n"); |
||
2161 | break; |
||
2162 | case CSS_TEXT_ALIGN_JUSTIFY: |
||
2163 | wrote = snprintf(ptr, *len, "text-align: justify\n"); |
||
2164 | break; |
||
2165 | case CSS_TEXT_ALIGN_DEFAULT: |
||
2166 | wrote = snprintf(ptr, *len, "text-align: default\n"); |
||
2167 | break; |
||
2168 | case CSS_TEXT_ALIGN_LIBCSS_LEFT: |
||
2169 | wrote = snprintf(ptr, *len, "text-align: -libcss-left\n"); |
||
2170 | break; |
||
2171 | case CSS_TEXT_ALIGN_LIBCSS_CENTER: |
||
2172 | wrote = snprintf(ptr, *len, "text-align: -libcss-center\n"); |
||
2173 | break; |
||
2174 | case CSS_TEXT_ALIGN_LIBCSS_RIGHT: |
||
2175 | wrote = snprintf(ptr, *len, "text-align: -libcss-right\n"); |
||
2176 | break; |
||
2177 | default: |
||
2178 | wrote = 0; |
||
2179 | break; |
||
2180 | } |
||
2181 | ptr += wrote; |
||
2182 | *len -= wrote; |
||
2183 | |||
2184 | /* text-decoration */ |
||
2185 | val = css_computed_text_decoration(style); |
||
2186 | if (val == CSS_TEXT_DECORATION_INHERIT) { |
||
2187 | wrote = snprintf(ptr, *len, "text-decoration: inherit\n"); |
||
2188 | ptr += wrote; |
||
2189 | *len -= wrote; |
||
2190 | } else if (val == CSS_TEXT_DECORATION_NONE) { |
||
2191 | wrote = snprintf(ptr, *len, "text-decoration: none\n"); |
||
2192 | ptr += wrote; |
||
2193 | *len -= wrote; |
||
2194 | } else { |
||
2195 | wrote = snprintf(ptr, *len, "text-decoration:"); |
||
2196 | ptr += wrote; |
||
2197 | *len -= wrote; |
||
2198 | |||
2199 | if (val & CSS_TEXT_DECORATION_BLINK) { |
||
2200 | wrote = snprintf(ptr, *len, " blink"); |
||
2201 | ptr += wrote; |
||
2202 | *len -= wrote; |
||
2203 | } |
||
2204 | if (val & CSS_TEXT_DECORATION_LINE_THROUGH) { |
||
2205 | wrote = snprintf(ptr, *len, " line-through"); |
||
2206 | ptr += wrote; |
||
2207 | *len -= wrote; |
||
2208 | } |
||
2209 | if (val & CSS_TEXT_DECORATION_OVERLINE) { |
||
2210 | wrote = snprintf(ptr, *len, " overline"); |
||
2211 | ptr += wrote; |
||
2212 | *len -= wrote; |
||
2213 | } |
||
2214 | if (val & CSS_TEXT_DECORATION_UNDERLINE) { |
||
2215 | wrote = snprintf(ptr, *len, " underline"); |
||
2216 | ptr += wrote; |
||
2217 | *len -= wrote; |
||
2218 | } |
||
2219 | |||
2220 | wrote = snprintf(ptr, *len, "\n"); |
||
2221 | ptr += wrote; |
||
2222 | *len -= wrote; |
||
2223 | } |
||
2224 | |||
2225 | /* text-indent */ |
||
2226 | val = css_computed_text_indent(style, &len1, &unit1); |
||
2227 | switch (val) { |
||
2228 | case CSS_TEXT_INDENT_INHERIT: |
||
2229 | wrote = snprintf(ptr, *len, "text-indent: inherit\n"); |
||
2230 | break; |
||
2231 | case CSS_TEXT_INDENT_SET: |
||
2232 | wrote = snprintf(ptr, *len, "text-indent: "); |
||
2233 | ptr += wrote; |
||
2234 | *len -= wrote; |
||
2235 | |||
2236 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
2237 | ptr += wrote; |
||
2238 | *len -= wrote; |
||
2239 | |||
2240 | wrote = snprintf(ptr, *len, "\n"); |
||
2241 | break; |
||
2242 | default: |
||
2243 | wrote = 0; |
||
2244 | break; |
||
2245 | } |
||
2246 | ptr += wrote; |
||
2247 | *len -= wrote; |
||
2248 | |||
2249 | /* text-transform */ |
||
2250 | val = css_computed_text_transform(style); |
||
2251 | switch (val) { |
||
2252 | case CSS_TEXT_TRANSFORM_INHERIT: |
||
2253 | wrote = snprintf(ptr, *len, "text-transform: inherit\n"); |
||
2254 | break; |
||
2255 | case CSS_TEXT_TRANSFORM_CAPITALIZE: |
||
2256 | wrote = snprintf(ptr, *len, "text-transform: capitalize\n"); |
||
2257 | break; |
||
2258 | case CSS_TEXT_TRANSFORM_UPPERCASE: |
||
2259 | wrote = snprintf(ptr, *len, "text-transform: uppercase\n"); |
||
2260 | break; |
||
2261 | case CSS_TEXT_TRANSFORM_LOWERCASE: |
||
2262 | wrote = snprintf(ptr, *len, "text-transform: lowercase\n"); |
||
2263 | break; |
||
2264 | case CSS_TEXT_TRANSFORM_NONE: |
||
2265 | wrote = snprintf(ptr, *len, "text-transform: none\n"); |
||
2266 | break; |
||
2267 | default: |
||
2268 | wrote = 0; |
||
2269 | break; |
||
2270 | } |
||
2271 | ptr += wrote; |
||
2272 | *len -= wrote; |
||
2273 | |||
2274 | /* top */ |
||
2275 | val = css_computed_top(style, &len1, &unit1); |
||
2276 | switch (val) { |
||
2277 | case CSS_TOP_INHERIT: |
||
2278 | wrote = snprintf(ptr, *len, "top: inherit\n"); |
||
2279 | break; |
||
2280 | case CSS_TOP_AUTO: |
||
2281 | wrote = snprintf(ptr, *len, "top: auto\n"); |
||
2282 | break; |
||
2283 | case CSS_TOP_SET: |
||
2284 | wrote = snprintf(ptr, *len, "top: "); |
||
2285 | ptr += wrote; |
||
2286 | *len -= wrote; |
||
2287 | |||
2288 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
2289 | ptr += wrote; |
||
2290 | *len -= wrote; |
||
2291 | |||
2292 | wrote = snprintf(ptr, *len, "\n"); |
||
2293 | break; |
||
2294 | default: |
||
2295 | wrote = 0; |
||
2296 | break; |
||
2297 | } |
||
2298 | ptr += wrote; |
||
2299 | *len -= wrote; |
||
2300 | |||
2301 | /* unicode-bidi */ |
||
2302 | val = css_computed_unicode_bidi(style); |
||
2303 | switch (val) { |
||
2304 | case CSS_UNICODE_BIDI_INHERIT: |
||
2305 | wrote = snprintf(ptr, *len, "unicode-bidi: inherit\n"); |
||
2306 | break; |
||
2307 | case CSS_UNICODE_BIDI_NORMAL: |
||
2308 | wrote = snprintf(ptr, *len, "unicode-bidi: normal\n"); |
||
2309 | break; |
||
2310 | case CSS_UNICODE_BIDI_EMBED: |
||
2311 | wrote = snprintf(ptr, *len, "unicode-bidi: embed\n"); |
||
2312 | break; |
||
2313 | case CSS_UNICODE_BIDI_BIDI_OVERRIDE: |
||
2314 | wrote = snprintf(ptr, *len, "unicode-bidi: bidi-override\n"); |
||
2315 | break; |
||
2316 | default: |
||
2317 | wrote = 0; |
||
2318 | break; |
||
2319 | } |
||
2320 | ptr += wrote; |
||
2321 | *len -= wrote; |
||
2322 | |||
2323 | /* vertical-align */ |
||
2324 | val = css_computed_vertical_align(style, &len1, &unit1); |
||
2325 | switch (val) { |
||
2326 | case CSS_VERTICAL_ALIGN_INHERIT: |
||
2327 | wrote = snprintf(ptr, *len, "vertical-align: inherit\n"); |
||
2328 | break; |
||
2329 | case CSS_VERTICAL_ALIGN_BASELINE: |
||
2330 | wrote = snprintf(ptr, *len, "vertical-align: baseline\n"); |
||
2331 | break; |
||
2332 | case CSS_VERTICAL_ALIGN_SUB: |
||
2333 | wrote = snprintf(ptr, *len, "vertical-align: sub\n"); |
||
2334 | break; |
||
2335 | case CSS_VERTICAL_ALIGN_SUPER: |
||
2336 | wrote = snprintf(ptr, *len, "vertical-align: super\n"); |
||
2337 | break; |
||
2338 | case CSS_VERTICAL_ALIGN_TOP: |
||
2339 | wrote = snprintf(ptr, *len, "vertical-align: top\n"); |
||
2340 | break; |
||
2341 | case CSS_VERTICAL_ALIGN_TEXT_TOP: |
||
2342 | wrote = snprintf(ptr, *len, "vertical-align: text-top\n"); |
||
2343 | break; |
||
2344 | case CSS_VERTICAL_ALIGN_MIDDLE: |
||
2345 | wrote = snprintf(ptr, *len, "vertical-align: middle\n"); |
||
2346 | break; |
||
2347 | case CSS_VERTICAL_ALIGN_BOTTOM: |
||
2348 | wrote = snprintf(ptr, *len, "vertical-align: bottom\n"); |
||
2349 | break; |
||
2350 | case CSS_VERTICAL_ALIGN_TEXT_BOTTOM: |
||
2351 | wrote = snprintf(ptr, *len, "vertical-align: text-bottom\n"); |
||
2352 | break; |
||
2353 | case CSS_VERTICAL_ALIGN_SET: |
||
2354 | wrote = snprintf(ptr, *len, "vertical-align: "); |
||
2355 | ptr += wrote; |
||
2356 | *len -= wrote; |
||
2357 | |||
2358 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
2359 | ptr += wrote; |
||
2360 | *len -= wrote; |
||
2361 | |||
2362 | wrote = snprintf(ptr, *len, "\n"); |
||
2363 | break; |
||
2364 | default: |
||
2365 | wrote = 0; |
||
2366 | break; |
||
2367 | } |
||
2368 | ptr += wrote; |
||
2369 | *len -= wrote; |
||
2370 | |||
2371 | /* visibility */ |
||
2372 | val = css_computed_visibility(style); |
||
2373 | switch (val) { |
||
2374 | case CSS_VISIBILITY_INHERIT: |
||
2375 | wrote = snprintf(ptr, *len, "visibility: inherit\n"); |
||
2376 | break; |
||
2377 | case CSS_VISIBILITY_VISIBLE: |
||
2378 | wrote = snprintf(ptr, *len, "visibility: visible\n"); |
||
2379 | break; |
||
2380 | case CSS_VISIBILITY_HIDDEN: |
||
2381 | wrote = snprintf(ptr, *len, "visibility: hidden\n"); |
||
2382 | break; |
||
2383 | case CSS_VISIBILITY_COLLAPSE: |
||
2384 | wrote = snprintf(ptr, *len, "visibility: collapse\n"); |
||
2385 | break; |
||
2386 | default: |
||
2387 | wrote = 0; |
||
2388 | break; |
||
2389 | } |
||
2390 | ptr += wrote; |
||
2391 | *len -= wrote; |
||
2392 | |||
2393 | /* white-space */ |
||
2394 | val = css_computed_white_space(style); |
||
2395 | switch (val) { |
||
2396 | case CSS_WHITE_SPACE_INHERIT: |
||
2397 | wrote = snprintf(ptr, *len, "white-space: inherit\n"); |
||
2398 | break; |
||
2399 | case CSS_WHITE_SPACE_NORMAL: |
||
2400 | wrote = snprintf(ptr, *len, "white-space: normal\n"); |
||
2401 | break; |
||
2402 | case CSS_WHITE_SPACE_PRE: |
||
2403 | wrote = snprintf(ptr, *len, "white-space: pre\n"); |
||
2404 | break; |
||
2405 | case CSS_WHITE_SPACE_NOWRAP: |
||
2406 | wrote = snprintf(ptr, *len, "white-space: nowrap\n"); |
||
2407 | break; |
||
2408 | case CSS_WHITE_SPACE_PRE_WRAP: |
||
2409 | wrote = snprintf(ptr, *len, "white-space: pre-wrap\n"); |
||
2410 | break; |
||
2411 | case CSS_WHITE_SPACE_PRE_LINE: |
||
2412 | wrote = snprintf(ptr, *len, "white-space: pre-line\n"); |
||
2413 | break; |
||
2414 | default: |
||
2415 | wrote = 0; |
||
2416 | break; |
||
2417 | } |
||
2418 | ptr += wrote; |
||
2419 | *len -= wrote; |
||
2420 | |||
2421 | /* width */ |
||
2422 | val = css_computed_width(style, &len1, &unit1); |
||
2423 | switch (val) { |
||
2424 | case CSS_WIDTH_INHERIT: |
||
2425 | wrote = snprintf(ptr, *len, "width: inherit\n"); |
||
2426 | break; |
||
2427 | case CSS_WIDTH_AUTO: |
||
2428 | wrote = snprintf(ptr, *len, "width: auto\n"); |
||
2429 | break; |
||
2430 | case CSS_WIDTH_SET: |
||
2431 | wrote = snprintf(ptr, *len, "width: "); |
||
2432 | ptr += wrote; |
||
2433 | *len -= wrote; |
||
2434 | |||
2435 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
2436 | ptr += wrote; |
||
2437 | *len -= wrote; |
||
2438 | |||
2439 | wrote = snprintf(ptr, *len, "\n"); |
||
2440 | break; |
||
2441 | default: |
||
2442 | wrote = 0; |
||
2443 | break; |
||
2444 | } |
||
2445 | ptr += wrote; |
||
2446 | *len -= wrote; |
||
2447 | |||
2448 | /* word-spacing */ |
||
2449 | val = css_computed_word_spacing(style, &len1, &unit1); |
||
2450 | switch (val) { |
||
2451 | case CSS_WORD_SPACING_INHERIT: |
||
2452 | wrote = snprintf(ptr, *len, "word-spacing: inherit\n"); |
||
2453 | break; |
||
2454 | case CSS_WORD_SPACING_NORMAL: |
||
2455 | wrote = snprintf(ptr, *len, "word-spacing: normal\n"); |
||
2456 | break; |
||
2457 | case CSS_WORD_SPACING_SET: |
||
2458 | wrote = snprintf(ptr, *len, "word-spacing: "); |
||
2459 | ptr += wrote; |
||
2460 | *len -= wrote; |
||
2461 | |||
2462 | wrote = dump_css_unit(len1, unit1, ptr, *len); |
||
2463 | ptr += wrote; |
||
2464 | *len -= wrote; |
||
2465 | |||
2466 | wrote = snprintf(ptr, *len, "\n"); |
||
2467 | break; |
||
2468 | default: |
||
2469 | wrote = 0; |
||
2470 | break; |
||
2471 | } |
||
2472 | ptr += wrote; |
||
2473 | *len -= wrote; |
||
2474 | |||
2475 | /* z-index */ |
||
2476 | val = css_computed_z_index(style, &zindex); |
||
2477 | switch (val) { |
||
2478 | case CSS_Z_INDEX_INHERIT: |
||
2479 | wrote = snprintf(ptr, *len, "z-index: inherit\n"); |
||
2480 | break; |
||
2481 | case CSS_Z_INDEX_AUTO: |
||
2482 | wrote = snprintf(ptr, *len, "z-index: auto\n"); |
||
2483 | break; |
||
2484 | case CSS_Z_INDEX_SET: |
||
2485 | wrote = snprintf(ptr, *len, "z-index: %d\n", zindex); |
||
2486 | break; |
||
2487 | default: |
||
2488 | wrote = 0; |
||
2489 | break; |
||
2490 | } |
||
2491 | ptr += wrote; |
||
2492 | *len -= wrote; |
||
2493 | }>>>>><>> |
||
2494 |