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 2018/08/18 15:08:25 UTC

svn commit: r1838334 - /pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java

Author: tilman
Date: Sat Aug 18 15:08:25 2018
New Revision: 1838334

URL: http://svn.apache.org/viewvc?rev=1838334&view=rev
Log:
PDFBOX-4267: refactor matte extraction into method

Modified:
    pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java

Modified: pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java
URL: http://svn.apache.org/viewvc/pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java?rev=1838334&r1=1838333&r2=1838334&view=diff
==============================================================================
--- pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java (original)
+++ pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/image/PDImageXObject.java Sat Aug 18 15:08:25 2018
@@ -447,28 +447,7 @@ public final class PDImageXObject extend
         PDImageXObject softMask = getSoftMask();
         if (softMask != null)
         {
-            COSBase base = softMask.getCOSObject().getItem(COSName.MATTE);
-            float[] matte = null;
-            if (base instanceof COSArray)
-            {
-                // PDFBOX-4267: process /Matte
-                // see PDF specification 1.7, 11.6.5.3 Soft-Mask Images
-                matte = ((COSArray) base).toFloatArray();
-                if (getColorSpace().getNumberOfComponents() == 1 &&
-                    matte.length >= 1)
-                {
-                    // /DeviceGray has only one element in Matte
-                    // See file from PDFBOX-1359, page 14
-                    // Root/Pages/Kids/[2]/Kids/[2]/Resources/XObject/Im1/Resources/XObject/Im0
-                    matte = new float[] { matte[0], matte[0], matte[0] };
-                }
-                if (matte.length != 3)
-                {
-                    LOG.warn("/Matte entry " + Arrays.toString(matte) + 
-                             " for Soft-Mask may not work properly");
-                    matte = Arrays.copyOf(matte, 3);
-                }
-            }
+            float[] matte = extractMatte(softMask);
             image = applyMask(image, softMask.getOpaqueImage(), true, matte);
         }
         else
@@ -492,6 +471,33 @@ public final class PDImageXObject extend
         return image;
     }
 
+    private float[] extractMatte(PDImageXObject softMask) throws IOException
+    {
+        COSBase base = softMask.getCOSObject().getItem(COSName.MATTE);
+        float[] matte = null;
+        if (base instanceof COSArray)
+        {
+            // PDFBOX-4267: process /Matte
+            // see PDF specification 1.7, 11.6.5.3 Soft-Mask Images
+            matte = ((COSArray) base).toFloatArray();
+            if (getColorSpace().getNumberOfComponents() == 1 &&
+                    matte.length >= 1)
+            {
+                // /DeviceGray has only one element in Matte
+                // See file from PDFBOX-1359, page 14
+                // Root/Pages/Kids/[2]/Kids/[2]/Resources/XObject/Im1/Resources/XObject/Im0
+                matte = new float[] { matte[0], matte[0], matte[0] };
+            }
+            if (matte.length != 3)
+            {
+                LOG.warn("/Matte entry " + Arrays.toString(matte) +
+                        " for Soft-Mask may not work properly");
+                matte = Arrays.copyOf(matte, 3);
+            }
+        }
+        return matte;
+    }
+
     /**
      * {@inheritDoc}
      * The returned images are not cached.