X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=pdf2swf%2Fswfoutput.cc;h=75efd2c57b0dcecd11d6484850a29c6750827334;hb=1f237fb411319057ae1e4f779e511cea0e206858;hp=d6974b2857dd0529b0d5a2a8011a8ad1b0dbe533;hpb=21e018742051f8a032fa50117ba5beb0668c25f0;p=swftools.git diff --git a/pdf2swf/swfoutput.cc b/pdf2swf/swfoutput.cc index d6974b2..75efd2c 100644 --- a/pdf2swf/swfoutput.cc +++ b/pdf2swf/swfoutput.cc @@ -1137,13 +1137,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 +1154,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 +1168,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); @@ -1405,7 +1397,7 @@ static void drawimage(struct swfoutput*obj, int bitid, int sizex,int sizey, swf_ObjectPlace(tag,myshapeid,/*depth*/depth++,NULL,NULL,NULL); } -int swfoutput_drawimagejpeg(struct swfoutput*obj, char*filename, int sizex,int sizey, +int swfoutput_drawimagejpeg_old(struct swfoutput*obj, char*filename, int sizex,int sizey, double x1,double y1, double x2,double y2, double x3,double y3, @@ -1431,6 +1423,29 @@ int swfoutput_drawimagejpeg(struct swfoutput*obj, char*filename, int sizex,int s return bitid; } +int swfoutput_drawimagejpeg(struct swfoutput*obj, RGBA*mem, int sizex,int sizey, + double x1,double y1, + double x2,double y2, + double x3,double y3, + double x4,double y4) +{ + TAG*oldtag; + JPEGBITS*jpeg; + + if(shapeid>=0) + endshape(); + if(textid>=0) + endtext(); + + int bitid = ++currentswfid; + oldtag = tag; + tag = swf_InsertTag(tag,ST_DEFINEBITSJPEG2); + swf_SetU16(tag, bitid); + swf_SetJPEGBits2(tag,sizex,sizey,mem,jpegquality); + drawimage(obj, bitid, sizex, sizey, x1,y1,x2,y2,x3,y3,x4,y4); + return bitid; +} + int swfoutput_drawimagelossless(struct swfoutput*obj, RGBA*mem, int sizex,int sizey, double x1,double y1, double x2,double y2, @@ -1464,11 +1479,28 @@ int swfoutput_drawimagelossless256(struct swfoutput*obj, U8*mem, RGBA*pal, int s double x4,double y4) { TAG*oldtag; + U8*mem2 = 0; if(shapeid>=0) endshape(); if(textid>=0) endtext(); + if(sizex&3) + { + /* SWF expects scanlines to be 4 byte aligned */ + int x,y; + U8*ptr; + mem2 = (U8*)malloc(BYTES_PER_SCANLINE(sizex)*sizey); + ptr = mem2; + for(y=0;y