You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by le...@apache.org on 2011/03/21 19:08:10 UTC

svn commit: r1083886 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: pdfviewer/PageDrawer.java pdmodel/graphics/PDExtendedGraphicsState.java pdmodel/graphics/PDGraphicsState.java

Author: lehmi
Date: Mon Mar 21 18:08:10 2011
New Revision: 1083886

URL: http://svn.apache.org/viewvc?rev=1083886&view=rev
Log:
PDFBOX-975: added shape transparency as proposed by Jesse Eichar

Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDExtendedGraphicsState.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDGraphicsState.java

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java?rev=1083886&r1=1083885&r2=1083886&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java Mon Mar 21 18:08:10 2011
@@ -273,6 +273,7 @@ public class PageDrawer extends PDFStrea
      */
     public void fillPath(int windingRule) throws IOException
     {
+        graphics.setComposite(getGraphicsState().getNonStrokeJavaComposite());
         graphics.setColor( getGraphicsState().getNonStrokingColor().getJavaColor() );
         getLinePath().setWindingRule(windingRule);
         graphics.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF );
@@ -311,7 +312,8 @@ public class PageDrawer extends PDFStrea
      */
     public void strokePath() throws IOException
     {
-        graphics.setColor( getGraphicsState().getStrokingColor().getJavaColor() ); 
+        graphics.setComposite(getGraphicsState().getStrokeJavaComposite());
+        graphics.setColor( getGraphicsState().getStrokingColor().getJavaColor() );
         graphics.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF );
         graphics.setClip(getGraphicsState().getCurrentClippingPath());
         GeneralPath path = getLinePath();

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDExtendedGraphicsState.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDExtendedGraphicsState.java?rev=1083886&r1=1083885&r2=1083886&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDExtendedGraphicsState.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDExtendedGraphicsState.java Mon Mar 21 18:08:10 2011
@@ -136,10 +136,11 @@ public class PDExtendedGraphicsState imp
             else if( key.equals( COSName.CA ) )
             {
                 gs.setAlphaConstants( getStrokingAlpaConstant().floatValue() );
-            }/**
-            else if( key.equals( CA_NS ) )
+            }
+            else if( key.equals( COSName.CA_NS ) )
             {
-            }**/
+                gs.setNonStrokeAlphaConstants(getNonStrokingAlpaConstant().floatValue() );
+            }
             else if( key.equals( COSName.AIS ) )
             {
                 gs.setAlphaSource( getAlphaSourceFlag() );

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDGraphicsState.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDGraphicsState.java?rev=1083886&r1=1083885&r2=1083886&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDGraphicsState.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDGraphicsState.java Mon Mar 21 18:08:10 2011
@@ -16,8 +16,7 @@
  */
 package org.apache.pdfbox.pdmodel.graphics;
 
-import java.awt.Rectangle;
-import java.awt.Shape;
+import java.awt.*;
 import java.awt.geom.GeneralPath;
 
 import org.apache.pdfbox.pdmodel.common.PDRectangle;
@@ -51,7 +50,8 @@ public class PDGraphicsState implements 
     private boolean strokeAdjustment = false;
     //blend mode
     //soft mask
-    private double alphaConstants = 0;
+    private double alphaConstants = 1.0;
+    private double nonStrokingAlphaConstants = 1.0;
     private boolean alphaSource = false;
 
     //DEVICE DEPENDENT parameters
@@ -209,9 +209,9 @@ public class PDGraphicsState implements 
     }
 
     /**
-     * Get the value of the alpha constants property.
+     * Get the value of the stroke alpha constants property.
      *
-     * @return The value of the alpha constants parameter.
+     * @return The value of the stroke alpha constants parameter.
      */
     public double getAlphaConstants()
     {
@@ -219,9 +219,9 @@ public class PDGraphicsState implements 
     }
 
     /**
-     * set the value of the alpha constants property.
+     * set the value of the stroke alpha constants property.
      *
-     * @param value The value of the alpha constants parameter.
+     * @param value The value of the stroke alpha constants parameter.
      */
     public void setAlphaConstants(double value)
     {
@@ -229,9 +229,29 @@ public class PDGraphicsState implements 
     }
 
     /**
-     * get the value of the alpha source property.
+     * Get the value of the non-stroke alpha constants property.
      *
-     * @return The value of the alpha source parameter.
+     * @return The value of the non-stroke alpha constants parameter.
+     */
+    public double getNonStrokeAlphaConstants()
+    {
+        return nonStrokingAlphaConstants;
+    }
+
+    /**
+     * set the value of the non-stroke alpha constants property.
+     *
+     * @param value The value of the non-stroke alpha constants parameter.
+     */
+    public void setNonStrokeAlphaConstants(double value)
+    {
+        nonStrokingAlphaConstants = value;
+    }
+
+    /**
+     * get the value of the stroke alpha source property.
+     *
+     * @return The value of the stroke alpha source parameter.
      */
     public boolean isAlphaSource()
     {
@@ -475,4 +495,13 @@ public class PDGraphicsState implements 
         return currentClippingPath;
     }
 
+    public Composite getStrokeJavaComposite() {
+
+        return AlphaComposite.getInstance(AlphaComposite.SRC_OVER, (float) alphaConstants);
+    }
+
+    public Composite getNonStrokeJavaComposite() {
+
+        return AlphaComposite.getInstance(AlphaComposite.SRC_OVER, (float) nonStrokingAlphaConstants);
+    }
 }