git.asbjorn.biz
/
swftools.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
small bugfix
[swftools.git]
/
lib
/
devices
/
swf.c
diff --git
a/lib/devices/swf.c
b/lib/devices/swf.c
index
15e265e
..
01bac6a
100644
(file)
--- a/
lib/devices/swf.c
+++ b/
lib/devices/swf.c
@@
-98,6
+98,7
@@
typedef struct _swfoutput_internal
int config_bboxvars;
int config_disable_polygon_conversion;
int config_normalize_polygon_positions;
int config_bboxvars;
int config_disable_polygon_conversion;
int config_normalize_polygon_positions;
+ char config_disablelinks;
RGBA config_linkcolor;
float config_minlinewidth;
double config_caplinewidth;
RGBA config_linkcolor;
float config_minlinewidth;
double config_caplinewidth;
@@
-236,6
+237,7
@@
static swfoutput_internal* init_internal_struct()
i->firstpage = 1;
i->pagefinished = 1;
i->firstpage = 1;
i->pagefinished = 1;
+ i->config_disablelinks=0;
i->config_dumpfonts=0;
i->config_ppmsubpixels=0;
i->config_jpegsubpixels=0;
i->config_dumpfonts=0;
i->config_ppmsubpixels=0;
i->config_jpegsubpixels=0;
@@
-1406,7
+1408,8
@@
void swfoutput_finalize(gfxdevice_t*dev)
/* Add AVM2 actionscript */
if(i->config_flashversion>=9 &&
(i->config_insertstoptag || i->hasbuttons)) {
/* Add AVM2 actionscript */
if(i->config_flashversion>=9 &&
(i->config_insertstoptag || i->hasbuttons)) {
- swf_AddButtonLinks(i->swf, i->config_insertstoptag);
+ swf_AddButtonLinks(i->swf, i->config_insertstoptag,
+ i->config_internallinkfunction||i->config_externallinkfunction);
}
// if(i->config_reordertags)
// swf_Optimize(i->swf);
}
// if(i->config_reordertags)
// swf_Optimize(i->swf);
@@
-1558,6
+1561,9
@@
void swf_drawlink(gfxdevice_t*dev, gfxline_t*points, const char*url)
{
swfoutput_internal*i = (swfoutput_internal*)dev->internal;
{
swfoutput_internal*i = (swfoutput_internal*)dev->internal;
+ if(i->config_disablelinks)
+ return;
+
if(!strncmp("http://pdf2swf:", url, 15)) {
char*tmp = strdup(url);
int l = strlen(tmp);
if(!strncmp("http://pdf2swf:", url, 15)) {
char*tmp = strdup(url);
int l = strlen(tmp);
@@
-1588,8
+1594,10
@@
void swfoutput_linktourl(gfxdevice_t*dev, const char*url, gfxline_t*points)
endshape(dev);
if(i->textid>=0)
endtext(dev);
endshape(dev);
if(i->textid>=0)
endtext(dev);
+
+ /* TODO: escape special characters in url */
- if(i->config_externallinkfunction) {
+ if(i->config_externallinkfunction && i->config_flashversion<=8) {
actions = action_PushString(actions, url); //parameter
actions = action_PushInt(actions, 1); //number of parameters (1)
actions = action_PushString(actions, i->config_externallinkfunction); //function name
actions = action_PushString(actions, url); //parameter
actions = action_PushInt(actions, 1); //number of parameters (1)
actions = action_PushString(actions, i->config_externallinkfunction); //function name
@@
-1616,7
+1624,7
@@
void swfoutput_linktopage(gfxdevice_t*dev, int page, gfxline_t*points)
if(i->textid>=0)
endtext(dev);
if(i->textid>=0)
endtext(dev);
- if(!i->config_internallinkfunction) {
+ if(!i->config_internallinkfunction || i->config_flashversion>=9) {
actions = action_GotoFrame(actions, page-1);
actions = action_End(actions);
} else {
actions = action_GotoFrame(actions, page-1);
actions = action_End(actions);
} else {
@@
-1974,6
+1982,8
@@
int swf_setparameter(gfxdevice_t*dev, const char*name, const char*value)
i->config_dumpfonts = atoi(value);
} else if(!strcmp(name, "animate")) {
i->config_animate = atoi(value);
i->config_dumpfonts = atoi(value);
} else if(!strcmp(name, "animate")) {
i->config_animate = atoi(value);
+ } else if(!strcmp(name, "disablelinks")) {
+ i->config_disablelinks = atoi(value);
} else if(!strcmp(name, "simpleviewer")) {
i->config_simpleviewer = atoi(value);
} else if(!strcmp(name, "next_bitmap_is_jpeg")) {
} else if(!strcmp(name, "simpleviewer")) {
i->config_simpleviewer = atoi(value);
} else if(!strcmp(name, "next_bitmap_is_jpeg")) {
@@
-2031,6
+2041,7
@@
int swf_setparameter(gfxdevice_t*dev, const char*name, const char*value)
printf("animate insert a showframe tag after each placeobject (animate draw order of PDF files)\n");
printf("jpegquality=<quality> set compression quality of jpeg images\n");
printf("splinequality=<value> Set the quality of spline convertion to value (0-100, default: 100).\n");
printf("animate insert a showframe tag after each placeobject (animate draw order of PDF files)\n");
printf("jpegquality=<quality> set compression quality of jpeg images\n");
printf("splinequality=<value> Set the quality of spline convertion to value (0-100, default: 100).\n");
+ printf("disablelinks Disable links.\n");
} else {
return 0;
}
} else {
return 0;
}
@@
-2839,6
+2850,16
@@
static void swf_drawchar(gfxdevice_t*dev, gfxfont_t*font, int glyph, gfxcolor_t*
msg("<error> swf_drawchar called (glyph %d) without font", glyph);
return;
}
msg("<error> swf_drawchar called (glyph %d) without font", glyph);
return;
}
+
+ if(i->config_drawonlyshapes) {
+ gfxglyph_t*g = &font->glyphs[glyph];
+ gfxline_t*line2 = gfxline_clone(g->line);
+ gfxline_transform(line2, matrix);
+ dev->fill(dev, line2, color);
+ gfxline_free(line2);
+ return;
+ }
+
if(!i->swffont || !i->swffont->name || strcmp((char*)i->swffont->name,font->id)) // not equal to current font
{
/* TODO: remove the need for this (enhance getcharacterbbox so that it can cope
if(!i->swffont || !i->swffont->name || strcmp((char*)i->swffont->name,font->id)) // not equal to current font
{
/* TODO: remove the need for this (enhance getcharacterbbox so that it can cope