if(center.x - radius < src->xmin)
src->xmin = center.x - radius;
if(center.x + radius > src->xmax)
- src->xmax = center.x - radius;
+ src->xmax = center.x + radius;
if(center.y - radius < src->ymin)
src->ymin = center.y - radius;
if(center.y + radius > src->ymax)
- src->ymax = center.y - radius;
+ src->ymax = center.y + radius;
}
SPOINT swf_TurnPoint(SPOINT p, MATRIX* m)
{
tag->next = level0;
tag->prev = level0->prev;
level0->prev = tag;
- tag->prev->next = tag;
+ if(tag->prev)
+ tag->prev->next = tag;
+ else
+ swf->firstTag = tag;
changes = 1;
}
}
#ifdef INSERT_RFX_TAG
- if (swf->firstTag && swf_NextTag(swf->firstTag))
- if (swf_GetTagID(swf_NextTag(swf->firstTag))!=ST_REFLEX)
+ if (swf->firstTag && swf->firstTag->next &&
+ (swf->firstTag->id != ST_REFLEX || swf->firstTag->next->id != ST_REFLEX)
+ ) {
swf_SetBlock(swf_InsertTagBefore(swf, swf->firstTag,ST_REFLEX),"rfx",3);
+ }
#endif // INSERT_RFX_TAG
return swf_WriteSWF(fileno(stdout),swf);
}
+SWF* swf_CopySWF(SWF*swf)
+{
+ SWF*nswf = rfx_alloc(sizeof(SWF));
+ memcpy(nswf, swf, sizeof(SWF));
+ nswf->firstTag = 0;
+ TAG*tag = swf->firstTag;
+ TAG*ntag = 0;
+ while(tag) {
+ ntag = swf_CopyTag(ntag, tag);
+ if(!nswf->firstTag)
+ nswf->firstTag = ntag;
+ tag = tag->next;
+ }
+ return nswf;
+}
+
void swf_FreeTags(SWF * swf) // Frees all malloc'ed memory for tags
{ TAG * t = swf->firstTag;
#include "modules/swfaction.c"
#include "modules/swfsound.c"
#include "modules/swfdraw.c"
+#include "modules/swfrender.c"