git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added isShape() tag function.
[swftools.git]
/
pdf2swf
/
swfoutput.cc
diff --git
a/pdf2swf/swfoutput.cc
b/pdf2swf/swfoutput.cc
index
3318cfb
..
1c12e46
100644
(file)
--- a/
pdf2swf/swfoutput.cc
+++ b/
pdf2swf/swfoutput.cc
@@
-97,8
+97,8
@@
typedef struct _swfoutput_internal
int lastwasfill;
int shapeisempty;
char fill;
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];
TAG* cliptags[128];
int clipshapes[128];
U32 clipdepths[128];
@@
-1160,7
+1160,7
@@
static void endtext(swfoutput*obj)
swf_SetRect(i->tag,&r);
MATRIX m;
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_SetMatrix(i->tag,&m);
putcharacters(obj, i->tag);
@@
-1507,6
+1507,8
@@
void swfoutput_newpage(struct swfoutput*obj, int pageNum, int movex, int movey,
swf_PlaceObjectFree(&obj);
}
swf_PlaceObjectFree(&obj);
}
+ i->min_x = x1;
+ i->min_y = y1;
i->max_x = x2;
i->max_y = y2;
i->max_x = x2;
i->max_y = y2;
@@
-1718,8
+1720,15
@@
static void endshape(swfoutput*obj, int clipdepth)
fixAreas(obj);
if(i->shapeisempty ||
fixAreas(obj);
if(i->shapeisempty ||
+ /*bbox empty?*/
(i->bboxrect.xmin == i->bboxrect.xmax &&
(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);
{
// delete the shape again, we didn't do anything
cancelshape(obj);
@@
-1749,7
+1758,7
@@
void swfoutput_finalize(struct swfoutput*obj)
if(i->tag && i->tag->id == ST_END)
return; //already done
if(i->tag && i->tag->id == ST_END)
return; //already done
-
+
if(i->frameno == i->lastframeno) // fix: add missing pagefeed
swfoutput_pagefeed(obj);
if(i->frameno == i->lastframeno) // fix: add missing pagefeed
swfoutput_pagefeed(obj);
@@
-1767,6
+1776,15
@@
void swfoutput_finalize(struct swfoutput*obj)
iterator = iterator->next;
}
i->tag = swf_InsertTag(i->tag,ST_END);
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)
}
SWF* swfoutput_get(struct swfoutput*obj)