You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2014/05/08 22:52:03 UTC

svn commit: r1593416 - in /pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject: PDJpegTest.java PDPixelMapTest.java PDUtils.java

Author: tilman
Date: Thu May  8 20:52:03 2014
New Revision: 1593416

URL: http://svn.apache.org/r1593416
Log:
PDFBOX-2057, PDFBOX-2067: added test for the masks

Modified:
    pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpegTest.java
    pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMapTest.java
    pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDUtils.java

Modified: pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpegTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpegTest.java?rev=1593416&r1=1593415&r2=1593416&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpegTest.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDJpegTest.java Thu May  8 20:52:03 2014
@@ -29,6 +29,7 @@ import org.apache.pdfbox.pdmodel.edit.PD
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
 import static org.apache.pdfbox.pdmodel.graphics.xobject.PDUtils.checkIdent;
+import static org.apache.pdfbox.pdmodel.graphics.xobject.PDUtils.colorCount;
 import static org.apache.pdfbox.pdmodel.graphics.xobject.PDUtils.createInterestingImage;
 import org.apache.pdfbox.util.ImageIOUtil;
 
@@ -88,7 +89,6 @@ public class PDJpegTest extends TestCase
 
         // this can be checked for ident, because the actual jpeg stream is stored
         PDUtils.checkIdent(image, ximage.getRGBImage());
-        
         assertNull(ximage.getSMaskImage());
 
         // This part isn't really needed because this test doesn't break
@@ -185,6 +185,7 @@ public class PDJpegTest extends TestCase
         PDJpeg ximage = new PDJpeg(document, awtImage);
         validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "jpg", PDDeviceRGB.NAME);
         validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "jpg", PDDeviceGray.NAME);
+        assertTrue(colorCount(ximage.getSMaskImage().getRGBImage()) > awtImage.getHeight() / 10);
 
         // This part isn't really needed because this test doesn't break
         // if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
@@ -224,6 +225,7 @@ public class PDJpegTest extends TestCase
         PDJpeg ximage = new PDJpeg(document, awtImage);
         validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "jpg", PDDeviceRGB.NAME);
         validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "jpg", PDDeviceGray.NAME);
+        assertTrue(colorCount(ximage.getSMaskImage().getRGBImage()) > awtImage.getHeight() / 10);
 
         // This part isn't really needed because this test doesn't break
         // if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful

Modified: pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMapTest.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMapTest.java?rev=1593416&r1=1593415&r2=1593416&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMapTest.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDPixelMapTest.java Thu May  8 20:52:03 2014
@@ -21,6 +21,7 @@ import java.awt.image.BufferedImage;
 import java.io.File;
 import java.io.IOException;
 import javax.imageio.ImageIO;
+import static junit.framework.Assert.assertTrue;
 import junit.framework.TestCase;
 import org.apache.pdfbox.exceptions.COSVisitorException;
 import org.apache.pdfbox.pdmodel.PDDocument;
@@ -28,6 +29,7 @@ import org.apache.pdfbox.pdmodel.PDPage;
 import org.apache.pdfbox.pdmodel.edit.PDPageContentStream;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
+import static org.apache.pdfbox.pdmodel.graphics.xobject.PDUtils.colorCount;
 import org.apache.pdfbox.util.ImageIOUtil;
 
 /**
@@ -144,8 +146,9 @@ public class PDPixelMapTest extends Test
 
         PDPixelMap ximage = new PDPixelMap(document, awtImage);
         validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceRGB.NAME);
-        validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceGray.NAME);
         checkIdent(awtImage, ximage.getRGBImage());
+        validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceGray.NAME);
+        assertTrue(colorCount(ximage.getSMaskImage().getRGBImage()) > awtImage.getHeight() / 10);
 
         // This part isn't really needed because this test doesn't break
         // if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
@@ -184,8 +187,9 @@ public class PDPixelMapTest extends Test
 
         PDPixelMap ximage = new PDPixelMap(document, awtImage);
         validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceRGB.NAME);
-        validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceGray.NAME);
         checkIdent(awtImage, ximage.getRGBImage());
+        validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceGray.NAME);
+        assertTrue(colorCount(ximage.getSMaskImage().getRGBImage()) > awtImage.getHeight() / 10);
 
         // This part isn't really needed because this test doesn't break
         // if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
@@ -216,8 +220,8 @@ public class PDPixelMapTest extends Test
 
         PDPixelMap ximage = new PDPixelMap(document, awtImage);
         validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceRGB.NAME);
-        assertNull(ximage.getSMaskImage());
         checkIdent(awtImage, ximage.getRGBImage());
+        assertNull(ximage.getSMaskImage());
 
         // This part isn't really needed because this test doesn't break
         // if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
@@ -248,8 +252,8 @@ public class PDPixelMapTest extends Test
 
         PDPixelMap ximage = new PDPixelMap(document, awtImage);
         validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceRGB.NAME);
-        assertNull(ximage.getSMaskImage());
         checkIdent(awtImage, ximage.getRGBImage());
+        assertNull(ximage.getSMaskImage());
 
         // This part isn't really needed because this test doesn't break
         // if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
@@ -267,43 +271,6 @@ public class PDPixelMapTest extends Test
         document.close();
     }
 
-//    /**
-//     * Tests RGB PDPixelMapTest() with TYPE_INT_ARGB image.
-//     *
-//     * @throws java.io.IOException
-//     * @throws org.apache.pdfbox.exceptions.COSVisitorException
-//     */
-//    public void testCreateLosslessPDFBOX1649() throws IOException, COSVisitorException
-//    {
-//        PDDocument document = new PDDocument();
-//        BufferedImage awtImage = ImageIO.read(new URL("https://issues.apache.org/jira/secure/attachment/12589433/test.png").openStream());
-//        
-//System.out.println ("PNG: " + awtImage);  
-//
-//ImageIO.write (awtImage, "png", new File(testResultsDir, "8.png"));        
-//        PDPixelMap ximage = new PDPixelMap(document, awtImage);
-//        validate(ximage, 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceRGB.NAME);
-//        validate(ximage.getSMaskImage(), 8, awtImage.getWidth(), awtImage.getHeight(), "png", PDDeviceGray.NAME);
-//ImageIO.write (ximage.getRGBImage(), "png", new File(testResultsDir, "91.png"));        
-//ImageIO.write (ximage.getSMaskImage().getRGBImage(), "png", new File(testResultsDir, "92.png"));        
-//
-//        // This part isn't really needed because this test doesn't break
-//        // if the mask has the wrong colorspace (PDFBOX-2057), but it is still useful
-//        // if something goes wrong in the future and we want to have a PDF to open.
-//        PDPage page = new PDPage(PDPage.PAGE_SIZE_A4);
-//        document.addPage(page);
-//        PDPageContentStream contentStream = new PDPageContentStream(document, page, true, false);
-//        contentStream.drawXObject(ximage, 0, 500, ximage.getWidth(), ximage.getHeight());
-//        //contentStream.drawXObject(ximage, 200, 350, ximage.getWidth(), ximage.getHeight());
-//        contentStream.close();
-//        File pdfFile = new File(testResultsDir, "PDFBOX1649.pdf");
-//        document.save(pdfFile);
-//        document.close();
-//        document = PDDocument.loadNonSeq(pdfFile, null);
-//        document.close();
-//
-//        checkIdent(awtImage, ximage.getRGBImage());
-//    }
     /**
      * Tests RGB PDPixelMapTest() with image from a color GIF
      *

Modified: pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDUtils.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDUtils.java?rev=1593416&r1=1593415&r2=1593416&view=diff
==============================================================================
--- pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDUtils.java (original)
+++ pdfbox/branches/1.8/pdfbox/src/test/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDUtils.java Thu May  8 20:52:03 2014
@@ -19,6 +19,8 @@ package org.apache.pdfbox.pdmodel.graphi
 import java.awt.Color;
 import java.awt.Graphics;
 import java.awt.image.BufferedImage;
+import java.util.HashSet;
+import java.util.Set;
 import static junit.framework.Assert.assertEquals;
 
 /**
@@ -68,4 +70,19 @@ public class PDUtils
         }
     }
 
+    static int colorCount(BufferedImage bim)
+    {
+        Set<Integer> colors = new HashSet<Integer>();
+        int w = bim.getWidth();
+        int h = bim.getHeight();
+        for (int y = 0; y < h; y++)
+        {
+            for (int x = 0; x < w; x++)
+            {
+                colors.add(bim.getRGB(x, y));
+            }
+        }
+        return colors.size();
+    }
+    
 }