removed parameter_t
[swftools.git] / lib / pdf / GFXOutputDev.cc
index ae26f2b..288de6e 100644 (file)
@@ -596,13 +596,6 @@ void GFXOutputDev::setParameter(const char*key, const char*value)
         this->config_fontquality = atof(value);
        if(this->config_fontquality<=1)
            this->config_fontquality=1;
-    } else if(!strcmp(key,"help")) {
-       printf("\nPDF layer options:\n");
-       printf("breakonwarning=0/1  Abort conversion if graphic objects are found which\n");
-       printf("                    are not 100%% supported\n");
-       printf("transparent=0/1     Make PDF transparent (alpha background)\n");
-       printf("extrafontdata=0/1   Store Type3 characters and capture characters\n");
-       printf("fontquality=1..100  Curve approximation quality of the fonts\n");
     }
     
 }
@@ -1972,19 +1965,23 @@ unsigned char* antialize(unsigned char*data, int width, int height, int newwidth
        double ex = px + fx;
        int fromx = (int)px;
        int tox = (int)ex;
-       int xweight1 = (int)(((fromx+1)-px)*256);
+       int xweight1 = (int)((1-(px-fromx))*256);
        int xweight2 = (int)((ex-tox)*256);
        double py =0;
        for(y=0;y<newheight;y++) {
            double ey = py + fy;
            int fromy = (int)py;
            int toy = (int)ey;
-           int yweight1 = (int)(((fromy+1)-py)*256);
+           int yweight1 = (int)((1-(py-fromy))*256);
            int yweight2 = (int)((ey-toy)*256);
            int a = 0;
            int xx,yy;
-           for(xx=fromx;xx<tox;xx++)
-           for(yy=fromy;yy<toy;yy++) {
+            if(tox>=width) 
+                tox = width-1;
+            if(toy>=height) 
+                toy = height-1;
+           for(xx=fromx;xx<=tox;xx++)
+           for(yy=fromy;yy<=toy;yy++) {
                int b = 1-data[width*yy+xx];
                int weight=256;
                if(xx==fromx) weight = (weight*xweight1)/256;
@@ -2050,6 +2047,7 @@ static void drawimage(gfxdevice_t*dev, gfxcolor_t* data, int sizex,int sizey,
        /* TODO: pass image_dpi to device instead */
        dev->setparameter(dev, "next_bitmap_is_jpeg", "1");
 
+    dump_outline(&p1);
     dev->fillbitmap(dev, &p1, &img, &m, 0);
 }
 
@@ -2140,10 +2138,20 @@ void GFXOutputDev::drawGeneralImage(GfxState *state, Object *ref, Stream *str,
       return;
   }
 
-  this->transformXY(state, 0, 1, &x1, &y1); x1 = (int)(x1);y1 = (int)(y1);
-  this->transformXY(state, 0, 0, &x2, &y2); x2 = (int)(x2);y2 = (int)(y2);
-  this->transformXY(state, 1, 0, &x3, &y3); x3 = (int)(x3);y3 = (int)(y3);
-  this->transformXY(state, 1, 1, &x4, &y4); x4 = (int)(x4);y4 = (int)(y4);
+  this->transformXY(state, 0, 1, &x1, &y1);
+  this->transformXY(state, 0, 0, &x2, &y2);
+  this->transformXY(state, 1, 0, &x3, &y3);
+  this->transformXY(state, 1, 1, &x4, &y4);
+
+  if(type3active) {
+      /* as type 3 bitmaps are antialized, we need to place them
+        at integer coordinates, otherwise flash player's antializing
+        will kick in and make everything blurry */
+      x1 = (int)(x1);y1 = (int)(y1);
+      x2 = (int)(x2);y2 = (int)(y2);
+      x3 = (int)(x3);y3 = (int)(y3);
+      x4 = (int)(x4);y4 = (int)(y4);
+  }
 
   if(!pbminfo && !(str->getKind()==strDCT)) {
       if(!type3active) {