poppler/JBIG2Stream.cc | 45 +++++++++++++++++++++++++++++++-------------- 1 file changed, 31 insertions(+), 14 deletions(-)
New commits: commit 28adb3884dafcf1d36aae1ec05855b10b22aa4ae Author: Albert Astals Cid <[email protected]> Date: Mon Sep 5 20:26:57 2011 +0200 xpdf303: Change bpp calculation diff --git a/poppler/JBIG2Stream.cc b/poppler/JBIG2Stream.cc index 9f46706..e1ae481 100644 --- a/poppler/JBIG2Stream.cc +++ b/poppler/JBIG2Stream.cc @@ -2569,11 +2569,17 @@ void JBIG2Stream::readHalftoneRegionSeg(Guint segNum, GBool imm, } patternDict = (JBIG2PatternDict *)seg; - bpp = 0; - i = 1; - while (i < patternDict->getSize()) { - ++bpp; - i <<= 1; + i = patternDict->getSize(); + if (i <= 1) { + bpp = 0; + } else { + --i; + bpp = 0; + // i = floor((size-1) / 2^bpp) + while (i > 0) { + ++bpp; + i >>= 1; + } } patW = patternDict->getBitmap(0)->getWidth(); patH = patternDict->getBitmap(0)->getHeight(); commit c163a82f45d869b7c35a1a7141ab237507671f82 Author: Albert Astals Cid <[email protected]> Date: Mon Sep 5 20:25:04 2011 +0200 xpdf303: Change symCodeLen calculation diff --git a/poppler/JBIG2Stream.cc b/poppler/JBIG2Stream.cc index 5807f51..9f46706 100644 --- a/poppler/JBIG2Stream.cc +++ b/poppler/JBIG2Stream.cc @@ -2018,11 +2018,17 @@ void JBIG2Stream::readTextRegionSeg(Guint segNum, GBool imm, return; } } - symCodeLen = 0; - i = 1; - while (i < numSyms) { - ++symCodeLen; - i <<= 1; + i = numSyms; + if (i <= 1) { + symCodeLen = huff ? 1 : 0; + } else { + --i; + symCodeLen = 0; + // i = floor((numSyms-1) / 2^symCodeLen) + while (i > 0) { + ++symCodeLen; + i >>= 1; + } } // get the symbol bitmaps commit 1d1a985101c26f90bde8340dcfae3d6a1e0a08ba Author: Albert Astals Cid <[email protected]> Date: Mon Sep 5 20:20:03 2011 +0200 xpdf303: symCodeLen calculation fix diff --git a/poppler/JBIG2Stream.cc b/poppler/JBIG2Stream.cc index 1ae48e2..5807f51 100644 --- a/poppler/JBIG2Stream.cc +++ b/poppler/JBIG2Stream.cc @@ -1603,10 +1603,14 @@ GBool JBIG2Stream::readSymbolDictSeg(Guint segNum, Guint length, // compute symbol code length, per 6.5.8.2.3 // symCodeLen = ceil( log2( numInputSyms + numNewSyms ) ) - symCodeLen = 1; - if (likely(numInputSyms + numNewSyms > 0)) { // don't fail too badly if the sum is 0 - i = (numInputSyms + numNewSyms - 1) >> 1; - while (i) { + i = numInputSyms + numNewSyms; + if (i <= 1) { + symCodeLen = huff ? 1 : 0; + } else { + --i; + symCodeLen = 0; + // i = floor((numSyms-1) / 2^symCodeLen) + while (i > 0) { ++symCodeLen; i >>= 1; } commit 5c0274572c65972434293a30f3ba5afd3905005f Author: Albert Astals Cid <[email protected]> Date: Mon Sep 5 20:07:54 2011 +0200 xpdf303: add line accessor diff --git a/poppler/JBIG2Stream.cc b/poppler/JBIG2Stream.cc index 96c8ad3..1ae48e2 100644 --- a/poppler/JBIG2Stream.cc +++ b/poppler/JBIG2Stream.cc @@ -675,6 +675,7 @@ public: void clearToOne(); int getWidth() { return w; } int getHeight() { return h; } + int getLineSize() { return line; } int getPixel(int x, int y) { return (x < 0 || x >= w || y < 0 || y >= h) ? 0 : (data[y * line + (x >> 3)] >> (7 - (x & 7))) & 1; } _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
