You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ja...@apache.org on 2014/02/25 07:31:53 UTC

svn commit: r1571581 - in /pdfbox/trunk/pdfbox/src/main: java/org/apache/pdfbox/pdfviewer/ java/org/apache/pdfbox/pdmodel/documentinterchange/prepress/ java/org/apache/pdfbox/pdmodel/graphics/ java/org/apache/pdfbox/pdmodel/interactive/annotation/ java...

Author: jahewson
Date: Tue Feb 25 06:31:52 2014
New Revision: 1571581

URL: http://svn.apache.org/r1571581
Log:
PDFBOX-1939: Store all stroke information in the graphics state

Removed:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SetLineCapStyle.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SetLineDashPattern.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SetLineJoinStyle.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SetLineMiterLimit.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SetLineWidth.java
Modified:
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdfviewer/PageDrawer.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/prepress/PDBoxStyle.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
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDLineDashPattern.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDBorderStyleDictionary.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetLineMiterLimit.java
    pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetLineWidth.java
    pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/PageDrawer.properties

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=1571581&r1=1571580&r2=1571581&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 Feb 25 06:31:52 2014
@@ -65,6 +65,7 @@ import org.apache.pdfbox.pdmodel.font.PD
 import org.apache.pdfbox.pdmodel.font.PDType1Font;
 import org.apache.pdfbox.pdmodel.font.PDType3Font;
 import org.apache.pdfbox.pdmodel.graphics.PDGraphicsState;
+import org.apache.pdfbox.pdmodel.graphics.PDLineDashPattern;
 import org.apache.pdfbox.pdmodel.graphics.PDShading;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
@@ -103,8 +104,6 @@ public class PageDrawer extends PDFStrea
 
     private GeneralPath linePath = new GeneralPath();
 
-    private BasicStroke stroke = null;
-
     private Map<PDFont, Glyph2D> fontGlyph2D = new HashMap<PDFont, Glyph2D>();
     private Map<PDFont, Font> awtFonts = new HashMap<PDFont, Font>();
 
@@ -137,8 +136,9 @@ public class PageDrawer extends PDFStrea
         graphics.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_ON);
         graphics.translate(0, pageHeight);
         graphics.scale(1, -1);
-        // initialize the used stroke with CAP_BUTT instead of CAP_SQUARE
+        // TODO use getStroke() to set the initial stroke
         graphics.setStroke(new BasicStroke(1.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER));
+
         // Only if there is some content, we have to process it.
         // Otherwise we are done here and we will produce an empty page
         if (page.getContents() != null)
@@ -146,6 +146,7 @@ public class PageDrawer extends PDFStrea
             PDResources resources = page.findResources();
             processStream(resources, page.getContents().getStream(), page.findCropBox(), page.findRotation());
         }
+
         List<PDAnnotation> annotations = page.getAnnotations();
         for (int i = 0; i < annotations.size(); i++)
         {
@@ -588,16 +589,6 @@ public class PageDrawer extends PDFStrea
     }
 
     /**
-     * Get the graphics that we are currently drawing on.
-     * 
-     * @return The graphics we are drawing on.
-     */
-    public Graphics2D getGraphics()
-    {
-        return graphics;
-    }
-
-    /**
      * Get the current line path to be drawn.
      * 
      * @return The current line path to be drawn.
@@ -649,83 +640,61 @@ public class PageDrawer extends PDFStrea
         getLinePath().reset();
     }
 
-    // returns the stroking AWT Paint.
+    // returns the stroking AWT Paint
     private Paint getStrokingPaint() throws IOException
     {
         return getGraphicsState().getStrokingColorSpace()
                 .toPaint(getGraphicsState().getStrokingColor(), pageHeight);
     }
 
-    // returns the non-stroking AWT Paint.
+    // returns the non-stroking AWT Paint
     private Paint getNonStrokingPaint() throws IOException
     {
         return getGraphicsState().getNonStrokingColorSpace()
                 .toPaint(getGraphicsState().getNonStrokingColor(), pageHeight);
     }
 
-    /**
-     * This will set the current stroke.
-     * 
-     * @param newStroke The current stroke.
-     * 
-     */
-    public void setStroke(BasicStroke newStroke)
+    // create a new stroke based on the current CTM and the current stroke
+    private BasicStroke getStroke()
     {
-        stroke = newStroke;
-    }
+        PDGraphicsState state = getGraphicsState();
+        float lineWidth = state.getLineWidth();
 
-    /**
-     * This will return the current stroke.
-     * 
-     * @return The current stroke.
-     * 
-     */
-    public BasicStroke getStroke()
-    {
-        return stroke;
-    }
-
-    /**
-     * Create a new stroke based on the current ctm and the current stroke.
-     * 
-     * @return the transformed stroke
-     */
-    private BasicStroke calculateStroke()
-    {
-        float lineWidth = (float)getGraphicsState().getLineWidth();
+        // apply the CTM
         Matrix ctm = getGraphicsState().getCurrentTransformationMatrix();
         if (ctm != null && ctm.getXScale() > 0)
         {
             lineWidth = lineWidth * ctm.getXScale();
         }
+
+        // minimum line width as used by Adobe Reader
         if (lineWidth < 0.25)
         {
             lineWidth = 0.25f;
         }
-        BasicStroke currentStroke = null;
-        if (stroke == null)
-        {
-            currentStroke = new BasicStroke(lineWidth);
-        }
-        else
+
+        PDLineDashPattern dashPattern = state.getLineDashPattern();
+        int phaseStart = dashPattern.getPhase();
+        float[] dashArray = dashPattern.getDashArray();
+        if (dashArray != null)
         {
-            float phaseStart = stroke.getDashPhase();
-            float[] dashArray = stroke.getDashArray();
-            if (dashArray != null)
+            if (ctm != null && ctm.getXScale() > 0)
             {
-                if (ctm != null && ctm.getXScale() > 0)
+                for (int i = 0; i < dashArray.length; ++i)
                 {
-                    for (int i = 0; i < dashArray.length; ++i)
-                    {
-                        dashArray[i] *= ctm.getXScale();
-                    }
+                    dashArray[i] *= ctm.getXScale();
                 }
                 phaseStart *= ctm.getXScale();
+
+                // empty dash array is illegal
+                if (dashArray.length == 0)
+                {
+                    dashArray = null;
+                }
             }
-            currentStroke = new BasicStroke(lineWidth, stroke.getEndCap(), stroke.getLineJoin(),
-                    stroke.getMiterLimit(), dashArray, phaseStart);
         }
-        return currentStroke;
+        return new BasicStroke(lineWidth, state.getLineCap(), state.getLineJoin(),
+                               state.getMiterLimit(), dashArray, phaseStart);
     }
 
     /**
@@ -744,7 +713,7 @@ public class PageDrawer extends PDFStrea
             strokingPaint = Color.WHITE;
         }
         graphics.setPaint(strokingPaint);
-        graphics.setStroke(calculateStroke());
+        graphics.setStroke(getStroke());
         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/documentinterchange/prepress/PDBoxStyle.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/prepress/PDBoxStyle.java?rev=1571581&r1=1571580&r2=1571581&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/prepress/PDBoxStyle.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/documentinterchange/prepress/PDBoxStyle.java Tue Feb 25 06:31:52 2014
@@ -191,14 +191,14 @@ public class PDBoxStyle implements COSOb
     /**
      * Set the line dash pattern associated with this box style.
      *
-     * @param pattern The patter for this box style.
+     * @param dashArray The patter for this box style.
      */
-    public void setLineDashPattern( PDLineDashPattern pattern )
+    public void setLineDashPattern( COSArray dashArray )
     {
         COSArray array = null;
-        if( pattern != null )
+        if( dashArray != null )
         {
-            array = pattern.getCOSDashPattern();
+            array = dashArray;
         }
         dictionary.setItem( "D", array );
     }

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=1571581&r1=1571580&r2=1571581&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 Tue Feb 25 06:31:52 2014
@@ -89,7 +89,7 @@ public class PDExtendedGraphicsState imp
         {
             if( key.equals( COSName.LW ) )
             {
-                gs.setLineWidth( getLineWidth().doubleValue() );
+                gs.setLineWidth( getLineWidth() );
             }
             else if( key.equals( COSName.LC ) )
             {
@@ -101,7 +101,7 @@ public class PDExtendedGraphicsState imp
             }
             else if( key.equals( COSName.ML ) )
             {
-                gs.setMiterLimit( getMiterLimit().doubleValue() );
+                gs.setMiterLimit( getMiterLimit() );
             }
             else if( key.equals( COSName.D ) )
             {

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=1571581&r1=1571580&r2=1571581&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 Tue Feb 25 06:31:52 2014
@@ -46,11 +46,11 @@ public class PDGraphicsState implements 
     private PDColorSpace strokingColorSpace = PDDeviceGray.INSTANCE;
     private PDColorSpace nonStrokingColorSpace = PDDeviceGray.INSTANCE;
     private PDTextState textState = new PDTextState();
-    private double lineWidth = 0.0;
-    private int lineCap = 0;
-    private int lineJoin = 0;
-    private double miterLimit = 0;
-    private PDLineDashPattern lineDashPattern;
+    private float lineWidth = 1;
+    private int lineCap = BasicStroke.CAP_SQUARE;
+    private int lineJoin = BasicStroke.JOIN_MITER;
+    private float miterLimit = 10;
+    private PDLineDashPattern lineDashPattern = new PDLineDashPattern();
     private String renderingIntent;
     private boolean strokeAdjustment = false;
     //blend mode
@@ -118,7 +118,7 @@ public class PDGraphicsState implements 
      *
      * @return The current line width.
      */
-    public double getLineWidth()
+    public float getLineWidth()
     {
         return lineWidth;
     }
@@ -128,7 +128,7 @@ public class PDGraphicsState implements 
      *
      * @param value The current line width.
      */
-    public void setLineWidth(double value)
+    public void setLineWidth(float value)
     {
         lineWidth = value;
     }
@@ -178,7 +178,7 @@ public class PDGraphicsState implements 
      *
      * @return The current miter limit.
      */
-    public double getMiterLimit()
+    public float getMiterLimit()
     {
         return miterLimit;
     }
@@ -188,7 +188,7 @@ public class PDGraphicsState implements 
      *
      * @param value The current miter limit.
      */
-    public void setMiterLimit(double value)
+    public void setMiterLimit(float value)
     {
         miterLimit = value;
     }
@@ -430,7 +430,7 @@ public class PDGraphicsState implements 
             clone.nonStrokingColor = nonStrokingColor; // immutable
             if( lineDashPattern != null )
             {
-                clone.setLineDashPattern( (PDLineDashPattern)lineDashPattern.clone() );
+                clone.setLineDashPattern( lineDashPattern ); // immutable
             }
             if (currentClippingPath != null)
             {

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDLineDashPattern.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDLineDashPattern.java?rev=1571581&r1=1571580&r2=1571581&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDLineDashPattern.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/graphics/PDLineDashPattern.java Tue Feb 25 06:31:52 2014
@@ -24,89 +24,69 @@ import org.apache.pdfbox.cos.COSNumber;
 import org.apache.pdfbox.pdmodel.common.COSArrayList;
 import org.apache.pdfbox.pdmodel.common.COSObjectable;
 
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 /**
- * This class represents the line dash pattern for a graphics state.  See PDF
- * Reference 1.5 section 4.3.2
- *
- * @author <a href="mailto:ben@benlitchfield.com">Ben Litchfield</a>
- * @version $Revision: 1.7 $
+ * A line dash pattern for stroking paths.
+ * Instances of PDLineDashPattern are immutable.
+ * @author Ben Litchfield
+ * @author John Hewson
  */
-public class PDLineDashPattern implements COSObjectable, Cloneable
+public final class PDLineDashPattern implements COSObjectable
 {
-    private COSArray lineDashPattern = null;
+    private final int phase;
+    private final float[] array;
 
     /**
-     * Creates a blank line dash pattern.  With no dashes and a phase of 0.
+     * Creates a new line dash pattern, with no dashes and a phase of 0.
      */
     public PDLineDashPattern()
     {
-        lineDashPattern = new COSArray();
-        lineDashPattern.add( new COSArray() );
-        lineDashPattern.add( COSInteger.ZERO );
+        array = new float[] { };
+        phase = 0;
     }
 
     /**
-     * Constructs a line dash pattern from an existing array.
-     *
-     * @param ldp The existing line dash pattern.
+     * Creates a new line dash pattern from a COS array.
+     * @param dashPattern the COS line dash pattern
      */
-    public PDLineDashPattern( COSArray ldp )
+    // todo: get rid of this constructor?
+    public PDLineDashPattern(COSArray dashPattern)
     {
-        lineDashPattern = ldp;
+        array = dashPattern.toFloatArray();
+        phase = 0;
     }
 
     /**
-     * Constructs a line dash pattern from an existing array.
-     *
-     * @param ldp The existing line dash pattern.
-     * @param phase The phase for the line dash pattern.
+     * Creates a new line dash pattern from a dash array and phase.
+     * @param array the dash array
+     * @param phase the phase
      */
-    public PDLineDashPattern( COSArray ldp, int phase )
+    public PDLineDashPattern(COSArray array, int phase)
     {
-        lineDashPattern = new COSArray();
-        lineDashPattern.add( ldp );
-        lineDashPattern.add( COSInteger.get( phase ) );
+        this.array = array.toFloatArray();
+        this.phase = phase;
     }
 
-    /**
-     * {@inheritDoc}
-     */
-    public Object clone()
-    {
-        PDLineDashPattern pattern = null;
-        try
-        {
-            pattern = (PDLineDashPattern)super.clone();
-            pattern.setDashPattern(getDashPattern());
-            pattern.setPhaseStart(getPhaseStart());
-        }
-        catch(CloneNotSupportedException exception)
-        {
-            exception.printStackTrace();
-        }
-        return pattern;
-    }
-
-    /**
-     * {@inheritDoc}
-     */
+    @Override
     public COSBase getCOSObject()
     {
-        return lineDashPattern;
+        COSArray cos = new COSArray();
+        cos.add(COSArrayList.converterToCOSArray(Arrays.asList(array)));
+        cos.add(COSInteger.get(phase));
+        return cos;
     }
 
     /**
-     * This will get the line dash pattern phase.  The dash phase specifies the
-     * distance into the dash pattern at which to start the dash.
-     *
-     * @return The line dash pattern phase.
+     * Returns the dash phase.
+     * This specifies the distance into the dash pattern at which to start the dash.
+     * @return the dash phase
      */
-    public int getPhaseStart()
+    public int getPhase()
     {
-        COSNumber phase = (COSNumber)lineDashPattern.get( 1 );
-        return phase.intValue();
+        return phase;
     }
 
     /**
@@ -114,41 +94,19 @@ public class PDLineDashPattern implement
      *
      * @param phase The new line dash patter phase.
      */
-    public void setPhaseStart( int phase )
+    // todo: make immutable?
+    /*public void setPhase(int phase)
     {
-        lineDashPattern.set( 1, phase );
-    }
+        this.phase = phase;
+    }*/
 
     /**
-     * This will return a list of java.lang.Integer objects that represent the line
-     * dash pattern appearance.
-     *
-     * @return The line dash pattern.
-     */
-    public List getDashPattern()
-    {
-        COSArray dashPatterns = (COSArray)lineDashPattern.get( 0 );
-        return COSArrayList.convertIntegerCOSArrayToList( dashPatterns );
-    }
-
-    /**
-     * Get the line dash pattern as a COS object.
-     *
-     * @return The cos array line dash pattern.
+     * Returns the dash array.
+     * @return the dash array
      */
-    public COSArray getCOSDashPattern()
+    public float[] getDashArray()
     {
-        return (COSArray)lineDashPattern.get( 0 );
-    }
-
-    /**
-     * This will replace the existing line dash pattern.
-     *
-     * @param dashPattern A list of java.lang.Integer objects.
-     */
-    public void setDashPattern( List dashPattern )
-    {
-        lineDashPattern.set( 0, COSArrayList.converterToCOSArray( dashPattern ) );
+        return array.clone();
     }
     
     /**
@@ -156,23 +114,22 @@ public class PDLineDashPattern implement
      * 
      * @return true if the dashPattern is empty or all values equals 0  
      */
-    public boolean isDashPatternEmpty() 
+    public boolean isDashPatternEmpty()
     {
-        float[] dashPattern = getCOSDashPattern().toFloatArray();
+        /*float[] dashPattern = getCOSDashArray().toFloatArray();
         boolean dashPatternEmpty = true;
         if (dashPattern != null) 
         {
-            int arraySize = dashPattern.length;
-            for(int i=0;i<arraySize;i++) 
+            for (float x : dashPattern)
             {
-                if (dashPattern[i] > 0) 
+                if (x > 0)
                 {
                     dashPatternEmpty = false;
                     break;
                 }
             }
         }
-        return dashPatternEmpty;
+        return dashPatternEmpty;*/
+        throw new UnsupportedOperationException(); // todo???
     }
-
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDBorderStyleDictionary.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDBorderStyleDictionary.java?rev=1571581&r1=1571580&r2=1571581&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDBorderStyleDictionary.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/pdmodel/interactive/annotation/PDBorderStyleDictionary.java Tue Feb 25 06:31:52 2014
@@ -150,15 +150,15 @@ public class PDBorderStyleDictionary imp
     /**
      * This will set the dash style used for drawing the border.
      *
-     * @param d
+     * @param dashArray
      *            the dash style to use
      */
-    public void setDashStyle( PDLineDashPattern d )
+    public void setDashStyle( COSArray dashArray )
     {
         COSArray array = null;
-        if( d != null )
+        if( dashArray != null )
         {
-            array = d.getCOSDashPattern();
+            array = dashArray;
         }
         getDictionary().setItem( "D", array );
     }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetLineMiterLimit.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetLineMiterLimit.java?rev=1571581&r1=1571580&r2=1571581&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetLineMiterLimit.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetLineMiterLimit.java Tue Feb 25 06:31:52 2014
@@ -44,6 +44,6 @@ public class SetLineMiterLimit extends O
     public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
     {
         COSNumber miterLimit = (COSNumber)arguments.get( 0 );
-        context.getGraphicsState().setMiterLimit( miterLimit.doubleValue() );
+        context.getGraphicsState().setMiterLimit( miterLimit.floatValue() );
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetLineWidth.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetLineWidth.java?rev=1571581&r1=1571580&r2=1571581&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetLineWidth.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetLineWidth.java Tue Feb 25 06:31:52 2014
@@ -44,6 +44,6 @@ public class SetLineWidth extends Operat
     public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
     {
         COSNumber width = (COSNumber)arguments.get( 0 );
-        context.getGraphicsState().setLineWidth( width.doubleValue() );
+        context.getGraphicsState().setLineWidth( width.floatValue() );
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/PageDrawer.properties
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/PageDrawer.properties?rev=1571581&r1=1571580&r2=1571581&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/PageDrawer.properties (original)
+++ pdfbox/trunk/pdfbox/src/main/resources/org/apache/pdfbox/resources/PageDrawer.properties Tue Feb 25 06:31:52 2014
@@ -30,7 +30,7 @@ c=org.apache.pdfbox.util.operator.pagedr
 cm=org.apache.pdfbox.util.operator.Concatenate
 CS=org.apache.pdfbox.util.operator.SetStrokingColorSpace
 cs=org.apache.pdfbox.util.operator.SetNonStrokingColorSpace
-d=org.apache.pdfbox.util.operator.pagedrawer.SetLineDashPattern
+d=org.apache.pdfbox.util.operator.SetLineDashPattern
 #d0 org.apache.pdfbox.util.operator.NotImplemented
 #d1 org.apache.pdfbox.util.operator.NotImplemented
 Do=org.apache.pdfbox.util.operator.pagedrawer.Invoke
@@ -48,13 +48,13 @@ gs=org.apache.pdfbox.util.operator.SetGr
 h=org.apache.pdfbox.util.operator.pagedrawer.ClosePath
 #i org.apache.pdfbox.util.operator.NotImplemented
 #ID org.apache.pdfbox.util.operator.NotImplemented
-j=org.apache.pdfbox.util.operator.pagedrawer.SetLineJoinStyle
-J=org.apache.pdfbox.util.operator.pagedrawer.SetLineCapStyle
+j=org.apache.pdfbox.util.operator.SetLineJoinStyle
+J=org.apache.pdfbox.util.operator.SetLineCapStyle
 K=org.apache.pdfbox.util.operator.SetStrokingDeviceCMYKColor
 k=org.apache.pdfbox.util.operator.SetNonStrokingDeviceCMYKColor
 l=org.apache.pdfbox.util.operator.pagedrawer.LineTo
 m=org.apache.pdfbox.util.operator.pagedrawer.MoveTo
-M=org.apache.pdfbox.util.operator.pagedrawer.SetLineMiterLimit
+M=org.apache.pdfbox.util.operator.SetLineMiterLimit
 #MP org.apache.pdfbox.util.operator.NotImplemented ##Marked Content Point-- section 10.5
 n=org.apache.pdfbox.util.operator.pagedrawer.EndPath
 q=org.apache.pdfbox.util.operator.GSave
@@ -84,7 +84,7 @@ Ts=org.apache.pdfbox.util.operator.SetTe
 Tw=org.apache.pdfbox.util.operator.SetWordSpacing
 Tz=org.apache.pdfbox.util.operator.SetHorizontalTextScaling
 v=org.apache.pdfbox.util.operator.pagedrawer.CurveToReplicateInitialPoint
-w=org.apache.pdfbox.util.operator.pagedrawer.SetLineWidth
+w=org.apache.pdfbox.util.operator.SetLineWidth
 W org.apache.pdfbox.util.operator.pagedrawer.ClipNonZeroRule
 W* org.apache.pdfbox.util.operator.pagedrawer.ClipEvenOddRule
 y=org.apache.pdfbox.util.operator.pagedrawer.CurveToReplicateFinalPoint