6 swf_rect_parse(bitstream_t *bs, swf_rect_t *rect) {
9 size = bitstream_getbits(bs, 5);
14 rect->x_min = bitstream_getbits_signed(bs, size);
15 rect->x_max = bitstream_getbits_signed(bs, size);
16 rect->y_min = bitstream_getbits_signed(bs, size);
17 rect->y_max = bitstream_getbits_signed(bs, size);
22 swf_rect_build(bitstream_t *bs, swf_rect_t *rect) {
23 register unsigned char size;
24 unsigned char x_min_bits = bitstream_need_bits_signed(rect->x_min);
25 unsigned char x_max_bits = bitstream_need_bits_signed(rect->x_max);
26 unsigned char y_min_bits = bitstream_need_bits_signed(rect->y_min);
27 unsigned char y_max_bits = bitstream_need_bits_signed(rect->y_max);
28 size = (x_min_bits>x_max_bits)?x_min_bits:x_max_bits;
29 size = (size>y_min_bits)?size:y_min_bits;
30 size = (size>y_max_bits)?size:y_max_bits;
33 bitstream_putbits(bs, size, 5);
34 bitstream_putbits_signed(bs, rect->x_min, size);
35 bitstream_putbits_signed(bs, rect->x_max, size);
36 bitstream_putbits_signed(bs, rect->y_min, size);
37 bitstream_putbits_signed(bs, rect->y_max, size);
42 swf_rect_print(swf_rect_t *rect, int indent_depth) {
43 print_indent(indent_depth);
44 printf("rect=(%d, %d)-(%d, %d) (f_size=%d)\n",
45 rect->x_min / SWF_TWIPS,
46 rect->y_min / SWF_TWIPS,
47 rect->x_max / SWF_TWIPS,
48 rect->y_max / SWF_TWIPS,
53 int swf_rect_apply_factor(swf_rect_t *rect,
54 double scale_x, double scale_y,
55 signed int trans_x, signed int trans_y) {
56 int size_x = rect->x_max - rect->x_min;
57 int size_y = rect->y_max - rect->y_min;
58 rect->x_max = rect->x_min + size_x * scale_x;
59 rect->y_max = rect->y_min + size_y * scale_y;
60 rect->x_min += trans_x * SWF_TWIPS;
61 rect->x_max += trans_x * SWF_TWIPS;
62 rect->y_min += trans_y * SWF_TWIPS;
63 rect->y_max += trans_y * SWF_TWIPS;