OSDN Git Service

add bitmap_id parameter into apply factor method.
[swfed/swfed.git] / src / swf_fill_style_solid.c
1 #include <stdio.h>
2 #include "bitstream.h"
3 #include "swf_fill_style_solid.h"
4
5 int
6 swf_fill_style_solid_parse(bitstream_t *bs,
7                            swf_fill_style_solid_t *fill_style_solid,
8                            swf_tag_t *tag) {
9     if (tag->code == 46 || tag->code == 84) { // DefineMorphShape, DefineMorphShape2
10         swf_rgba_parse(bs, &(fill_style_solid->rgba));
11         swf_rgba_parse(bs, &(fill_style_solid->rgba_morph));
12     } else if (tag->code == 32) { // DefineShape3
13         swf_rgba_parse(bs, &(fill_style_solid->rgba));
14     } else {
15         swf_rgb_parse(bs, &(fill_style_solid->rgb));
16     }
17     return 0;
18 }
19
20 int
21 swf_fill_style_solid_build(bitstream_t *bs,
22                            swf_fill_style_solid_t *fill_style_solid,
23                            swf_tag_t *tag) {
24     if (tag->code == 46 || tag->code == 84) { // DefineMorphShape, DefineMorphShape2
25         swf_rgba_build(bs, &(fill_style_solid->rgba));
26         swf_rgba_build(bs, &(fill_style_solid->rgba_morph));
27     } else if (tag->code == 32) { // DefineShape3
28         swf_rgba_build(bs, &(fill_style_solid->rgba));
29     } else {
30         swf_rgb_build(bs, &(fill_style_solid->rgb));
31     }
32     return 0;
33 }
34
35 int
36 swf_fill_style_solid_print(swf_fill_style_solid_t *fill_style_solid,
37                            int indent_depth, swf_tag_t *tag
38 ) {
39     print_indent(indent_depth);
40     printf("fill_style_solid");
41     if (tag->code == 46 || tag->code == 84) { // DefineMorphShape, DefineMorphShape2
42         printf("  #%02x%02x%02x(%02x)  morph:#%02x%02x%02x(%02x)",
43                fill_style_solid->rgba.red,
44                fill_style_solid->rgba.green,
45                fill_style_solid->rgba.blue,
46                fill_style_solid->rgba.alpha,
47                fill_style_solid->rgba_morph.red,
48                fill_style_solid->rgba_morph.green,
49                fill_style_solid->rgba_morph.blue,
50                fill_style_solid->rgba_morph.alpha);
51     } else if (tag->code == 32) { // DefineShape3
52         printf("  #%02x%02x%02x(%02x)",
53                fill_style_solid->rgba.red,
54                fill_style_solid->rgba.green,
55                fill_style_solid->rgba.blue,
56                fill_style_solid->rgba.alpha);
57     } else {
58         printf("  #%02x%02x%02x",
59                fill_style_solid->rgb.red,
60                fill_style_solid->rgb.green,
61                fill_style_solid->rgb.blue);
62     }
63     printf("\n");
64     return 0;
65 }