[poppler] poppler/GfxState.cc poppler/Stream.cc

Albert Astals Cid aacid at kemper.freedesktop.org
Tue Apr 15 12:59:37 PDT 2008


 poppler/GfxState.cc |    6 ++++++
 poppler/Stream.cc   |    9 +++++++++
 2 files changed, 15 insertions(+)

New commits:
commit 7c8feb4e3627bde2052a7e536d2d49d1cbbce8ee
Author: Albert Astals Cid <aacid at kde.org>
Date:   Tue Apr 15 21:57:31 2008 +0200

    Hack to "support" 16 bits images
    
    Everywhere we assume a component fits in 8 bits, with this hack
    we treat 16 bit images as 8 bit ones until it's fixed correctly.
    Fixes http://bugs.kde.org/show_bug.cgi?id=158165

diff --git a/poppler/GfxState.cc b/poppler/GfxState.cc
index f2f914d..371ef3d 100644
--- a/poppler/GfxState.cc
+++ b/poppler/GfxState.cc
@@ -3349,6 +3349,12 @@ GfxImageColorMap::GfxImageColorMap(int bitsA, Object *decode,
   maxPixel = (1 << bits) - 1;
   colorSpace = colorSpaceA;
 
+  // this is a hack to support 16 bits images, everywhere
+  // we assume a component fits in 8 bits, with this hack
+  // we treat 16 bit images as 8 bit ones until it's fixed correctly.
+  // The hack has another part on ImageStream::getLine
+  if (maxPixel > 255) maxPixel = 255;
+
   // initialize
   for (k = 0; k < gfxColorMaxComps; ++k) {
     lookup[k] = NULL;
diff --git a/poppler/Stream.cc b/poppler/Stream.cc
index c253129..f00587d 100644
--- a/poppler/Stream.cc
+++ b/poppler/Stream.cc
@@ -428,6 +428,15 @@ Guchar *ImageStream::getLine() {
     for (i = 0; i < nVals; ++i) {
       imgLine[i] = str->getChar();
     }
+  } else if (nBits == 16) {
+    // this is a hack to support 16 bits images, everywhere
+    // we assume a component fits in 8 bits, with this hack
+    // we treat 16 bit images as 8 bit ones until it's fixed correctly.
+    // The hack has another part on GfxImageColorMap::GfxImageColorMap
+    for (i = 0; i < nVals; ++i) {
+      imgLine[i] = str->getChar();
+      str->getChar();
+    }
   } else {
     bitMask = (1 << nBits) - 1;
     buf = 0;


More information about the poppler mailing list