+ if(!tag) {
+ memset(gradient, 0, sizeof(GRADIENT));
+ return;
+ }
+ U8 num = swf_GetU8(tag) & 15;
+ if(gradient) {
+ gradient->num = num;
+ gradient->rgba = (RGBA*)rfx_calloc(sizeof(RGBA)*gradient->num);
+ gradient->ratios = (U8*)rfx_calloc(sizeof(gradient->ratios[0])*gradient->num);
+ }
+ for(t=0;t<num;t++)
+ {
+ U8 ratio = swf_GetU8(tag);
+ RGBA color;
+ if(!alpha)
+ swf_GetRGB(tag, &color);
+ else
+ swf_GetRGBA(tag, &color);
+ if(gradient) {
+ gradient->ratios[t] = ratio;
+ gradient->rgba[t] = color;
+ }
+ }
+}
+
+void swf_SetGradient(TAG * tag, GRADIENT * gradient, char alpha)
+{
+ int t;
+ if(!tag) {
+ memset(gradient, 0, sizeof(GRADIENT));
+ return;
+ }
+ swf_SetU8(tag, gradient->num);
+ for(t=0; t<8 && t<gradient->num; t++)