#define S64 long long
SFIXED RFXSWF_SP(SFIXED a1,SFIXED a2,SFIXED b1,SFIXED b2)
-{ S64 a;
- a = ((S64)a1*(S64)b1+(S64)a2*(S64)b2)>>16;
+{ S64 a = ((S64)a1*(S64)b1+(S64)a2*(S64)b2)>>16;
SFIXED result = (SFIXED)(a);
if(a!=result)
fprintf(stderr, "Warning: overflow in matrix multiplication");
while(tag)
{
+ int depth;
/* TODO * clip depths
* sprites
*/
- int depth = swf_GetDepth(tag);
+ if(tag->id == ST_PLACEOBJECT2) {
+ SWFPLACEOBJECT obj;
+ swf_GetPlaceObject(tag, &obj);
+ if(obj.clipdepth) {
+ int newdepth = obj.clipdepth+nr;
+ if(newdepth>65535) {
+ fprintf(stderr, "Couldn't relocate depths: too large values\n");
+ newdepth = 65535;
+ }
+ obj.clipdepth = newdepth;
+ swf_ResetTag(tag, ST_PLACEOBJECT2);
+ swf_SetPlaceObject(tag, &obj);
+ }
+ swf_PlaceObjectFree(&obj);
+ }
+
+ depth = swf_GetDepth(tag);
if(depth>=0) {
int newdepth = depth+nr;
if(newdepth>65535) {