-int ObjectMove(TAG * t,U16 depth,MATRIX * m,CXFORM * cx)
-{ return ObjectPlace(t,0,depth,m,cx,NULL);
+int swf_ObjectMove(TAG * t,U16 depth,MATRIX * m,CXFORM * cx)
+{ return swf_ObjectPlace(t,0,depth,m,cx,NULL);
+}
+
+void swf_SetPlaceObject(TAG * t,SWFPLACEOBJECT* obj)
+{
+ U8 flags;
+ if (!t) return ;
+ if(t->id == ST_PLACEOBJECT) {
+ swf_SetU16(t, obj->id);
+ swf_SetU16(t, obj->depth);
+ swf_SetMatrix(t, &obj->matrix);
+ swf_SetCXForm(t, &obj->cxform, 0);
+ } else {
+ int m = !isUnitMatrix(&obj->matrix);
+ int cx = !isUnitCXForm(&obj->cxform);
+
+ flags = (obj->id?PF_CHAR:0)|(m?PF_MATRIX:0)|(cx?PF_CXFORM:0)|(obj->ratio?PF_RATIO:0)|
+ (obj->name?PF_NAME:0)|(obj->move?PF_MOVE:0)|
+ (obj->clipdepth?PF_CLIPACTION:0);
+
+ swf_SetU8(t,flags);
+ swf_SetU16(t,obj->depth);
+ if (flags&PF_CHAR) swf_SetU16(t,obj->id);
+ if (flags&PF_MATRIX) swf_SetMatrix(t,&obj->matrix);
+ if (flags&PF_CXFORM) swf_SetCXForm(t,&obj->cxform,1);
+ if (flags&PF_RATIO) swf_SetU16(t,obj->ratio);
+
+ /* ??? The spec states that name comes first? */
+ if (flags&PF_CLIPACTION) swf_SetU16(t,obj->clipdepth);
+ if (flags&PF_NAME) swf_SetString(t,obj->name);
+ if (flags&PF_ACTIONEVENT) {
+ // ...
+ }
+ }