along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
-#define PF_MOVE 0x01
-#define PF_CHAR 0x02
-#define PF_MATRIX 0x04
-#define PF_CXFORM 0x08
-#define PF_RATIO 0x10
-#define PF_NAME 0x20
-#define PF_CLIPDEPTH 0x40
-#define PF_ACTIONEVENT 0x80
-
-#define PF2_FILTERS 0x01
-#define PF2_BLENDMODE 0x02
-#define PF2_ASBITMAP 0x04
-//...
+#include "../rfxswf.h"
+
char*blendModeNames[] = {"normal","normal2","layer","multiply",
"screen","lighten", "darken","add",
return 0;
}
-static int objectplace(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,U8 * name, U16 clipaction, U8 blendmode, FILTERLIST*filters)
+static int objectplace(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,const char * name, U16 clipaction, U8 blendmode, FILTERLIST*filters)
{ U8 flags,flags2;
if (!t) return -1;
swf_SetU8(t,blendmode);
return 0;
}
-int swf_ObjectPlace(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,U8 * name)
+int swf_ObjectPlace(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,const char * name)
{
return objectplace(t,id,depth,m,cx,name,0,0,0);
}
-int swf_ObjectPlaceClip(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,U8 * name, U16 clipaction)
+int swf_ObjectPlaceClip(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,const char * name, U16 clipaction)
{
return objectplace(t,id,depth,m,cx,name,clipaction,0,0);
}
-int swf_ObjectPlaceBlend(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,U8 * name, U8 blend)
+int swf_ObjectPlaceBlend(TAG * t,U16 id,U16 depth,MATRIX * m,CXFORM * cx,const char * name, U8 blend)
{
if(t->id != ST_PLACEOBJECT3)
fprintf(stderr, "wrong tag- ignoring blend mode\n");
flags2 = (0?PF2_ASBITMAP:0)|(obj->blendmode?PF2_BLENDMODE:0)|(obj->filters?PF2_FILTERS:0);
swf_SetU8(t,flags);
- if(t->id == ST_PLACEOBJECT2)
+ if(t->id == ST_PLACEOBJECT3)
swf_SetU8(t,flags2);
swf_SetU16(t,obj->depth);
if (flags&PF_CHAR) swf_SetU16(t,obj->id);
if (flags&PF_NAME) swf_SetString(t,obj->name);
if (flags2&PF2_FILTERS) {
- // ...
+ swf_SetU8(t,obj->filters->num);
+ int s;
+ for(s=0;s<obj->filters->num;s++)
+ swf_SetFilter(t,obj->filters->filter[s]);
}
if (flags2&PF2_BLENDMODE)
swf_SetU8(t,obj->blendmode);
void swf_GetPlaceObject(TAG * tag,SWFPLACEOBJECT* obj)
{
- if(!tag) {
+ if(obj)
memset(obj, 0, sizeof(SWFPLACEOBJECT));
+
+ if(!tag) {
swf_GetMatrix(0, &obj->matrix);
swf_GetCXForm(0, &obj->cxform, 1);
//obj->internal = PF_CHAR|PF_MATRIX|PF_CXFORM;
int l,t;
U8*data;
swf_ResetReadBits(tag);
- l = strlen(&tag->data[tag->pos]);
+ l = strlen((const char *)&tag->data[tag->pos]);
t = 0;
- data = rfx_alloc(l+1);
- obj->name = data;
+ data = (U8*)rfx_alloc(l+1);
+ obj->name = (char*)data;
while((data[t++] = swf_GetU8(tag)));
}
if(flags2&PF2_BLENDMODE) {