int lastwasfill;
int shapeisempty;
char fill;
- int max_x;
- int max_y;
+ int min_x,max_x;
+ int min_y,max_y;
TAG* cliptags[128];
int clipshapes[128];
U32 clipdepths[128];
swf_SetRect(i->tag,&r);
MATRIX m;
- swf_GetMatrix(0, &m);
+ swf_GetMatrix(0, &m); /* set unit matrix- the real matrix is in the placeobject */
swf_SetMatrix(i->tag,&m);
putcharacters(obj, i->tag);
swf_PlaceObjectFree(&obj);
}
+ i->min_x = x1;
+ i->min_y = y1;
i->max_x = x2;
i->max_y = y2;
fixAreas(obj);
if(i->shapeisempty ||
+ /*bbox empty?*/
(i->bboxrect.xmin == i->bboxrect.xmax &&
- i->bboxrect.ymin == i->bboxrect.ymax))
+ i->bboxrect.ymin == i->bboxrect.ymax) ||
+ /*bbox outside page?*/
+ (i->bboxrect.xmax <= i->min_x ||
+ i->bboxrect.ymax <= i->min_y ||
+ i->bboxrect.xmin >= i->max_x ||
+ i->bboxrect.ymin >= i->max_y)
+ )
{
// delete the shape again, we didn't do anything
cancelshape(obj);
if(i->tag && i->tag->id == ST_END)
return; //already done
-
+
if(i->frameno == i->lastframeno) // fix: add missing pagefeed
swfoutput_pagefeed(obj);
iterator = iterator->next;
}
i->tag = swf_InsertTag(i->tag,ST_END);
+ TAG* tag = i->tag->prev;
+
+ /* remove the removeobject2 tags between the last ST_SHOWFRAME
+ and the ST_END- they confuse the flash player */
+ while(tag->id == ST_REMOVEOBJECT2) {
+ TAG* prev = tag->prev;
+ swf_DeleteTag(tag);
+ tag = prev;
+ }
}
SWF* swfoutput_get(struct swfoutput*obj)