Author: lehmi
Date: Sun Jan 13 10:29:32 2013
New Revision: 1432578

URL: http://svn.apache.org/viewvc?rev=1432578&view=rev
Log:
PDFBOX-1491: avoid NPE if an image mask uses colour key masking

Modified:
    
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java

Modified: 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
URL: 
http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java?rev=1432578&r1=1432577&r2=1432578&view=diff
==============================================================================
--- 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
 (original)
+++ 
pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/xobject/PDXObjectImage.java
 Sun Jan 13 10:29:32 2013
@@ -175,20 +175,30 @@ public abstract class PDXObjectImage ext
     public BufferedImage mask(BufferedImage baseImage) 
        throws IOException
     {
-       PDXObjectImage maskImageRef = 
(PDXObjectImage)PDXObject.createXObject(getMask());
-       BufferedImage maskImage = maskImageRef.getRGBImage();
-               if(maskImage == null)
-               {
-                        LOG.warn("masking getRGBImage returned NULL");
-                        return baseImage;
-               }
-        
-                BufferedImage newImage = new BufferedImage( 
maskImage.getWidth(), maskImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
-                Graphics2D graphics = (Graphics2D)newImage.getGraphics();
-                graphics.drawImage(baseImage, 0, 0, maskImage.getWidth(), 
maskImage.getHeight(), 0, 0, baseImage.getWidth(), baseImage.getHeight(), 
null);   
-                graphics.setComposite(AlphaComposite.DstIn);
-                graphics.drawImage(maskImage, null, 0, 0);
-                return newImage;
+        COSBase mask = getMask();
+        if (mask instanceof COSStream)
+        {
+               PDXObjectImage maskImageRef = 
(PDXObjectImage)PDXObject.createXObject((COSStream)mask);
+               BufferedImage maskImage = maskImageRef.getRGBImage();
+                       if(maskImage == null)
+                       {
+                        LOG.warn("masking getRGBImage returned NULL");
+                        return baseImage;
+                       }
+                
+                BufferedImage newImage = new BufferedImage( 
maskImage.getWidth(), maskImage.getHeight(), BufferedImage.TYPE_INT_ARGB);
+                Graphics2D graphics = (Graphics2D)newImage.getGraphics();
+                graphics.drawImage(baseImage, 0, 0, maskImage.getWidth(), 
maskImage.getHeight(), 0, 0, baseImage.getWidth(), baseImage.getHeight(), 
null);   
+                graphics.setComposite(AlphaComposite.DstIn);
+                graphics.drawImage(maskImage, null, 0, 0);
+                return newImage;
+        }
+        else
+        {
+            // TODO Colour key masking
+            LOG.warn("Colour key masking isn't supported");
+            return baseImage;
+        }
     }
 
     /**


Reply via email to