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); + } }