X-Git-Url: http://git.asbjorn.biz/?a=blobdiff_plain;f=pdf2swf%2Fswfoutput.cc;h=8eaacd349f7704378f5392c4a20e2dd1d2d81a72;hb=3cdc844531091d6e19ae9d973c8b8de311ebff85;hp=3861be7928dcd5636e7e984138a1dfd9c05ce34f;hpb=af43e2a5714a70b9a65285cbf00e290d95d957a5;p=swftools.git diff --git a/pdf2swf/swfoutput.cc b/pdf2swf/swfoutput.cc index 3861be7..8eaacd3 100644 --- a/pdf2swf/swfoutput.cc +++ b/pdf2swf/swfoutput.cc @@ -88,6 +88,7 @@ typedef struct _swfoutput_internal int config_bboxvars; float config_minlinewidth; double config_caplinewidth; + char* config_linktarget; SWF* swf; @@ -225,6 +226,7 @@ static swfoutput_internal* init_internal_struct() i->config_bboxvars=0; i->config_minlinewidth=0.05; i->config_caplinewidth=1; + i->config_linktarget=0; return i; }; @@ -1215,6 +1217,10 @@ void* swfresult_get(gfxresult_t*gfx, char*name) return (void*)(swf->movieSize.xmax/20); } else if(!strcmp(name, "ymax")) { return (void*)(swf->movieSize.ymax/20); + } else if(!strcmp(name, "width")) { + return (void*)((swf->movieSize.xmax - swf->movieSize.xmin)/20); + } else if(!strcmp(name, "height")) { + return (void*)((swf->movieSize.ymax - swf->movieSize.ymin)/20); } return 0; } @@ -1236,6 +1242,11 @@ gfxresult_t* swf_finish(gfxdevice_t* dev) swfoutput_internal*i = (swfoutput_internal*)dev->internal; gfxresult_t*result; + if(i->config_linktarget) { + free(i->config_linktarget); + i->config_linktarget = 0; + } + swfoutput_finalize(dev); SWF* swf = i->swf;i->swf = 0; swfoutput_destroy(dev); @@ -1305,14 +1316,17 @@ static void swfoutput_setstrokecolor(gfxdevice_t* dev, U8 r, U8 g, U8 b, U8 a) i->strokergb.a = a; } +//#define ROUND_UP 19 +//#define ROUND_UP 10 + static void swfoutput_setlinewidth(gfxdevice_t*dev, double _linewidth) { swfoutput_internal*i = (swfoutput_internal*)dev->internal; - if(i->linewidth == (U16)(_linewidth*20+19)) + if(i->linewidth == (U16)(_linewidth*20+19.0/20.0)) return; if(i->shapeid>=0) endshape(dev); - i->linewidth = (U16)(_linewidth*20+19); + i->linewidth = (U16)(_linewidth*20+19.0/20.0); } @@ -1361,11 +1375,15 @@ void swfoutput_linktourl(gfxdevice_t*dev, char*url, gfxline_t*points) endshape(dev); if(i->textid>=0) endtext(dev); - - if(!i->config_opennewwindow) - actions = action_GetUrl(0, url, "_parent"); - else - actions = action_GetUrl(0, url, "_this"); + + if(!i->config_linktarget) { + if(!i->config_opennewwindow) + actions = action_GetUrl(0, url, "_parent"); + else + actions = action_GetUrl(0, url, "_this"); + } else { + actions = action_GetUrl(0, url, i->config_linktarget); + } actions = action_End(actions); drawlink(dev, actions, 0, points,0); @@ -1669,6 +1687,8 @@ int swf_setparameter(gfxdevice_t*dev, const char*name, const char*value) i->config_minlinewidth = atof(value); } else if(!strcmp(name, "caplinewidth")) { i->config_caplinewidth = atof(value); + } else if(!strcmp(name, "linktarget")) { + i->config_linktarget = strdup(value); } else if(!strcmp(name, "dumpfonts")) { i->config_dumpfonts = atoi(value); } else if(!strcmp(name, "next_bitmap_is_jpeg")) {