poppler/PDFDoc.cc      |    7 +++--
 poppler/PSOutputDev.cc |   63 ++++++++++++++++++++++++++++++++++++++++++++++---
 2 files changed, 64 insertions(+), 6 deletions(-)

New commits:
commit e78aff6796a5d5a0a4f2fe8c7ceb33c506e2c8f5
Author: William Bader <[email protected]>
Date:   Tue Jul 26 00:10:34 2011 +0200

    make -level1sep write gray instead of cmyk
    
    If it is a gray only image
    Bug 39012

diff --git a/poppler/PSOutputDev.cc b/poppler/PSOutputDev.cc
index 501cff0..0a3df51 100644
--- a/poppler/PSOutputDev.cc
+++ b/poppler/PSOutputDev.cc
@@ -506,7 +506,6 @@ static char *prolog[] = {
   "         /pdfTextClipPath [] def } def",
   "~1ns",
   "% Level 1 image operators",
-  "~1n",
   "/pdfIm1 {",
   "  /pdfImBuf1 4 index string def",
   "  { currentfile pdfImBuf1 readhexstring pop } image",
@@ -3141,13 +3140,71 @@ GBool PSOutputDev::checkPageSlice(Page *page, double 
/*hDPI*/, double /*vDPI*/,
     break;
   case psLevel1Sep:
     useBinary = globalParams->getPSBinary();
-    writePSFmt("{0:d} {1:d} 8 [{2:d} 0 0 {3:d} 0 {4:d}] pdfIm1Sep{5:s}\n",
+    p = bitmap->getDataPtr();
+    isGray = gTrue;
+    for (y = 0; y < h; ++y) {
+      for (x = 0; x < w; ++x) {
+       if (p[4*x] != p[4*x + 1] || p[4*x] != p[4*x + 2]) {
+         isGray = gFalse;
+         y = h;
+         break;
+       }
+      }
+      p += bitmap->getRowSize();
+    }
+    writePSFmt("{0:d} {1:d} 8 [{2:d} 0 0 {3:d} 0 {4:d}] pdfIm1{5:s}{6:s}\n",
               w, h, w, -h, h,
+              isGray ? "" : "Sep",
               useBinary ? "Bin" : "");
     p = bitmap->getDataPtr();
     i = 0;
     col[0] = col[1] = col[2] = col[3] = 0;
-    if (((psProcessCyan | psProcessMagenta | psProcessYellow | psProcessBlack) 
& ~processColors) != 0) {
+    if (isGray) {
+      int g;
+      if ((psProcessBlack & processColors) == 0) {
+       for (y = 0; y < h; ++y) {
+         for (x = 0; x < w; ++x) {
+           if (p[4*x] > 0 || p[4*x + 3] > 0) {
+             col[3] = 1;
+             y = h;
+             break;
+           }
+         }
+          p += bitmap->getRowSize();
+       }
+        p = bitmap->getDataPtr();
+      }
+      for (y = 0; y < h; ++y) {
+       if (useBinary) {
+         for (x = 0; x < w; ++x) {
+           g = p[4*x] + p[4*x + 3];
+           g = 255 - g;
+           if (g < 0) g = 0;
+           hexBuf[i++] = (Guchar) g;
+           if (i >= 64) {
+             writePSBuf(hexBuf, i);
+             i = 0;
+           }
+         }
+       } else {
+         for (x = 0; x < w; ++x) {
+           g = p[4*x] + p[4*x + 3];
+           g = 255 - g;
+           if (g < 0) g = 0;
+           digit = g / 16;
+           hexBuf[i++] = digit + ((digit >= 10)? 'a' - 10: '0');
+           digit = g % 16;
+           hexBuf[i++] = digit + ((digit >= 10)? 'a' - 10: '0');
+           if (i >= 64) {
+             hexBuf[i++] = '\n';
+             writePSBuf(hexBuf, i);
+             i = 0;
+           }
+         }
+        }
+        p += bitmap->getRowSize();
+      }
+    } else if (((psProcessCyan | psProcessMagenta | psProcessYellow | 
psProcessBlack) & ~processColors) != 0) {
       for (y = 0; y < h; ++y) {
         for (comp = 0; comp < 4; ++comp) {
          if (useBinary) {
commit ea31309487aab6ed407a086dff1f350b6e4bdbc9
Author: Albert Astals Cid <[email protected]>
Date:   Tue Jul 26 00:09:27 2011 +0200

    Update (C)

diff --git a/poppler/PDFDoc.cc b/poppler/PDFDoc.cc
index 17d780b..aa52140 100644
--- a/poppler/PDFDoc.cc
+++ b/poppler/PDFDoc.cc
@@ -21,7 +21,7 @@
 // Copyright (C) 2009 Eric Toombs <[email protected]>
 // Copyright (C) 2009 Kovid Goyal <[email protected]>
 // Copyright (C) 2009, 2011 Axel Struebing <[email protected]>
-// Copyright (C) 2010 Hib Eris <[email protected]>
+// Copyright (C) 2010, 2011 Hib Eris <[email protected]>
 // Copyright (C) 2010 Jakub Wilk <[email protected]>
 // Copyright (C) 2010 Ilya Gorenbein <[email protected]>
 // Copyright (C) 2010 Srinivas Adicherla <[email protected]>
commit a945641497946a825dc880f94200ea1d5409332b
Author: Hib Eris <[email protected]>
Date:   Sat Jul 23 08:44:06 2011 +0200

    Handle missing startxref properly
    
    Bug 38209

diff --git a/poppler/PDFDoc.cc b/poppler/PDFDoc.cc
index b861c5d..17d780b 100644
--- a/poppler/PDFDoc.cc
+++ b/poppler/PDFDoc.cc
@@ -1118,9 +1118,10 @@ Guint PDFDoc::getStartXRef()
       }
       if (i < 0) {
         startXRefPos = 0;
+      } else {
+        for (p = &buf[i+9]; isspace(*p); ++p) ;
+        startXRefPos =  strToUnsigned(p);
       }
-      for (p = &buf[i+9]; isspace(*p); ++p) ;
-      startXRefPos =  strToUnsigned(p);
     }
 
   }
_______________________________________________
poppler mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/poppler

Reply via email to