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");
}
}
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;
/* 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);
}
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) {