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/07/12 20:35:49 UTC

svn commit: r1610021 [2/3] - in /pdfbox/trunk: examples/src/main/java/org/apache/pdfbox/examples/util/ pdfbox/src/main/java/org/apache/pdfbox/pdfparser/ pdfbox/src/main/java/org/apache/pdfbox/pdfwriter/ pdfbox/src/main/java/org/apache/pdfbox/pdmodel/ p...

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceCMYKColor.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetNonStrokingDeviceCMYKColor.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceCMYKColor.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceCMYKColor.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetNonStrokingDeviceCMYKColor.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetNonStrokingDeviceCMYKColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceCMYKColor.java Sat Jul 12 18:35:46 2014
@@ -14,31 +14,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.color;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceCMYK;
+import org.apache.pdfbox.util.operator.Operator;
 
 import java.io.IOException;
 import java.util.List;
 
 /**
- * k Set the non-stroking colour space to DeviceCMYK and set the colour to
+ * k: Set the non-stroking colour space to DeviceCMYK and set the colour to
  * use for non-stroking operations.
  *
  * @author John Hewson
  */
 public class SetNonStrokingDeviceCMYKColor extends SetNonStrokingColor
 {
-    /**
-     * k Set the non-stroking colour space to DeviceCMYK and set the colour to
-     * use for non-stroking operations.
-     *
-     * @param operator The operator that is being executed.
-     * @param arguments List
-     * @throws IOException If the color space cannot be read.
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
+    @Override
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
         context.getGraphicsState().setNonStrokingColorSpace(PDDeviceCMYK.INSTANCE);
         super.process(operator, arguments);

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceGrayColor.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetNonStrokingDeviceGrayColor.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceGrayColor.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceGrayColor.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetNonStrokingDeviceGrayColor.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetNonStrokingDeviceGrayColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceGrayColor.java Sat Jul 12 18:35:46 2014
@@ -14,31 +14,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.color;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
+import org.apache.pdfbox.util.operator.Operator;
 
 import java.io.IOException;
 import java.util.List;
 
 /**
- * g Set the non-stroking colour space to DeviceGray and set the gray
+ * g: Set the non-stroking colour space to DeviceGray and set the gray
  * level to use for non-stroking operations.
  *
  * @author John Hewson
  */
 public class SetNonStrokingDeviceGrayColor extends SetNonStrokingColor
 {
-    /**
-     * g Set the non-stroking colour space to DeviceGray and set the gray
-     * level to use for non-stroking operations.
-     *
-     * @param operator The operator that is being executed.
-     * @param arguments List
-     * @throws IOException If the color space cannot be read.
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
+    @Override
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
         context.getGraphicsState().setNonStrokingColorSpace(PDDeviceGray.INSTANCE);
         super.process(operator, arguments);

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceRGBColor.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetNonStrokingDeviceRGBColor.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceRGBColor.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceRGBColor.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetNonStrokingDeviceRGBColor.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetNonStrokingDeviceRGBColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetNonStrokingDeviceRGBColor.java Sat Jul 12 18:35:46 2014
@@ -14,31 +14,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.color;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
+import org.apache.pdfbox.util.operator.Operator;
 
 import java.io.IOException;
 import java.util.List;
 
 /**
- * rg Set the non-stroking colour space to DeviceRGB and set the colour to
+ * rg: Set the non-stroking colour space to DeviceRGB and set the colour to
  * use for non-stroking operations.
  *
  * @author John Hewson
  */
 public class SetNonStrokingDeviceRGBColor extends SetNonStrokingColor
 {
-    /**
-     * k Set the non-stroking colour space to DeviceRGB and set the colour to
-     * use for non-stroking operations.
-     *
-     * @param operator The operator that is being executed.
-     * @param arguments List
-     * @throws IOException If the color space cannot be read.
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
+    @Override
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
         context.getGraphicsState().setNonStrokingColorSpace(PDDeviceRGB.INSTANCE);
         super.process(operator, arguments);

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColor.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingColor.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColor.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColor.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingColor.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColor.java Sat Jul 12 18:35:46 2014
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.color;
 
 import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
 
 /**
- * SC,SCN Sets the colour to use for stroking stroking operations.
+ * SC,SCN: Sets the colour to use for stroking stroking operations.
  *
  * @author John Hewson
  */

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorSpace.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingColorSpace.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorSpace.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorSpace.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingColorSpace.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingColorSpace.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingColorSpace.java Sat Jul 12 18:35:46 2014
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.color;
 
 import java.io.IOException;
 import java.util.List;
@@ -22,22 +22,19 @@ import java.util.List;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.OperatorProcessor;
 
 /**
- * Sets the stroking color space.
+ * CS: Set color space for stroking operations.
  *
  * @author Ben Litchfield
  * @author John Hewson
  */
 public class SetStrokingColorSpace extends OperatorProcessor
 {
-    /**
-     * CS Set color space for stroking operations.
-     * @param operator The operator that is being executed.
-     * @param arguments List
-     * @throws IOException If an error occurs while processing the font.
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
+    @Override
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
         COSName name = (COSName)arguments.get(0);
 

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceCMYKColor.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingDeviceCMYKColor.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceCMYKColor.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceCMYKColor.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingDeviceCMYKColor.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingDeviceCMYKColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceCMYKColor.java Sat Jul 12 18:35:46 2014
@@ -14,31 +14,24 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.color;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceCMYK;
+import org.apache.pdfbox.util.operator.Operator;
 
 import java.io.IOException;
 import java.util.List;
 
 /**
- * K Set the stroking colour space to DeviceCMYK and set the colour to
- * use for stroking operations.
+ * K: Set the stroking colour space to DeviceCMYK and set the colour to use for stroking operations.
  *
  * @author John Hewson
  */
 public class SetStrokingDeviceCMYKColor extends SetStrokingColor
 {
-    /**
-     * K Set the stroking colour space to DeviceCMYK and set the colour to
-     * use for stroking operations.
-     *
-     * @param operator The operator that is being executed.
-     * @param arguments List
-     * @throws IOException If the color space cannot be read.
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
+    @Override
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
         context.getGraphicsState().setStrokingColorSpace(PDDeviceCMYK.INSTANCE);
         super.process(operator, arguments);

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceGrayColor.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingDeviceGrayColor.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceGrayColor.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceGrayColor.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingDeviceGrayColor.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingDeviceGrayColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceGrayColor.java Sat Jul 12 18:35:46 2014
@@ -14,31 +14,24 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.color;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceGray;
+import org.apache.pdfbox.util.operator.Operator;
 
 import java.io.IOException;
 import java.util.List;
 
 /**
- * G Set the stroking colour space to DeviceGray and set the gray
- * level to use for stroking operations.
+ * G: Set the stroking colour space to DeviceGray and set the gray level to use for stroking
+ * operations.
  *
  * @author John Hewson
  */
 public class SetStrokingDeviceGrayColor extends SetStrokingColor
 {
-    /**
-     * G Set the stroking colour space to DeviceGray and set the gray
-     * level to use for stroking operations.
-     *
-     * @param operator The operator that is being executed.
-     * @param arguments List
-     * @throws IOException If the color space cannot be read.
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
         context.getGraphicsState().setStrokingColorSpace(PDDeviceGray.INSTANCE);
         super.process(operator, arguments);

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceRGBColor.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingDeviceRGBColor.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceRGBColor.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceRGBColor.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingDeviceRGBColor.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetStrokingDeviceRGBColor.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/color/SetStrokingDeviceRGBColor.java Sat Jul 12 18:35:46 2014
@@ -14,17 +14,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.color;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB;
+import org.apache.pdfbox.util.operator.Operator;
 
 import java.io.IOException;
 import java.util.List;
 
 /**
- * RG Set the stroking colour space to DeviceRGB and set the colour to
- * use for stroking operations.
+ * RG: Set the stroking colour space to DeviceRGB and set the colour to use for stroking operations.
  *
  * @author John Hewson
  */
@@ -38,7 +38,7 @@ public class SetStrokingDeviceRGBColor e
      * @param arguments List
      * @throws IOException If the color space cannot be read.
      */
-    public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
         context.getGraphicsState().setStrokingColorSpace(PDDeviceRGB.INSTANCE);
         super.process(operator, arguments);

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/AppendRectangleToPath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/AppendRectangleToPath.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/AppendRectangleToPath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/AppendRectangleToPath.java Sat Jul 12 18:35:46 2014
@@ -14,30 +14,27 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
-import java.awt.geom.GeneralPath;
 import java.awt.geom.Point2D;
+import java.io.IOException;
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSNumber;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * re Appends a rectangle to the path.
  *
  * @author Ben Litchfield
  */
-public final class AppendRectangleToPath extends OperatorProcessor
+public final class AppendRectangleToPath extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands)
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        PageDrawer drawer = (PageDrawer) context;
-
         COSNumber x = (COSNumber) operands.get(0);
         COSNumber y = (COSNumber) operands.get(1);
         COSNumber w = (COSNumber) operands.get(2);
@@ -50,21 +47,11 @@ public final class AppendRectangleToPath
         double x2 = w.doubleValue() + x1;
         double y2 = h.doubleValue() + y1;
 
-        Point2D p0 = drawer.transformedPoint(x1, y1);
-        Point2D p1 = drawer.transformedPoint(x2, y1);
-        Point2D p2 = drawer.transformedPoint(x2, y2);
-        Point2D p3 = drawer.transformedPoint(x1, y2);
-
-        // to ensure that the path is created in the right direction, we have to create
-        // it by combining single lines instead of creating a simple rectangle
-        GeneralPath path = drawer.getLinePath();
-        path.moveTo((float) p0.getX(), (float) p0.getY());
-        path.lineTo((float) p1.getX(), (float) p1.getY());
-        path.lineTo((float) p2.getX(), (float) p2.getY());
-        path.lineTo((float) p3.getX(), (float) p3.getY());
-
-        // close the subpath instead of adding the last line so that a possible set line
-        // cap style isn't taken into account at the "beginning" of the rectangle
-        path.closePath();
+        Point2D p0 = context.transformedPoint(x1, y1);
+        Point2D p1 = context.transformedPoint(x2, y1);
+        Point2D p2 = context.transformedPoint(x2, y2);
+        Point2D p3 = context.transformedPoint(x1, y2);
+
+        context.appendRectangle(p0, p1, p2, p3);
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/BeginInlineImage.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/BeginInlineImage.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/BeginInlineImage.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/BeginInlineImage.java Sat Jul 12 18:35:46 2014
@@ -14,49 +14,30 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
-import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
-import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
+import org.apache.pdfbox.pdmodel.graphics.image.PDImage;
 import org.apache.pdfbox.pdmodel.graphics.image.PDInlineImage;
-import org.apache.pdfbox.util.Matrix;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * BI Begins an inline image.
+ *
  * @author Ben Litchfield
  */
-public final class BeginInlineImage extends OperatorProcessor
+public final class BeginInlineImage extends GraphicsOperatorProcessor
 {
-    /**
-     * @throws IOException If there is an error displaying the inline image.
-     */
-    public void process(PDFOperator operator, List<COSBase> operands) throws IOException
+    @Override
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        PageDrawer drawer = (PageDrawer)context;
-
-        PDInlineImage image = new PDInlineImage(operator.getImageParameters(),
-                                                operator.getImageData(),
-                                                context.getResources().getColorSpaces());
-        BufferedImage awtImage;
-        if (image.isStencil())
-        {
-            PDColorSpace colorSpace = drawer.getGraphicsState().getNonStrokingColorSpace();
-            PDColor color = drawer.getGraphicsState().getNonStrokingColor();
-            awtImage = image.getStencilImage(colorSpace.toPaint(drawer.getRenderer(), color, drawer.getPageHeight()));
-        }
-        else
-        {
-            awtImage = image.getImage();
-        }
-        Matrix ctm = drawer.getGraphicsState().getCurrentTransformationMatrix();
-        drawer.drawImage(awtImage, ctm.createAffineTransform());
+        PDImage image = new PDInlineImage(operator.getImageParameters(),
+                                          operator.getImageData(),
+                                          context.getResources().getColorSpaces());
+        context.drawImage(image);
     }
-}
\ No newline at end of file
+}

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipEvenOddRule.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipEvenOddRule.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipEvenOddRule.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipEvenOddRule.java Sat Jul 12 18:35:46 2014
@@ -14,25 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
 import java.awt.geom.GeneralPath;
+import java.io.IOException;
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * W* Set clipping path using even odd rule.
+ *
  * @author Daniel Wilson
  */
-public final class ClipEvenOddRule extends OperatorProcessor
+public final class ClipEvenOddRule extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands)
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        ((PageDrawer)context).clip(GeneralPath.WIND_EVEN_ODD);
+        context.clip(GeneralPath.WIND_EVEN_ODD);
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipNonZeroRule.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipNonZeroRule.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipNonZeroRule.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClipNonZeroRule.java Sat Jul 12 18:35:46 2014
@@ -14,25 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
 import java.awt.geom.GeneralPath;
+import java.io.IOException;
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * W Set the clipping path using non zero winding rule.
+ *
  * @author Daniel Wilson
  */
-public class ClipNonZeroRule extends OperatorProcessor
+public class ClipNonZeroRule extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands)
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        ((PageDrawer)context).clip(GeneralPath.WIND_NON_ZERO);
+        context.clip(GeneralPath.WIND_NON_ZERO);
     }
 }

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseAndStrokePath.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/CloseAndStrokePath.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseAndStrokePath.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseAndStrokePath.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/CloseAndStrokePath.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/CloseAndStrokePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseAndStrokePath.java Sat Jul 12 18:35:46 2014
@@ -14,31 +14,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.graphics;
 
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.OperatorProcessor;
 
 import java.io.IOException;
 
 /**
- * Implementation of content stream operator for page drawer.
+ * s: close and stroke the path.
  *
- * @author <a href="mailto:ben@benlitchfield.com">Ben Litchfield</a>
- * @version $Revision: 1.2 $
+ * @author Ben Litchfield
  */
-public class CloseAndStrokePath extends OperatorProcessor
+public class CloseAndStrokePath extends GraphicsOperatorProcessor
 {
-
-    /**
-     * s close and stroke the path.
-     * @param operator The operator that is being executed.
-     * @param arguments List
-     *
-     * @throws IOException If an error occurs while processing the font.
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
+    @Override
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
         context.processOperator( "h", arguments );
         context.processOperator( "S", arguments );

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillEvenOddAndStrokePath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillEvenOddAndStrokePath.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillEvenOddAndStrokePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillEvenOddAndStrokePath.java Sat Jul 12 18:35:46 2014
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 import java.io.IOException;
 
@@ -29,10 +29,10 @@ import java.io.IOException;
  *
  * @author Andreas Lehmkühler
  */
-public final class CloseFillEvenOddAndStrokePath extends OperatorProcessor
+public final class CloseFillEvenOddAndStrokePath extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands) throws IOException
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
         context.processOperator("h", operands);  // ClosePath
         context.processOperator("B*", operands); // FillEvenOddAndStroke

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillNonZeroAndStrokePath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillNonZeroAndStrokePath.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillNonZeroAndStrokePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CloseFillNonZeroAndStrokePath.java Sat Jul 12 18:35:46 2014
@@ -14,13 +14,13 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 import java.io.IOException;
 
 /**
@@ -28,10 +28,10 @@ import java.io.IOException;
  *
  * @author Ben Litchfield
  */
-public final class CloseFillNonZeroAndStrokePath extends OperatorProcessor
+public final class CloseFillNonZeroAndStrokePath extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands) throws IOException
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
         context.processOperator("h", operands);  // ClosePath
         context.processOperator("B", operands);  // FillNonZeroAndStroke

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClosePath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClosePath.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClosePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ClosePath.java Sat Jul 12 18:35:46 2014
@@ -14,24 +14,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
+import java.io.IOException;
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * h Close the path.
+ *
  * @author Ben Litchfield
  */
-public final class ClosePath extends OperatorProcessor
+public final class ClosePath extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands)
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        ((PageDrawer)context).getLinePath().closePath();
+        context.closePath();
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveTo.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveTo.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveTo.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveTo.java Sat Jul 12 18:35:46 2014
@@ -14,28 +14,27 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
+import java.io.IOException;
 import java.util.List;
 import java.awt.geom.Point2D;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSNumber;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * c Append curved segment to path.
+ *
  * @author Ben Litchfield
  */
-public class CurveTo extends OperatorProcessor
+public class CurveTo extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands)
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        PageDrawer drawer = (PageDrawer)context;
-
         COSNumber x1 = (COSNumber)operands.get(0);
         COSNumber y1 = (COSNumber)operands.get(1);
         COSNumber x2 = (COSNumber)operands.get(2);
@@ -43,12 +42,12 @@ public class CurveTo extends OperatorPro
         COSNumber x3 = (COSNumber)operands.get(4);
         COSNumber y3 = (COSNumber)operands.get(5);
 
-        Point2D point1 = drawer.transformedPoint(x1.doubleValue(), y1.doubleValue());
-        Point2D point2 = drawer.transformedPoint(x2.doubleValue(), y2.doubleValue());
-        Point2D point3 = drawer.transformedPoint(x3.doubleValue(), y3.doubleValue());
-
-        drawer.getLinePath().curveTo((float)point1.getX(), (float)point1.getY(), 
-                                     (float)point2.getX(), (float)point2.getY(),
-                                     (float)point3.getX(), (float)point3.getY());
+        Point2D point1 = context.transformedPoint(x1.doubleValue(), y1.doubleValue());
+        Point2D point2 = context.transformedPoint(x2.doubleValue(), y2.doubleValue());
+        Point2D point3 = context.transformedPoint(x3.doubleValue(), y3.doubleValue());
+
+        context.curveTo((float) point1.getX(), (float) point1.getY(),
+                        (float) point2.getX(), (float) point2.getY(),
+                        (float) point3.getX(), (float) point3.getY());
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateFinalPoint.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateFinalPoint.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateFinalPoint.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateFinalPoint.java Sat Jul 12 18:35:46 2014
@@ -14,38 +14,37 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
+import java.io.IOException;
 import java.util.List;
 import java.awt.geom.Point2D;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSNumber;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * y Append curved segment to path with final point replicated.
+ *
  * @author Ben Litchfield
  */
-public final class CurveToReplicateFinalPoint extends OperatorProcessor
+public final class CurveToReplicateFinalPoint extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands)
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        PageDrawer drawer = (PageDrawer)context;
-
         COSNumber x1 = (COSNumber)operands.get(0);
         COSNumber y1 = (COSNumber)operands.get(1);
         COSNumber x3 = (COSNumber)operands.get(2);
         COSNumber y3 = (COSNumber)operands.get(3);
 
-        Point2D point1 = drawer.transformedPoint(x1.doubleValue(), y1.doubleValue());
-        Point2D point3 = drawer.transformedPoint(x3.doubleValue(), y3.doubleValue());
+        Point2D point1 = context.transformedPoint(x1.doubleValue(), y1.doubleValue());
+        Point2D point3 = context.transformedPoint(x3.doubleValue(), y3.doubleValue());
 
-        drawer.getLinePath().curveTo((float)point1.getX(), (float)point1.getY(), 
-                                     (float)point3.getX(), (float)point3.getY(),
-                                     (float)point3.getX(), (float)point3.getY());
+        context.curveTo((float) point1.getX(), (float) point1.getY(),
+                        (float) point3.getX(), (float) point3.getY(),
+                        (float) point3.getX(), (float) point3.getY());
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateInitialPoint.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateInitialPoint.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateInitialPoint.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/CurveToReplicateInitialPoint.java Sat Jul 12 18:35:46 2014
@@ -14,41 +14,39 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
-import java.awt.geom.GeneralPath;
 import java.awt.geom.Point2D;
+import java.io.IOException;
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSNumber;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * v Append curved segment to path with the initial point replicated.
+ *
  * @author Ben Litchfield
  */
-public class CurveToReplicateInitialPoint extends OperatorProcessor
+public class CurveToReplicateInitialPoint extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands)
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        PageDrawer drawer = (PageDrawer)context;
-
         COSNumber x2 = (COSNumber)operands.get(0 );
         COSNumber y2 = (COSNumber)operands.get(1);
         COSNumber x3 = (COSNumber)operands.get(2);
         COSNumber y3 = (COSNumber)operands.get(3);
-        GeneralPath path = drawer.getLinePath();
-        Point2D currentPoint = path.getCurrentPoint();
 
-        Point2D point2 = drawer.transformedPoint(x2.doubleValue(), y2.doubleValue());
-        Point2D point3 = drawer.transformedPoint(x3.doubleValue(), y3.doubleValue());
+        Point2D currentPoint = context.getCurrentPoint();
+
+        Point2D point2 = context.transformedPoint(x2.doubleValue(), y2.doubleValue());
+        Point2D point3 = context.transformedPoint(x3.doubleValue(), y3.doubleValue());
 
-        drawer.getLinePath().curveTo((float)currentPoint.getX(), (float)currentPoint.getY(),
-                                     (float)point2.getX(),       (float)point2.getY(),
-                                     (float)point3.getX(),       (float)point3.getY());
+        context.curveTo((float) currentPoint.getX(), (float) currentPoint.getY(),
+                        (float) point2.getX(), (float) point2.getY(),
+                        (float) point3.getX(), (float) point3.getY());
     }
 }

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/DrawObject.java (from r1609347, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/Invoke.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/DrawObject.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/DrawObject.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/Invoke.java&r1=1609347&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/Invoke.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/DrawObject.java Sat Jul 12 18:35:46 2014
@@ -14,11 +14,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
-import java.awt.geom.AffineTransform;
 import java.awt.geom.GeneralPath;
-import java.awt.image.BufferedImage;
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
@@ -27,36 +25,30 @@ import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.cos.COSStream;
 import org.apache.pdfbox.filter.MissingImageReaderException;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.pdmodel.PDResources;
 import org.apache.pdfbox.pdmodel.common.PDRectangle;
-import org.apache.pdfbox.pdmodel.graphics.color.PDColor;
-import org.apache.pdfbox.pdmodel.graphics.color.PDColorSpace;
 import org.apache.pdfbox.pdmodel.graphics.form.PDFormXObject;
 import org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
 import org.apache.pdfbox.pdmodel.graphics.PDXObject;
 import org.apache.pdfbox.pdmodel.graphics.state.PDGraphicsState;
 import org.apache.pdfbox.util.Matrix;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
- * Do Draws an XObject.
+ * Do: Draws an XObject.
+ *
  * @author Ben Litchfield
  * @author John Hewson
  */
-public final class Invoke extends OperatorProcessor
+public final class DrawObject extends GraphicsOperatorProcessor
 {
-    private static final Log LOG = LogFactory.getLog(Invoke.class);
+    private static final Log LOG = LogFactory.getLog(DrawObject.class);
 
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands) throws IOException
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        PageDrawer drawer = (PageDrawer)context;
         COSName objectName = (COSName)operands.get(0);
-        Map<String, PDXObject> xobjects = drawer.getResources().getXObjects();
+        Map<String, PDXObject> xobjects = context.getResources().getXObjects();
         PDXObject xobject = xobjects.get(objectName.getName());
 
         if (xobject == null)
@@ -68,20 +60,7 @@ public final class Invoke extends Operat
             PDImageXObject image = (PDImageXObject)xobject;
             try
             {
-                BufferedImage awtImage;
-                if (image.isStencil())
-                {
-                    PDColorSpace colorSpace = drawer.getGraphicsState().getNonStrokingColorSpace();
-                    PDColor color = drawer.getGraphicsState().getNonStrokingColor();
-                    awtImage = image.getStencilImage(colorSpace.toPaint(drawer.getRenderer(), color, drawer.getPageHeight()));
-                }
-                else
-                {
-                    awtImage = image.getImage();
-                }
-                Matrix ctm = drawer.getGraphicsState().getCurrentTransformationMatrix();
-                AffineTransform imageTransform = ctm.createAffineTransform();
-                drawer.drawImage(awtImage, imageTransform);
+                context.drawImage(image);
             }
             catch (MissingImageReaderException e)
             {
@@ -96,22 +75,15 @@ public final class Invoke extends Operat
         }
         else if (xobject instanceof PDFormXObject)
         {
-            PDFormXObject form = (PDFormXObject) xobject;         
+            PDFormXObject form = (PDFormXObject) xobject;
             if (form.getGroup() != null && COSName.TRANSPARENCY.equals(form.getGroup().getSubType())) {
-                PageDrawer.TransparencyGroup group = drawer.createTransparencyGroup(form);
-                // draw the result of the transparency group to the page
-                group.draw();
+                getContext().showTransparencyGroup(form);
             }
-            else 
+            else
             {
                 // save the graphics state
                 context.saveGraphicsState();
 
-                COSStream formContentStream = form.getCOSStream();
-
-                // find some optional resources, instead of using the current resources
-                PDResources pdResources = form.getResources();
-
                 // if there is an optional form matrix, we have to map the form space to the user space
                 Matrix matrix = form.getMatrix();
                 if (matrix != null)
@@ -120,14 +92,16 @@ public final class Invoke extends Operat
                                     context.getGraphicsState().getCurrentTransformationMatrix());
                     context.getGraphicsState().setCurrentTransformationMatrix(xobjectCTM);
                 }
+
+                // clip to the form's BBox
                 if (form.getBBox() != null)
                 {
                     PDGraphicsState graphicsState = context.getGraphicsState();
                     PDRectangle bBox = form.getBBox();
-                    GeneralPath bboxPath = drawer.transformedPDRectanglePath(bBox);                    
+                    GeneralPath bboxPath = context.transformedPDRectanglePath(bBox);
                     graphicsState.intersectClippingPath(bboxPath);
                 }
-                getContext().processSubStream(pdResources, formContentStream);
+                getContext().showForm(form);
 
                 // restore the graphics state
                 context.restoreGraphicsState();

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/EndPath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/EndPath.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/EndPath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/EndPath.java Sat Jul 12 18:35:46 2014
@@ -14,24 +14,25 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
+import java.io.IOException;
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * n End the path.
+ *
  * @author Ben Litchfield
  */
-public final class EndPath extends OperatorProcessor
+public final class EndPath extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands)
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        ((PageDrawer)context).endPath();
+        context.endPath();
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddAndStrokePath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddAndStrokePath.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddAndStrokePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddAndStrokePath.java Sat Jul 12 18:35:46 2014
@@ -14,29 +14,27 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 import java.awt.geom.GeneralPath;
 import java.io.IOException;
 
 /**
- * B* Fill and then stroke the path, using the even-odd rule to determine the
- * region to fill.
+ * B* Fill and then stroke the path, using the even-odd rule to determine the region to fill.
  *
  * @author Andreas Lehmkühler
  */
-public final class FillEvenOddAndStrokePath extends OperatorProcessor
+public final class FillEvenOddAndStrokePath extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands) throws IOException
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        ((PageDrawer) context).fillAndStrokePath(GeneralPath.WIND_EVEN_ODD);
+        context.fillAndStrokePath(GeneralPath.WIND_EVEN_ODD);
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddRule.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddRule.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddRule.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillEvenOddRule.java Sat Jul 12 18:35:46 2014
@@ -14,26 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
 import java.awt.geom.GeneralPath;
 import java.io.IOException;
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * f* Fill path using even odd rule.
+ *
  * @author Ben Litchfield
  */
-public final class FillEvenOddRule extends OperatorProcessor
+public final class FillEvenOddRule extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands) throws IOException
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        ((PageDrawer)context).fillPath(GeneralPath.WIND_EVEN_ODD);
+        context.fillPath(GeneralPath.WIND_EVEN_ODD);
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroAndStrokePath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroAndStrokePath.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroAndStrokePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroAndStrokePath.java Sat Jul 12 18:35:46 2014
@@ -14,29 +14,28 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 import java.awt.geom.GeneralPath;
 import java.io.IOException;
 
 /**
- * B Fill and then stroke the path, using the nonzero winding number rule to
- * determine the region to fill.
+ * B Fill and then stroke the path, using the nonzero winding number rule to determine the region
+ * to fill.
  *
  * @author Ben Litchfield
  */
-public class FillNonZeroAndStrokePath extends OperatorProcessor
+public class FillNonZeroAndStrokePath extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands) throws IOException
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        ((PageDrawer) context).fillAndStrokePath(GeneralPath.WIND_NON_ZERO);
+        context.fillAndStrokePath(GeneralPath.WIND_NON_ZERO);
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroRule.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroRule.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroRule.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/FillNonZeroRule.java Sat Jul 12 18:35:46 2014
@@ -14,26 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
 import java.awt.geom.GeneralPath;
 import java.io.IOException;
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * f,F Fill path using non zero winding rule.
+ *
  * @author Ben Litchfield
  */
-public final class FillNonZeroRule extends OperatorProcessor
+public final class FillNonZeroRule extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands) throws IOException
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        ((PageDrawer)context).fillPath(GeneralPath.WIND_NON_ZERO);
+        context.fillPath(GeneralPath.WIND_NON_ZERO);
     }
 }

Added: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/GraphicsOperatorProcessor.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/GraphicsOperatorProcessor.java?rev=1610021&view=auto
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/GraphicsOperatorProcessor.java (added)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/GraphicsOperatorProcessor.java Sat Jul 12 18:35:46 2014
@@ -0,0 +1,39 @@
+/*
+ * 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.util.operator.graphics;
+
+import org.apache.pdfbox.util.PDFGraphicsStreamEngine;
+import org.apache.pdfbox.util.PDFStreamEngine;
+import org.apache.pdfbox.util.operator.OperatorProcessor;
+
+/**
+ * Base class for graphics operators.
+ *
+ * @author John Hewson
+ */
+public abstract class GraphicsOperatorProcessor extends OperatorProcessor
+{
+    /** The processing context. */
+    protected PDFGraphicsStreamEngine context;
+
+    @Override
+    public void setContext(PDFStreamEngine context)
+    {
+        super.setContext(context);
+        this.context = (PDFGraphicsStreamEngine)context;
+    }
+}

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LineTo.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LineTo.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LineTo.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/LineTo.java Sat Jul 12 18:35:46 2014
@@ -14,33 +14,32 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
+import java.io.IOException;
 import java.util.List;
 import java.awt.geom.Point2D;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSNumber;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * l Append straight line segment to path.
+ *
  * @author Ben Litchfield
  */
-public class LineTo extends OperatorProcessor
+public class LineTo extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands)
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        PageDrawer drawer = (PageDrawer)context;
-
         // append straight line segment from the current point to the point
         COSNumber x = (COSNumber)operands.get(0);
         COSNumber y = (COSNumber)operands.get(1);
 
-        Point2D pos = drawer.transformedPoint(x.doubleValue(), y.doubleValue());
-        drawer.getLinePath().lineTo((float)pos.getX(), (float)pos.getY());
+        Point2D pos = context.transformedPoint(x.doubleValue(), y.doubleValue());
+        context.lineTo((float) pos.getX(), (float) pos.getY());
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/MoveTo.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/MoveTo.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/MoveTo.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/MoveTo.java Sat Jul 12 18:35:46 2014
@@ -14,30 +14,30 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
 import java.awt.geom.Point2D;
+import java.io.IOException;
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSNumber;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * m Begins a new subpath.
+ *
  * @author Ben Litchfield
  */
-public final class MoveTo extends OperatorProcessor
+public final class MoveTo extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands)
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        PageDrawer drawer = (PageDrawer)context;
         COSNumber x = (COSNumber)operands.get(0);
         COSNumber y = (COSNumber)operands.get(1);
-        Point2D pos = drawer.transformedPoint(x.doubleValue(), y.doubleValue());
-        drawer.getLinePath().moveTo((float)pos.getX(), (float)pos.getY());
+        Point2D pos = context.transformedPoint(x.doubleValue(), y.doubleValue());
+        context.moveTo((float) pos.getX(), (float) pos.getY());
     }
 }

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ShadingFill.java (from r1609347, 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/graphics/ShadingFill.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/ShadingFill.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/pagedrawer/SHFill.java&r1=1609347&r2=1610021&rev=1610021&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/graphics/ShadingFill.java Sat Jul 12 18:35:46 2014
@@ -14,26 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
 import java.io.IOException;
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSName;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 /**
  * sh Fills the clipping area with the given shading pattern.
+ *
  * @author Daniel Wilson
  */
-public final class SHFill extends OperatorProcessor
+public final class ShadingFill extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands) throws IOException
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        ((PageDrawer)context).shFill((COSName)(operands.get(0)));
+        context.shadingFill((COSName) operands.get(0));
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/StrokePath.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/StrokePath.java?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/StrokePath.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/StrokePath.java Sat Jul 12 18:35:46 2014
@@ -14,26 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator.pagedrawer;
+package org.apache.pdfbox.util.operator.graphics;
 
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
-import org.apache.pdfbox.rendering.PageDrawer;
-import org.apache.pdfbox.util.operator.PDFOperator;
-import org.apache.pdfbox.util.operator.OperatorProcessor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.Operator;
 
 import java.io.IOException;
 
 /**
  * S Stroke the path.
+ *
  * @author Ben Litchfield
  */
-public final class StrokePath extends OperatorProcessor
+public final class StrokePath extends GraphicsOperatorProcessor
 {
     @Override
-    public void process(PDFOperator operator, List<COSBase> operands) throws IOException
+    public void process(Operator operator, List<COSBase> operands) throws IOException
     {
-        ((PageDrawer)context).strokePath();
+        context.strokePath();
     }
 }

Modified: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/package.html
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/package.html?rev=1610021&r1=1609347&r2=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/package.html (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/graphics/package.html Sat Jul 12 18:35:46 2014
@@ -20,6 +20,6 @@
 
 </head>
 <body>
-This package contains implementations of all of the PDF operators.
+This package contains implementations of all of the PDF graphics operators.
 </body>
 </html>

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequence.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/BeginMarkedContentSequence.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequence.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequence.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/BeginMarkedContentSequence.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/BeginMarkedContentSequence.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequence.java Sat Jul 12 18:35:46 2014
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.markedcontent;
 
 import java.io.IOException;
 import java.util.List;
@@ -22,22 +22,18 @@ import java.util.List;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.util.PDFMarkedContentExtractor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.OperatorProcessor;
 
 /**
  * BMC : Begins a marked-content sequence.
- * @author koch
- * @version $Revision$
  *
+ * @author Johannes Koch
  */
 public class BeginMarkedContentSequence extends OperatorProcessor
 {
-
-    /**
-     * {@inheritDoc} 
-     */
     @Override
-    public void process(PDFOperator operator, List<COSBase> arguments)
-        throws IOException
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
         COSName tag = null;
         for (COSBase argument : arguments)
@@ -52,5 +48,4 @@ public class BeginMarkedContentSequence 
             ((PDFMarkedContentExtractor) this.context).beginMarkedContentSequence(tag, null);
         }
     }
-
 }

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequenceWithProperties.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/BeginMarkedContentSequenceWithProperties.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequenceWithProperties.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequenceWithProperties.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/BeginMarkedContentSequenceWithProperties.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/BeginMarkedContentSequenceWithProperties.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/BeginMarkedContentSequenceWithProperties.java Sat Jul 12 18:35:46 2014
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.markedcontent;
 
 import java.io.IOException;
 import java.util.List;
@@ -23,21 +23,18 @@ import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSDictionary;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.util.PDFMarkedContentExtractor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.OperatorProcessor;
 
 /**
  * BDC : Begins a marked-content sequence with property list.
  *
- * @author koch
- * @version $Revision$
+ * @author Johannes Koch
  */
 public class BeginMarkedContentSequenceWithProperties extends OperatorProcessor
 {
-
-    /**
-     * {@inheritDoc}
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments)
-        throws IOException
+    @Override
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
         COSName tag = null;
         COSDictionary properties = null;
@@ -57,5 +54,4 @@ public class BeginMarkedContentSequenceW
             ((PDFMarkedContentExtractor) this.context).beginMarkedContentSequence(tag, properties);
         }
     }
-
 }

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/EndMarkedContentSequence.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/EndMarkedContentSequence.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/EndMarkedContentSequence.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/EndMarkedContentSequence.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/EndMarkedContentSequence.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/EndMarkedContentSequence.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/markedcontent/EndMarkedContentSequence.java Sat Jul 12 18:35:46 2014
@@ -14,32 +14,29 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.markedcontent;
 
 import java.io.IOException;
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.util.PDFMarkedContentExtractor;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.OperatorProcessor;
 
 /**
  * EMC : Ends a marked-content sequence begun by BMC or BDC.
- * @author koch
- * @version $Revision: $
+ *
+ * @author Johannes Koch
  */
 public class EndMarkedContentSequence extends OperatorProcessor
 {
-
-    /**
-     * {@inheritDoc}
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments)
-        throws IOException
+    @Override
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
         if (this.context instanceof PDFMarkedContentExtractor)
         {
             ((PDFMarkedContentExtractor) this.context).endMarkedContentSequence();
         }
     }
-
 }

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Concatenate.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/Concatenate.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Concatenate.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Concatenate.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/Concatenate.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/Concatenate.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Concatenate.java Sat Jul 12 18:35:46 2014
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.state;
 
 import java.util.List;
 import java.io.IOException;
@@ -22,26 +22,20 @@ import java.io.IOException;
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSNumber;
 import org.apache.pdfbox.util.Matrix;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.OperatorProcessor;
 
 /**
+ * cm: Concatenate matrix to current transformation matrix.
  *
- * @author Huault : huault@free.fr
- * @version $Revision: 1.5 $
+ * @author Laurent Huault
  */
-
 public class Concatenate extends OperatorProcessor
 {
-
-    /**
-     * process : cm : Concatenate matrix to current transformation matrix.
-     * @param operator The operator that is being executed.
-     * @param arguments List
-     * @throws IOException If there is an error processing the operator.
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
+    @Override
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
-
-        //concatenate matrix to current transformation matrix
+        // concatenate matrix to current transformation matrix
         COSNumber a = (COSNumber) arguments.get(0);
         COSNumber b = (COSNumber) arguments.get(1);
         COSNumber c = (COSNumber) arguments.get(2);
@@ -57,10 +51,8 @@ public class Concatenate extends Operato
         newMatrix.setValue(2, 0, e.floatValue());
         newMatrix.setValue(2, 1, f.floatValue());
 
-        //this line has changed
+        // this line has changed
         context.getGraphicsState().setCurrentTransformationMatrix(
-                newMatrix.multiply( context.getGraphicsState().getCurrentTransformationMatrix() ) );
-
-
+                newMatrix.multiply(context.getGraphicsState().getCurrentTransformationMatrix()));
     }
 }

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Restore.java (from r1609347, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/GRestore.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Restore.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Restore.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/GRestore.java&r1=1609347&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/GRestore.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Restore.java Sat Jul 12 18:35:46 2014
@@ -14,32 +14,27 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.state;
 
 import java.util.List;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.OperatorProcessor;
 
 /**
- * Process the Q operator.
- * 
- * @author Huault : huault@free.fr
+ * Q: Restore the graphics state.
  * 
+ * @author Laurent Huault
  */
-public class GRestore extends OperatorProcessor
+public class Restore extends OperatorProcessor
 {
-	
-    /**
-     * Log instance.
-     */
-    private static final Log LOG = LogFactory.getLog(GRestore.class);
+    private static final Log LOG = LogFactory.getLog(Restore.class);
 
-    /**
-     * {@inheritDoc}
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments)
+    @Override
+    public void process(Operator operator, List<COSBase> arguments)
     {
     	if (context.getGraphicsStackSize() > 0)
     	{
@@ -48,7 +43,6 @@ public class GRestore extends OperatorPr
     	else
     	{
     		// this shouldn't happen but it does, see PDFBOX-161
-    		// TODO make this self healing mechanism optional for preflight??
     		LOG.debug("GRestore: no graphics state left to be restored.");
     	}
     }

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Save.java (from r1609347, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/GSave.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Save.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Save.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/GSave.java&r1=1609347&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/GSave.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/Save.java Sat Jul 12 18:35:46 2014
@@ -14,28 +14,24 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.state;
 
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.OperatorProcessor;
 
 /**
+ * q: Save the graphics state.
  *
- * @author Huault : huault@free.fr
- * @version $Revision: 1.4 $
+ * @author Laurent Huault
  */
-
-public class GSave extends OperatorProcessor
+public class Save extends OperatorProcessor
 {
-    /**
-     * process : q : Save graphics state.
-     * @param operator The operator that is being executed.
-     * @param arguments List
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments)
+    @Override
+    public void process(Operator operator, List<COSBase> arguments)
     {
         context.saveGraphicsState();
     }
-
 }

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetGraphicsStateParameters.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetGraphicsStateParameters.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetGraphicsStateParameters.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetGraphicsStateParameters.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetGraphicsStateParameters.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetGraphicsStateParameters.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetGraphicsStateParameters.java Sat Jul 12 18:35:46 2014
@@ -14,38 +14,31 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.state;
 
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSName;
 import org.apache.pdfbox.pdmodel.graphics.state.PDExtendedGraphicsState;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.OperatorProcessor;
 
 import java.io.IOException;
 
 /**
- * <p>Structal modification of the PDFEngine class :
- * the long sequence of conditions in processOperator is remplaced by
- * this strategy pattern.</p>
+ * gs: Set parameters from graphics state parameter dictionary.
  *
- * @author <a href="mailto:ben@benlitchfield.com">Ben Litchfield</a>
- * @version $Revision: 1.5 $
+ * @author Ben Litchfield
  */
-
 public class SetGraphicsStateParameters extends OperatorProcessor
 {
-    /**
-     * gs Set parameters from graphics state parameter dictionary.
-     * @param operator The operator that is being executed.
-     * @param arguments List
-     * @throws IOException If an error occurs while processing the font.
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
+    @Override
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
-        //set parameters from graphics state parameter dictionary
+        // set parameters from graphics state parameter dictionary
         COSName graphicsName = (COSName)arguments.get( 0 );
-        PDExtendedGraphicsState gs = (PDExtendedGraphicsState)context.getGraphicsStates().get( graphicsName.getName() );
+        PDExtendedGraphicsState gs = context.getGraphicsStates().get( graphicsName.getName() );
         gs.copyIntoGraphicsState( context.getGraphicsState() );
     }
 }

Copied: pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetLineCapStyle.java (from r1609836, pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetLineCapStyle.java)
URL: http://svn.apache.org/viewvc/pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetLineCapStyle.java?p2=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetLineCapStyle.java&p1=pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetLineCapStyle.java&r1=1609836&r2=1610021&rev=1610021&view=diff
==============================================================================
--- pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/SetLineCapStyle.java (original)
+++ pdfbox/trunk/pdfbox/src/main/java/org/apache/pdfbox/util/operator/state/SetLineCapStyle.java Sat Jul 12 18:35:46 2014
@@ -14,32 +14,26 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.pdfbox.util.operator;
+package org.apache.pdfbox.util.operator.state;
 
 import java.util.List;
 
 import org.apache.pdfbox.cos.COSBase;
 import org.apache.pdfbox.cos.COSNumber;
+import org.apache.pdfbox.util.operator.Operator;
+import org.apache.pdfbox.util.operator.OperatorProcessor;
 
 import java.io.IOException;
 
 /**
- * Implementation of content stream operator for page drawer.
+ * J: Set the line cap style.
  *
- * @author <a href="mailto:andreas@lehmi.de>Andreas Lehmkühler</a>
- * @version $Revision: 1.0 $
+ * @author Andreas Lehmkühler
  */
 public class SetLineCapStyle extends OperatorProcessor
 {
-
-    /**
-     * Set the line cap style.
-     * @param operator The operator that is being executed.
-     * @param arguments List
-     *
-     * @throws IOException If an error occurs while processing the font.
-     */
-    public void process(PDFOperator operator, List<COSBase> arguments) throws IOException
+    @Override
+    public void process(Operator operator, List<COSBase> arguments) throws IOException
     {
         int lineCapStyle = ((COSNumber)arguments.get( 0 )).intValue();
         context.getGraphicsState().setLineCap( lineCapStyle );