X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=pdf2swf%2Fswfoutput.cc;h=330c89064a59aecd31b1db1626b20ad37c5b9b9e;hb=41e2677f86bb98be45f5cf8d82abbb3b95e5f043;hp=52f64ffb93f7b9ebf63dc12b99b04d31862282f7;hpb=3b6a15452be7b300bc7be5a7927b4b210e7cc732;p=swftools.git diff --git a/pdf2swf/swfoutput.cc b/pdf2swf/swfoutput.cc index 52f64ff..330c890 100644 --- a/pdf2swf/swfoutput.cc +++ b/pdf2swf/swfoutput.cc @@ -36,6 +36,7 @@ int drawonlyshapes=0; int jpegquality=85; int storeallcharacters=0; int enablezlib=0; +int insertstoptag=0; static int flag_protected = 0; typedef unsigned char u8; @@ -646,7 +647,7 @@ SWFFont::~SWFFont() swflastx=0; swflasty=0; - swf_SetU8(ftag,0x10); //0 fill bits, 0 linestyle bits + swf_SetU8(ftag,0x10); //1 fill bits, 0 linestyle bits SHAPE s; s.bits.fill = 1; s.bits.line = 0; @@ -969,6 +970,14 @@ static void endpage(struct swfoutput*obj) endtext(); while(clippos) swfoutput_endclip(obj); + + if(insertstoptag) { + ActionTAG*atag=0; + atag = action_Stop(atag); + atag = action_End(atag); + tag = swf_InsertTag(tag,ST_DOACTION); + swf_ActionSet(tag,atag); + } tag = swf_InsertTag(tag,ST_SHOWFRAME); } @@ -1137,13 +1146,11 @@ void swfoutput_linktourl(struct swfoutput*obj, char*url, swfcoord*points) if(textid>=0) endtext(); - actions = swf_ActionStart(); if(opennewwindow) - action_GetUrl(url, "_parent"); + actions = action_GetUrl(0, url, "_parent"); else - action_GetUrl(url, "_this"); - action_End(); - swf_ActionEnd(); + actions = action_GetUrl(0, url, "_this"); + actions = action_End(actions); drawlink(obj, actions, 0, points,0); } @@ -1156,10 +1163,8 @@ void swfoutput_linktopage(struct swfoutput*obj, int page, swfcoord*points) if(textid>=0) endtext(); - actions = swf_ActionStart(); - action_GotoFrame(page); - action_End(); - swf_ActionEnd(); + actions = action_GotoFrame(0, page); + actions = action_End(actions); drawlink(obj, actions, 0, points,0); } @@ -1172,19 +1177,15 @@ void swfoutput_namedlink(struct swfoutput*obj, char*name, swfcoord*points) if(textid>=0) endtext(); - actions1 = swf_ActionStart(); - action_PushString("/:subtitle"); - action_PushString(name); - action_SetVariable(); - action_End(); - swf_ActionEnd(); - - actions2 = swf_ActionStart(); - action_PushString("/:subtitle"); - action_PushString(""); - action_SetVariable(); - action_End(); - swf_ActionEnd(); + actions1 = action_PushString(0, "/:subtitle"); + actions1 = action_PushString(actions1, name); + actions1 = action_SetVariable(actions1); + actions1 = action_End(actions1); + + actions2 = action_PushString(0, "/:subtitle"); + actions2 = action_PushString(actions2, ""); + actions2 = action_SetVariable(actions2); + actions2 = action_End(actions2); drawlink(obj, actions1, actions2, points,1); @@ -1351,23 +1352,28 @@ static void drawimage(struct swfoutput*obj, int bitid, int sizex,int sizey, if(y4>ymax) ymax=y4; if(x4linewidth,&obj->strokergb); //fsid = ShapeAddSolidFillStyle(shape,&obj->fillrgb); - fsid = swf_ShapeAddBitmapFillStyle(shape,&m,bitid,0); + fsid = swf_ShapeAddBitmapFillStyle(shape,&m,bitid,1); swf_SetU16(tag, myshapeid); r.xmin = (int)(xmin*20); r.ymin = (int)(ymin*20); @@ -1480,11 +1486,11 @@ int swfoutput_drawimagelossless(struct swfoutput*obj, RGBA*mem, int sizex,int si return bitid; } -int swfoutput_drawimagelossless256(struct swfoutput*obj, U8*mem, RGBA*pal, int sizex,int sizey, +int swfoutput_drawimagelosslessN(struct swfoutput*obj, U8*mem, RGBA*pal, int sizex,int sizey, double x1,double y1, double x2,double y2, double x3,double y3, - double x4,double y4) + double x4,double y4, int n) { TAG*oldtag; U8*mem2 = 0; @@ -1496,7 +1502,6 @@ int swfoutput_drawimagelossless256(struct swfoutput*obj, U8*mem, RGBA*pal, int s if(sizex&3) { /* SWF expects scanlines to be 4 byte aligned */ - printf("%d -> %d\n", sizex, BYTES_PER_SCANLINE(sizex)); int x,y; U8*ptr; mem2 = (U8*)malloc(BYTES_PER_SCANLINE(sizex)*sizey); @@ -1514,7 +1519,7 @@ int swfoutput_drawimagelossless256(struct swfoutput*obj, U8*mem, RGBA*pal, int s oldtag = tag; tag = swf_InsertTag(tag,ST_DEFINEBITSLOSSLESS2); swf_SetU16(tag, bitid); - if(swf_SetLosslessBitsIndexed(tag,sizex,sizey,mem, pal, 256)<0) { + if(swf_SetLosslessBitsIndexed(tag,sizex,sizey,mem, pal, n)<0) { swf_DeleteTag(tag); tag = oldtag; return -1;