3 #include "swf_cxform.h"
6 swf_cxform_parse(bitstream_t *bs, swf_cxform_t *cx) {
9 cx->has_add_terms = bitstream_getbit(bs);
10 cx->has_mult_terms = bitstream_getbit(bs);
11 nbits = bitstream_getbits(bs, 4);
13 if (cx->has_mult_terms) {
14 cx->red_mult_term = bitstream_getbits(bs, nbits);
15 cx->green_mult_term = bitstream_getbits(bs, nbits);
16 ret = bitstream_getbits(bs, nbits);
20 cx->blue_mult_term = ret;
22 if (cx->has_add_terms) {
23 cx->red_add_term = bitstream_getbits(bs, nbits);
24 cx->green_add_term = bitstream_getbits(bs, nbits);
25 ret = bitstream_getbits(bs, nbits);
29 cx->blue_add_term = ret;
35 swf_cxform_build(bitstream_t *bs, swf_cxform_t *cx) {
38 bitstream_putbit(bs, cx->has_add_terms);
39 bitstream_putbit(bs, cx->has_mult_terms);
41 bitstream_putbits(bs, nbits, 4);
42 if (cx->has_mult_terms) {
43 bitstream_putbits(bs, cx->red_mult_term, nbits);
44 bitstream_putbits(bs, cx->green_mult_term, nbits);
45 bitstream_putbits(bs, cx->blue_mult_term, nbits);
47 if (cx->has_add_terms) {
48 bitstream_putbits(bs, cx->red_add_term, nbits);
49 bitstream_putbits(bs, cx->green_add_term, nbits);
50 bitstream_putbits(bs, cx->blue_add_term, nbits);
56 swf_cxform_print(swf_cxform_t *cx, int indent_depth) {
57 print_indent(indent_depth);
59 if (cx->has_mult_terms) {
60 printf(" MultTerm:%02x%02x%02x",
61 cx->red_mult_term, cx->green_mult_term, cx->blue_mult_term);
63 if (cx->has_add_terms) {
64 printf(" AddTerm:%02x%02x%02x",
65 cx->red_add_term, cx->green_add_term, cx->blue_add_term);
67 if ((cx->has_add_terms == 0) && (cx->has_mult_terms == 0)) {
68 printf(" (no add_terms or mult_terms)");