From 829935530fee5c47224f49c175ae1964119eb435 Mon Sep 17 00:00:00 2001 From: Matthias Kramm Date: Wed, 11 Feb 2009 13:01:41 +0100 Subject: [PATCH] fixed nasty overlay detection bug in poly2bitmap --- lib/pdf/BitmapOutputDev.cc | 47 ++++++++++++++++++++++++++++++-------------- 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/lib/pdf/BitmapOutputDev.cc b/lib/pdf/BitmapOutputDev.cc index 9a3cfb4..ac5744b 100644 --- a/lib/pdf/BitmapOutputDev.cc +++ b/lib/pdf/BitmapOutputDev.cc @@ -294,6 +294,30 @@ void BitmapOutputDev::flushText() this->emptypage = 0; } +void writeMonoBitmap(SplashBitmap*btm, char*filename) +{ + int width8 = (btm->getWidth()+7)/8; + int width = btm->getWidth(); + int height = btm->getHeight(); + gfxcolor_t*b = (gfxcolor_t*)malloc(sizeof(gfxcolor_t)*width*height); + unsigned char*data = btm->getDataPtr(); + int x,y; + for(y=0;y>3]&(128>>(x&7))) { + d[x].r = d[x].g = d[x].b = 255; + } else { + d[x].r = d[x].g = d[x].b = 0; + } + d[x].a = 255; + } + } + writePNG(filename, (unsigned char*)b, width, height); + free(b); +} + void writeBitmap(SplashBitmap*bitmap, char*filename) { int y,x; @@ -303,9 +327,10 @@ void writeBitmap(SplashBitmap*bitmap, char*filename) gfxcolor_t*data = (gfxcolor_t*)malloc(sizeof(gfxcolor_t)*width*height); - unsigned char aa=0; - if(bitmap->getMode()==splashModeMono1) - aa=255; + if(bitmap->getMode()==splashModeMono1) { + writeMonoBitmap(bitmap, filename); + return; + } for(y=0;ygetAlpha(x,y); - line[x].a = a; - } + line[x].a = bitmap->getAlpha(x,y); } } writePNG(filename, (unsigned char*)data, width, height); @@ -335,7 +355,7 @@ void writeAlpha(SplashBitmap*bitmap, char*filename) int height = bitmap->getHeight(); if(bitmap->getMode()==splashModeMono1) { - writeBitmap(bitmap, filename); + writeMonoBitmap(bitmap, filename); return; } @@ -696,11 +716,8 @@ GBool BitmapOutputDev::intersection(int x1, int y1, int x2, int y2) unsigned char*data2 = (unsigned char*)textpixels; msg(" Testing area (%d,%d,%d,%d), runx=%d,runy=%d", x1,y1,x2,y2, runx, runy); for(y=0;y