+void swf_RecodeShapeData(U8*data, int bitlen, int in_bits_fill, int in_bits_line,
+ U8**destdata, U32*destbitlen, int out_bits_fill, int out_bits_line)
+{
+ SHAPE2 s2;
+ SHAPE s;
+ SHAPELINE*line;
+ memset(&s2, 0, sizeof(s2));
+ s2.lines = swf_ParseShapeData(data, bitlen, in_bits_fill, in_bits_line);
+ s2.numfillstyles = out_bits_fill?1<<(out_bits_fill-1):0;
+ s2.numlinestyles = out_bits_line?1<<(out_bits_line-1):0;
+ s2.fillstyles = rfx_calloc(sizeof(FILLSTYLE)*s2.numfillstyles);
+ s2.linestyles = rfx_calloc(sizeof(LINESTYLE)*s2.numlinestyles);
+
+ line = s2.lines;
+ while(line) {
+ if(line->fillstyle0 > s2.numfillstyles) line->fillstyle0 = 0;
+ if(line->fillstyle1 > s2.numfillstyles) line->fillstyle1 = 0;
+ if(line->linestyle > s2.numlinestyles) line->linestyle = 0;
+ line = line->next;
+ }
+
+ swf_Shape2ToShape(&s2,&s);
+
+ free(s2.fillstyles);
+ free(s2.linestyles);
+ free(s.fillstyle.data);
+ free(s.linestyle.data);
+ *destdata = s.data;
+ *destbitlen = s.bitlen;
+}
+