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 2012/01/24 19:07:11 UTC

svn commit: r1235384 - in /pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox: pdfviewer/ pdmodel/graphics/shading/ util/operator/pagedrawer/

Author: lehmi
Date: Tue Jan 24 18:07:11 2012
New Revision: 1235384

URL: http://svn.apache.org/viewvc?rev=1235384&view=rev
Log:
PDFBOX-615: added implementation of an axial shading to be used with sh operator

Added:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingPaint.java
Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType2.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SHFill.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=1235384&r1=1235383&r2=1235384&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 Tue Jan 24 18:07:11 2012
@@ -21,6 +21,7 @@ import java.awt.Color;
 import java.awt.Dimension;
 import java.awt.Graphics;
 import java.awt.Graphics2D;
+import java.awt.Paint;
 import java.awt.geom.Area;
 import java.awt.RenderingHints;
 import java.awt.geom.AffineTransform;
@@ -40,6 +41,9 @@ import org.apache.pdfbox.pdmodel.common.
 import org.apache.pdfbox.pdmodel.font.PDFont;
 import org.apache.pdfbox.pdmodel.graphics.PDGraphicsState;
 import org.apache.pdfbox.pdmodel.graphics.PDShading;
+import org.apache.pdfbox.pdmodel.graphics.shading.AxialShadingPaint;
+import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingResources;
+import org.apache.pdfbox.pdmodel.graphics.shading.PDShadingType2;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceDictionary;
 import org.apache.pdfbox.pdmodel.interactive.annotation.PDAppearanceStream;
@@ -49,7 +53,6 @@ import org.apache.pdfbox.util.PDFStreamE
 import org.apache.pdfbox.util.ResourceLoader;
 import org.apache.pdfbox.util.TextPosition;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.cos.COSDictionary;
 
 
 /**
@@ -64,10 +67,16 @@ public class PageDrawer extends PDFStrea
     /**
      * Log instance.
      */
-    private static final Log log = LogFactory.getLog(PageDrawer.class);
+    private static final Log LOG = LogFactory.getLog(PageDrawer.class);
 
     private Graphics2D graphics;
+    /**
+     * Size of the page.
+     */
     protected Dimension pageSize;
+    /**
+     * Current page to be rendered.
+     */
     protected PDPage page;
 
     private GeneralPath linePath = new GeneralPath();
@@ -120,7 +129,8 @@ public class PageDrawer extends PDFStrea
                     appearanceName = "default";
                 }
                 Map appearanceMap = appearDictionary.getNormalAppearance();
-                if (appearanceMap != null) { 
+                if (appearanceMap != null) 
+                { 
                     PDAppearanceStream appearance = 
                         (PDAppearanceStream)appearanceMap.get( appearanceName ); 
                     if( appearance != null ) 
@@ -145,7 +155,8 @@ public class PageDrawer extends PDFStrea
     {
         try
         {
-            switch(this.getGraphicsState().getTextState().getRenderingMode()) {
+            switch(this.getGraphicsState().getTextState().getRenderingMode()) 
+            {
                 case PDTextState.RENDERING_MODE_FILL_TEXT:
                     graphics.setComposite( this.getGraphicsState().getNonStrokeJavaComposite() );
                     graphics.setColor( this.getGraphicsState().getNonStrokingColor().getJavaColor() );
@@ -164,7 +175,7 @@ public class PageDrawer extends PDFStrea
                     break;
                 default:
                     // TODO : need to implement....
-                    log.debug("Unsupported RenderingMode "
+                    LOG.debug("Unsupported RenderingMode "
                             + this.getGraphicsState().getTextState().getRenderingMode()
                             + " in PageDrawer.processTextPosition()."
                             + " Using RenderingMode "
@@ -286,7 +297,7 @@ public class PageDrawer extends PDFStrea
         }
         else 
         {
-            log.info("ColorSpace "+getGraphicsState().getNonStrokingColor().getColorSpace().getName()
+            LOG.info("ColorSpace "+getGraphicsState().getNonStrokingColor().getColorSpace().getName()
                     +" doesn't provide a non-stroking color, using white instead!");
             graphics.setColor( Color.WHITE );
         }
@@ -335,9 +346,9 @@ public class PageDrawer extends PDFStrea
         }
         else 
         {
-            log.info("ColorSpace "+getGraphicsState().getStrokingColor().getColorSpace().getName()
-                    +" doesn't provide a stroking color, using black instead!");
-            graphics.setColor( Color.BLACK );
+            LOG.info("ColorSpace "+getGraphicsState().getStrokingColor().getColorSpace().getName()
+                    +" doesn't provide a stroking color, using white instead!");
+            graphics.setColor( Color.WHITE );
         }
         graphics.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF );
         graphics.setClip(getGraphicsState().getCurrentClippingPath());
@@ -407,7 +418,8 @@ public class PageDrawer extends PDFStrea
      * @param at The transformation to use when drawing.
      * 
      */
-    public void drawImage(Image awtImage, AffineTransform at){
+    public void drawImage(Image awtImage, AffineTransform at)
+    {
         graphics.setComposite(getGraphicsState().getStrokeJavaComposite());
         graphics.setClip(getGraphicsState().getCurrentClippingPath());
         graphics.drawImage( awtImage, at, null );
@@ -419,61 +431,56 @@ public class PageDrawer extends PDFStrea
      * @param ShadingName  The name of the Shading Dictionary to use for this fill instruction.
      *
      * @throws IOException If there is an IO error while shade-filling the path/clipping area.
+     * 
+     * @deprecated use {@link #shFill(COSName)) instead.
      */
     public void SHFill(COSName ShadingName) throws IOException
     {
-        PDShading Shading =FindShadingDictionary(ShadingName);
-        log.info("Shading = " + Shading.toString());
-        
-        switch (Shading.getShadingType()){
+        shFill(ShadingName);
+    }
+    
+    /**
+     * Fill with Shading.  Called by SHFill operator.
+     *
+     * @param shadingName  The name of the Shading Dictionary to use for this fill instruction.
+     *
+     * @throws IOException If there is an IO error while shade-filling the clipping area.
+     */
+    public void shFill(COSName shadingName) throws IOException
+    {
+        PDShadingResources shading = getResources().getShadings().get(shadingName.getName());
+        LOG.debug("Shading = " + shading.toString());
+        int shadingType = shading.getShadingType();
+        Matrix ctm = getGraphicsState().getCurrentTransformationMatrix();
+        Paint paint = null;
+        switch (shadingType)
+        {
             case 1:
-                SHFill_Function(Shading);
+                // TODO
+                LOG.debug("Function based shading not yet supported");
             break;
             case 2:
-                SHFill_Axial(Shading);
+                paint = new AxialShadingPaint((PDShadingType2)shading, ctm, pageSize);
                 break;
             case 3:
-                SHFill_Radial(Shading);
+                // TODO
+                LOG.debug("Radial shading not yet supported");
                 break;
             case 4:
-                SHFill_FreeGourad(Shading);
-                break;
             case 5:
-                SHFill_LatticeGourad(Shading);
-                break;
             case 6:
-                SHFill_CoonsPatch(Shading);
-                break;
             case 7:
-                SHFill_TensorPatch(Shading);
+                // TODO
+                LOG.debug("Shading type "+shadingType+" not yet supported");
                 break;
-            
             default:
-                throw new IOException("Invalid ShadingType " + Shading.getShadingType() + " for Shading " + ShadingName);
+                throw new IOException("Invalid ShadingType " + shadingType + " for Shading " + shadingName);
         }
+        graphics.setComposite(getGraphicsState().getNonStrokeJavaComposite());
+        graphics.setPaint(paint);
+        graphics.setRenderingHint( RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_OFF );
+        graphics.fill( getGraphicsState().getCurrentClippingPath() );
     }
-    
-    /**
-     * Find the appropriate Shading Dictionary. This is its own private function as it is really not appropriate to override when deriving from PageDrawer.
-     *
-     * @param ShadingName  The name of the Shading Dictionary to use for this fill instruction.
-     *
-     * @returns The PDShading object
-     * @throws IOException If there is an IO error while attempting to find the appropriate PDShading object.
-     */
-    private PDShading FindShadingDictionary(COSName ShadingName) throws IOException
-    {
-        
-        PDResources resources = (PDResources)page.getResources();
-                
-        COSDictionary AllShadings = (COSDictionary)(resources.getCOSDictionary().getDictionaryObject(COSName.SHADING));
-        
-        PDShading Shading = new PDShading(ShadingName, (COSDictionary)(AllShadings.getDictionaryObject(ShadingName)));
-        
-        return Shading;
-        
-    }
-    
     /**
      * Fill with a Function-based gradient / shading.  
      * If extending the class, override this and its siblings, not the public SHFill method.

Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java?rev=1235384&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingContext.java Tue Jan 24 18:07:11 2012
@@ -0,0 +1,236 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.pdmodel.graphics.shading;
+
+import java.awt.Dimension;
+import java.awt.PaintContext;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Point2D;
+import java.awt.image.ColorModel;
+import java.awt.image.Raster;
+import java.awt.image.WritableRaster;
+import java.io.IOException;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.pdfbox.cos.COSArray;
+import org.apache.pdfbox.cos.COSBoolean;
+import org.apache.pdfbox.pdmodel.common.function.PDFunction;
+import org.apache.pdfbox.util.Matrix;
+
+/**
+ * This class represents the PaintContext of an axial shading.
+ * 
+ * @author lehmi
+ * @version $Revision: $
+ * 
+ */
+public class AxialShadingContext implements PaintContext 
+{
+
+    private ColorModel colorModel;
+    private PDFunction function;
+    private Point2D startingPoint;
+    private Point2D endingPoint;
+
+    private float[] domain;
+    private boolean[] extend;
+    private double x1x0; 
+    private double y1y0;
+    private float d1d0;
+    private double denom;
+
+    /**
+     * Log instance.
+     */
+    private static final Log LOG = LogFactory.getLog(AxialShadingContext.class);
+
+    /**
+     * Constructor.
+     * 
+     * @param shadingType2 the shading type to be used
+     * @param colorModelValue the color model to be used
+     * @param xform transformation for user to device space
+     * @param ctm current transformation matrix
+     * @param pageSize size of the current page
+     * 
+     */
+    public AxialShadingContext(PDShadingType2 shadingType2, ColorModel colorModelValue, 
+            AffineTransform xform, Matrix ctm, Dimension pageSize) 
+    {
+        // colorModel
+        if (colorModelValue != null)
+        {
+            colorModel = colorModelValue;
+        }
+        else
+        {
+            try
+            {
+                // TODO bpc != 8 ??  
+                colorModel = shadingType2.getColorSpace().createColorModel(8);
+            }
+            catch(IOException exception)
+            {
+                LOG.error("error while creating colorModel", exception);
+            }
+        }
+        // shading function
+        try
+        {
+            function = shadingType2.getFunction();
+        }
+        catch(IOException exception)
+        {
+            LOG.error("error while creating a function", exception);
+        }
+        
+        float yScaling = ctm.getYScale();
+        float angle = (float)Math.acos(ctm.getValue(0, 0)/ctm.getXScale());
+        if (ctm.getValue(0, 1) < 0 && ctm.getValue(1, 0) > 0)
+        {
+            angle = (-1)*angle;
+        }
+        ctm.setValue(2, 1, (float)(pageSize.height - ctm.getYPosition() - Math.cos(angle)*yScaling));
+        ctm.setValue(2, 0, (float)(ctm.getXPosition() - Math.sin(angle)*yScaling));
+        // because of the moved 0,0-reference, we have to shear in the opposite direction
+        ctm.setValue(0, 1, (-1)*ctm.getValue(0, 1));
+        ctm.setValue(1, 0, (-1)*ctm.getValue(1, 0));
+
+        // create startingPoint
+        float[] coords = shadingType2.getCoords().toFloatArray();
+        startingPoint = new Point2D.Float(coords[0], coords[1]);
+        startingPoint = ctm.createAffineTransform().transform(startingPoint, null);
+        startingPoint = xform.transform(startingPoint, null);
+        // create endingPoint
+        endingPoint = new Point2D.Float(coords[2], coords[3]);
+        endingPoint = ctm.createAffineTransform().transform(endingPoint, null);
+        endingPoint = xform.transform(endingPoint, null);
+        // domain values
+        if (shadingType2.getDomain() != null)
+        {
+            domain = shadingType2.getDomain().toFloatArray();
+        }
+        else 
+        {
+            // set default values
+            domain = new float[]{0,1};
+        }
+        // extend values
+        COSArray extendValues = shadingType2.getExtend();
+        if (shadingType2.getExtend() != null)
+        {
+            extend = new boolean[2];
+            extend[0] = ((COSBoolean)extendValues.get(0)).getValue();
+            extend[1] = ((COSBoolean)extendValues.get(1)).getValue();
+        }
+        else
+        {
+            // set default values
+            extend = new boolean[]{false,false};
+        }
+        // calculate some constants to be used in getRaster
+        x1x0 = endingPoint.getX() - startingPoint.getX(); 
+        y1y0 = endingPoint.getY() - startingPoint.getY();
+        d1d0 = domain[1]-domain[0];
+        denom = Math.pow(x1x0,2) + Math.pow(y1y0, 2);
+        // TODO take a possible Background value into account
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    public void dispose() 
+    {
+        colorModel = null;
+        function = null;
+        startingPoint = null;
+        endingPoint = null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public ColorModel getColorModel() 
+    {
+        return colorModel;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Raster getRaster(int x, int y, int w, int h) 
+    {
+        // create writable raster
+        WritableRaster raster = getColorModel().createCompatibleWritableRaster(w, h);
+        
+        float[] input = new float[1];
+        int[] data = new int[w * h * 3];
+        for (int j = 0; j < h; j++) 
+        {
+            for (int i = 0; i < w; i++) 
+            {
+                double inputValue = x1x0 * (x + i - startingPoint.getX()); 
+                inputValue += y1y0 * (y + j - startingPoint.getY());
+                inputValue /= denom;
+                // input value is out of range
+                if (inputValue < domain[0])
+                {
+                    // the shading has to be extended if extend[0] == true
+                    if (extend[0])
+                    {
+                        inputValue = domain[0];
+                    }
+                    else 
+                    {
+                        continue;
+                    }
+                }
+                // input value is out of range
+                else if (inputValue > domain[1])
+                {
+                    // the shading has to be extended if extend[1] == true
+                    if (extend[1])
+                    {
+                        inputValue = domain[1];
+                    }
+                    else 
+                    {
+                        continue;
+                    }
+                }
+                input[0] = (float)(domain[0] + (d1d0*inputValue));
+                float[] values = null;
+                try 
+                {
+                    values = function.eval(input);
+                } 
+                catch (IOException exception) 
+                {
+                    LOG.error("error while processing a function", exception);
+                }
+                int index = (j * w + i) * 3;
+                data[index] = (int)(values[0]*255);
+                data[index+1] = (int)(values[1]*255);
+                data[index+2] = (int)(values[2]*255);
+            }
+        }
+        raster.setPixels(0, 0, w, h, data);
+        return raster;
+    }
+
+}

Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingPaint.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingPaint.java?rev=1235384&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingPaint.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/AxialShadingPaint.java Tue Jan 24 18:07:11 2012
@@ -0,0 +1,75 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.pdfbox.pdmodel.graphics.shading;
+
+import java.awt.Dimension;
+import java.awt.Paint;
+import java.awt.PaintContext;
+import java.awt.Rectangle;
+import java.awt.RenderingHints;
+import java.awt.geom.AffineTransform;
+import java.awt.geom.Rectangle2D;
+import java.awt.image.ColorModel;
+
+import org.apache.pdfbox.util.Matrix;
+
+/**
+ * This represents the Paint of an axial shading.
+ * 
+ * @author lehmi
+ * @version $Revision: $
+ * 
+ */
+public class AxialShadingPaint implements Paint 
+{
+
+    private PDShadingType2 shading;
+    private Matrix currentTransformationMatrix;
+    private Dimension pageSize;
+    
+    /**
+     * Constructor.
+     * 
+     * @param shadingType2 the shading resources
+     * @param ctm current transformation matrix
+     * @param pageSizeValue size of the current page
+     */
+    public AxialShadingPaint(PDShadingType2 shadingType2, Matrix ctm, Dimension pageSizeValue) 
+    {
+        shading = shadingType2;
+        currentTransformationMatrix = ctm;
+        pageSize = pageSizeValue;
+    }
+    
+    /**
+     * {@inheritDoc}
+     */
+    public int getTransparency() 
+    {
+        return 0;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public PaintContext createContext(ColorModel cm, Rectangle deviceBounds,
+            Rectangle2D userBounds, AffineTransform xform, RenderingHints hints) 
+    {
+        return new AxialShadingContext(shading, cm, xform, currentTransformationMatrix, pageSize);
+    }
+
+}

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType2.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType2.java?rev=1235384&r1=1235383&r2=1235384&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType2.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/shading/PDShadingType2.java Tue Jan 24 18:07:11 2012
@@ -77,8 +77,15 @@ public class PDShadingType2 extends PDSh
      */
     public void setExtend(COSArray newExtend)
     {
-        this.extend = domain;
-        getCOSDictionary().setItem(COSName.EXTEND, newExtend);
+        extend = newExtend;
+        if (newExtend == null)
+        {
+            getCOSDictionary().removeItem(COSName.EXTEND);
+        }
+        else
+        {
+            getCOSDictionary().setItem(COSName.EXTEND, newExtend);
+        }
     }
 
     /**
@@ -102,8 +109,15 @@ public class PDShadingType2 extends PDSh
      */
     public void setDomain(COSArray newDomain)
     {
-        this.domain = newDomain;
-        getCOSDictionary().setItem(COSName.DOMAIN, newDomain);
+        domain = newDomain;
+        if (newDomain == null)
+        {
+            getCOSDictionary().removeItem(COSName.DOMAIN);
+        }
+        else 
+        {
+            getCOSDictionary().setItem(COSName.DOMAIN, newDomain);
+        }
     }
 
     /**
@@ -127,8 +141,15 @@ public class PDShadingType2 extends PDSh
      */
     public void setCoords(COSArray newCoords)
     {
-        this.coords = newCoords;
-        getCOSDictionary().setItem(COSName.COORDS, newCoords);
+        coords = newCoords;
+        if (newCoords == null)
+        {
+            getCOSDictionary().removeItem(COSName.COORDS);
+        }
+        else
+        {
+            getCOSDictionary().setItem(COSName.COORDS, newCoords);
+        }
     }
     
     /**
@@ -138,8 +159,15 @@ public class PDShadingType2 extends PDSh
      */
     public void setFunction(PDFunction newFunction)
     {
-        this.function = newFunction;
-        getCOSDictionary().setItem(COSName.FUNCTION, newFunction);
+        function = newFunction;
+        if (newFunction == null)
+        {
+            getCOSDictionary().removeItem(COSName.FUNCTION);
+        }
+        else
+        {
+            getCOSDictionary().setItem(COSName.FUNCTION, newFunction);
+        }
     }
 
     /**

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SHFill.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SHFill.java?rev=1235384&r1=1235383&r2=1235384&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SHFill.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SHFill.java Tue Jan 24 18:07:11 2012
@@ -16,7 +16,6 @@
  */
 package org.apache.pdfbox.util.operator.pagedrawer;
 
-import java.awt.geom.GeneralPath;
 import java.io.IOException;
 import java.util.List;
 
@@ -41,10 +40,10 @@ public class SHFill extends OperatorProc
     /**
      * Log instance.
      */
-    private static final Log log = LogFactory.getLog(SHFill.class);
+    private static final Log LOG = LogFactory.getLog(SHFill.class);
 
     /**
-     * process : sh : shade fill the path or clipping area.
+     * process : sh : shade fill the clipping area.
      * @param operator The operator that is being executed.
      * @param arguments List
      *
@@ -55,12 +54,11 @@ public class SHFill extends OperatorProc
         try 
         {
             PageDrawer drawer = (PageDrawer)context;
-            drawer.SHFill((COSName)(arguments.get(0)));
-            
+            drawer.shFill((COSName)(arguments.get(0)));
         } 
         catch (Exception e) 
         {
-            log.warn(e, e);
+            LOG.warn(e, e);
         }
     }
 }