fixed a few bugs in remove_font_transforms filter
[swftools.git] / lib / devices / swf.c
index 182aa55..b090c7b 100644 (file)
@@ -42,7 +42,7 @@
 #include "../gfxtools.h"
 #include "swf.h"
 #include "../gfxpoly.h"
-#include "../png.h"
+#include "../gfximage.h"
 
 #define CHARDATAMAX 1024
 #define CHARMIDX 0
@@ -102,6 +102,7 @@ typedef struct _swfoutput_internal
     int config_storeallcharacters;
     int config_enablezlib;
     int config_insertstoptag;
+    int config_showimages;
     int config_watermark;
     int config_noclips;
     int config_flashversion;
@@ -955,6 +956,7 @@ static void endpage(gfxdevice_t*dev)
     swfoutput_internal*i = (swfoutput_internal*)dev->internal;
     if(i->pagefinished)
        return;
+    
     if(i->shapeid>=0)
        endshape(dev);
     if(i->textmode)
@@ -2120,6 +2122,10 @@ 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);
+    } else if(!strcmp(name, "linknameurl")) {
+       i->config_linknameurl = atoi(value);
+    } else if(!strcmp(name, "showimages")) {
+       i->config_showimages = atoi(value);
     } else if(!strcmp(name, "disablelinks")) {
        i->config_disablelinks = atoi(value);
     } else if(!strcmp(name, "simpleviewer")) {
@@ -2255,7 +2261,9 @@ static int add_image(swfoutput_internal*i, gfximage_t*img, int targetwidth, int
     
     if(newsizex<sizex || newsizey<sizey) {
        msg("<verbose> Scaling %dx%d image to %dx%d", sizex, sizey, newsizex, newsizey);
-       newpic = swf_ImageScale(mem, sizex, sizey, newsizex, newsizey);
+       gfximage_t*ni = gfximage_rescale(img, newsizex, newsizey);
+       newpic = (RGBA*)ni->data;
+       free(ni);
        *newwidth = sizex = newsizex;
        *newheight  = sizey = newsizey;
        mem = newpic;
@@ -2357,6 +2365,11 @@ static void swf_fillbitmap(gfxdevice_t*dev, gfxline_t*line, gfximage_t*img, gfxm
     SHAPE*shape;
     swf_ShapeNew(&shape);
     int fsid = swf_ShapeAddBitmapFillStyle(shape,&m,bitid,1);
+    int lsid = 0;
+    if(i->config_showimages) {
+       RGBA pink = {255,255,0,255};
+       lsid = swf_ShapeAddLineStyle(shape, 20, &pink);
+    }
     swf_SetU16(i->tag, myshapeid);
     SRECT r = gfxline_getSWFbbox(line);
     r = swf_ClipRect(i->pagebbox, r);
@@ -2364,7 +2377,7 @@ static void swf_fillbitmap(gfxdevice_t*dev, gfxline_t*line, gfximage_t*img, gfxm
     swf_SetShapeStyles(i->tag,shape);
     swf_ShapeCountBits(shape,NULL,NULL);
     swf_SetShapeBits(i->tag,shape);
-    swf_ShapeSetAll(i->tag,shape,UNDEFINED_COORD,UNDEFINED_COORD,0,fsid,0);
+    swf_ShapeSetAll(i->tag,shape,UNDEFINED_COORD,UNDEFINED_COORD,lsid,fsid,0);
     i->swflastx = i->swflasty = UNDEFINED_COORD;
     drawgfxline(dev, line, 1);
     swf_ShapeSetEnd(i->tag);
@@ -2970,11 +2983,6 @@ static void swf_addfont(gfxdevice_t*dev, gfxfont_t*font)
                    l->swffont->layout->bounds[iii].xmax/20.0,
                    l->swffont->layout->bounds[iii].ymax/20.0
                    );
-           int t;
-           for(t=0;t<l->swffont->maxascii;t++) {
-               if(l->swffont->ascii2glyph[t] == iii)
-                   msg("<debug> | - maps to %d",t);
-           }
        }
     }
 }