Author: tilman
Date: Wed Dec 10 11:29:48 2025
New Revision: 1930425

Log:
PDFBOX-5660: optimize, as suggested by Valery Bokov, closes #368

Modified:
   
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java

Modified: 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
==============================================================================
--- 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
        Wed Dec 10 11:29:43 2025        (r1930424)
+++ 
pdfbox/branches/2.0/pdfbox/src/main/java/org/apache/pdfbox/rendering/PageDrawer.java
        Wed Dec 10 11:29:48 2025        (r1930425)
@@ -683,12 +683,13 @@ public class PageDrawer extends PDFGraph
             return parentPaint;
         }
         PDColor backdropColor = null;
-        if (COSName.LUMINOSITY.equals(softMask.getSubType()))
+        COSName subType = softMask.getSubType();
+        PDTransparencyGroup form = softMask.getGroup();
+        if (COSName.LUMINOSITY.equals(subType))
         {
             COSArray backdropColorArray = softMask.getBackdropColor();
             if (backdropColorArray != null)
             {
-                PDTransparencyGroup form = softMask.getGroup();
                 PDColorSpace colorSpace = 
form.getGroup().getColorSpace(form.getResources());
                 if (colorSpace != null &&
                     colorSpace.getNumberOfComponents() == 
backdropColorArray.size()) // PDFBOX-5795
@@ -697,7 +698,7 @@ public class PageDrawer extends PDFGraph
                 }
             }
         }
-        TransparencyGroup transparencyGroup = new 
TransparencyGroup(softMask.getGroup(), true, 
+        TransparencyGroup transparencyGroup = new TransparencyGroup(form, 
true, 
                 softMask.getInitialTransformationMatrix(), backdropColor);
         BufferedImage image = transparencyGroup.getImage();
         if (image == null)
@@ -707,11 +708,11 @@ public class PageDrawer extends PDFGraph
             return parentPaint;
         }
         BufferedImage gray = new BufferedImage(image.getWidth(), 
image.getHeight(), BufferedImage.TYPE_BYTE_GRAY);
-        if (COSName.ALPHA.equals(softMask.getSubType()))
+        if (COSName.ALPHA.equals(subType))
         {
             gray.setData(image.getAlphaRaster());
         }
-        else if (COSName.LUMINOSITY.equals(softMask.getSubType()))
+        else if (COSName.LUMINOSITY.equals(subType))
         {
             Graphics g = gray.getGraphics();
             g.drawImage(image, 0, 0, null);
@@ -719,7 +720,7 @@ public class PageDrawer extends PDFGraph
         }
         else
         {
-            throw new IOException("Invalid soft mask subtype.");
+            throw new IOException("Invalid soft mask subtype: " + subType);
         }
         gray = adjustImage(gray);
         Rectangle2D tpgBounds = transparencyGroup.getBounds();

Reply via email to