From f93b6225b484a80698e57945a84c3fc8c524a9a0 Mon Sep 17 00:00:00 2001 From: kramm Date: Thu, 8 May 2008 14:59:21 +0000 Subject: [PATCH] fixed crash in antialize(), truncate image coordinates to integer before bitmap-filling --- lib/pdf/GFXOutputDev.cc | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/pdf/GFXOutputDev.cc b/lib/pdf/GFXOutputDev.cc index 53a88ed..fed1333 100644 --- a/lib/pdf/GFXOutputDev.cc +++ b/lib/pdf/GFXOutputDev.cc @@ -1965,8 +1965,8 @@ unsigned char* antialize(unsigned char*data, int width, int height, int newwidth unsigned char*newdata; int x,y; newdata= (unsigned char*)malloc(newwidth*newheight); - double fx = (double)(width)/newwidth; - double fy = (double)(height)/newheight; + double fx = ((double)width)/newwidth; + double fy = ((double)height)/newheight; double px = 0; int blocksize = (int)(8192/(fx*fy)); int r = 8192*256/palettesize; @@ -1985,8 +1985,8 @@ unsigned char* antialize(unsigned char*data, int width, int height, int newwidth int yweight2 = (int)((ey-toy)*256); int a = 0; int xx,yy; - for(xx=fromx;xx<=tox;xx++) - for(yy=fromy;yy<=toy;yy++) { + for(xx=fromx;xxtransformXY(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); + 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); if(!pbminfo && !(str->getKind()==strDCT)) { if(!type3active) { @@ -2201,7 +2201,7 @@ void GFXOutputDev::drawGeneralImage(GfxState *state, Object *ref, Stream *str, delete imgStr; return; } - + width = realwidth; height = realheight; delete[] pic; @@ -2217,6 +2217,7 @@ void GFXOutputDev::drawGeneralImage(GfxState *state, Object *ref, Stream *str, pal[t].b = colToByte(rgb.b); pal[t].a = (unsigned char)(t*r); } + } gfxcolor_t*pic2 = new gfxcolor_t[width*height]; -- 1.7.10.4