2 #include <stdlib.h> // calloc
4 #include "swf_fill_style_array.h"
5 #include "swf_tag_shape.h"
8 swf_fill_style_array_parse(bitstream_t *bs,
9 swf_fill_style_array_t *fill_style_array,
13 swf_tag_shape_detail_t *swf_tag_shape = (swf_tag_shape_detail_t *) tag->detail;
15 fill_style_array->count = bitstream_getbyte(bs);
17 if (swf_tag_shape->_parse_condition == SWF_TAG_SHAPE_PARSE_CONDITION_BITMAP) {
18 if (fill_style_array->count == 0) {
23 if ((tag->code != 2) && // ! DefineShape
24 (fill_style_array->count == 255)) {
25 fill_style_array->count = bitstream_getbytesLE(bs, 2);
27 fill_style_array->fill_style = calloc(fill_style_array->count, sizeof(swf_fill_style_t));
28 for (i = 0 ; i < fill_style_array->count ; i++) {
29 result = swf_fill_style_parse(bs, &(fill_style_array->fill_style[i]), tag);
31 fprintf(stderr, "swf_fill_style_array_parse: swf_fill_style_parse failed i=%d\n", i);
32 fill_style_array->count = i;
40 swf_fill_style_array_build(bitstream_t *bs,
41 swf_fill_style_array_t *fill_style_array,
45 if ((tag->code == 2) || // DefineShape
46 ((tag->code > 2) && (fill_style_array->count < 255))) {
47 bitstream_putbyte(bs, fill_style_array->count);
49 bitstream_putbyte(bs, 255);
50 bitstream_putbytesLE(bs, fill_style_array->count, 2);
52 for (i = 0 ; i < fill_style_array->count ; i++) {
53 ret = swf_fill_style_build(bs, &(fill_style_array->fill_style[i]), tag);
55 fprintf(stderr, "swf_fill_style_array_build: swf_fill_style_build failed i=%d/count=%d\n", i, fill_style_array->count);
63 swf_fill_style_array_print(swf_fill_style_array_t *fill_style_array,
64 int indent_depth, swf_tag_t *tag) {
66 print_indent(indent_depth);
67 printf("fill_style_array->count=%u\n", fill_style_array->count);
68 for (i = 0 ; i < fill_style_array->count ; i++) {
69 print_indent(indent_depth);
71 swf_fill_style_print(&(fill_style_array->fill_style[i]),
72 indent_depth + 1, tag);
78 swf_fill_style_array_delete(swf_fill_style_array_t *fill_style_array) {
80 for (i = 0 ; i < fill_style_array->count ; i++) {
81 swf_fill_style_delete(&(fill_style_array->fill_style[i]));
83 free(fill_style_array->fill_style);