org.apache.pdfbox.contentstream

## Class PDFGraphicsStreamEngine

- java.lang.Object
- - org.apache.pdfbox.contentstream.PDFStreamEngine
  - - org.apache.pdfbox.contentstream.PDFGraphicsStreamEngine

Direct Known Subclasses:
  PageDrawer

    public abstract class PDFGraphicsStreamEngine
    extends PDFStreamEngine

PDFStreamEngine subclass for advanced processing of graphics. This class should be subclassed by end users looking to hook into graphics operations.

Author:
  John Hewson

### Constructor Summary

Constructors
`protected` `PDFGraphicsStreamEngine(PDPage page)` Constructor.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`abstract void` `appendRectangle(Point2D p0, Point2D p1, Point2D p2, Point2D p3)` Append a rectangle to the current path.
`abstract void` `clip(int windingRule)` Modify the current clipping path by intersecting it with the current path.
`abstract void` `closePath()` Closes the current path.
`abstract void` `curveTo(float x1, float y1, float x2, float y2, float x3, float y3)` Draws a curve from the current point to (x3,y3) using (x1,y1) and (x2,y2) as control points.
`abstract void` `drawImage(PDImage pdImage)` Draw the image.
`abstract void` `endPath()` Ends the current path without filling or stroking it.
`abstract void` `fillAndStrokePath(int windingRule)` Fills and then strokes the path.
`abstract void` `fillPath(int windingRule)` Fill the path.
`abstract Point2D` `getCurrentPoint()` Returns the current point of the current path.
`protected PDPage` `getPage()` Returns the page.
`abstract void` `lineTo(float x, float y)` Draws a line from the current point to (x,y).
`abstract void` `moveTo(float x, float y)` Starts a new path at (x,y).
`abstract void` `shadingFill(COSName shadingName)` Fill with Shading.
`abstract void` `strokePath()` Stroke the path.

### Methods inherited from class org.apache.pdfbox.contentstream.PDFStreamEngine

`addOperator, applyTextAdjustment, beginMarkedContentSequence, beginText, decreaseLevel, endMarkedContentSequence, endText, getAppearance, getCurrentPage, getGraphicsStackSize, getGraphicsState, getInitialMatrix, getLevel, getResources, getTextLineMatrix, getTextMatrix, increaseLevel, isShouldProcessColorOperators, operatorException, processAnnotation, processChildStream, processOperator, processOperator, processPage, processSoftMask, processTilingPattern, processTilingPattern, processTransparencyGroup, processType3Stream, registerOperatorProcessor, restoreGraphicsStack, restoreGraphicsState, saveGraphicsStack, saveGraphicsState, setLineDashPattern, setTextLineMatrix, setTextMatrix, showAnnotation, showFontGlyph, showFontGlyph, showForm, showGlyph, showGlyph, showText, showTextString, showTextStrings, showTransparencyGroup, showType3Glyph, showType3Glyph, transformedPoint, transformWidth, unsupportedOperator`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### PDFGraphicsStreamEngine

    protected PDFGraphicsStreamEngine(PDPage page)

Constructor.

### Method Detail

#### getPage

    protected final PDPage getPage()

Returns the page.

Returns:
  the page.

#### appendRectangle

    public abstract void appendRectangle(Point2D p0,
                                         Point2D p1,
                                         Point2D p2,
                                         Point2D p3)
                                  throws IOException

Append a rectangle to the current path.

Parameters:
  `p0` - point P0 of the rectangle.
  `p1` - point P1 of the rectangle.
  `p2` - point P2 of the rectangle.
  `p3` - point P3 of the rectangle.
Throws:
  `IOException` - if something went wrong.

#### drawImage

    public abstract void drawImage(PDImage pdImage)
                            throws IOException

Draw the image.

Parameters:
  `pdImage` - The image to draw.
Throws:
  `IOException` - if something went wrong.

#### clip

    public abstract void clip(int windingRule)
                       throws IOException

Modify the current clipping path by intersecting it with the current path. The clipping path will not be updated until the succeeding painting operator is called.

Parameters:
  `windingRule` - The winding rule which will be used for clipping.
Throws:
  `IOException` - if something went wrong.

#### moveTo

    public abstract void moveTo(float x,
                                float y)
                         throws IOException

Starts a new path at (x,y).

Parameters:
  `x` - x-coordinate of the target point.
  `y` - y-coordinate of the target point.
Throws:
  `IOException` - if something went wrong.

#### lineTo

    public abstract void lineTo(float x,
                                float y)
                         throws IOException

Draws a line from the current point to (x,y).

Parameters:
  `x` - x-coordinate of the end point of the line.
  `y` - y-coordinate of the end point of the line.
Throws:
  `IOException` - if something went wrong.

#### curveTo

    public abstract void curveTo(float x1,
                                 float y1,
                                 float x2,
                                 float y2,
                                 float x3,
                                 float y3)
                          throws IOException

Draws a curve from the current point to (x3,y3) using (x1,y1) and (x2,y2) as control points.

Parameters:
  `x1` - x-coordinate of the first control point.
  `y1` - y-coordinate of the first control point.
  `x2` - x-coordinate of the second control point.
  `y2` - y-coordinate of the second control point.
  `x3` - x-coordinate of the end point of the curve.
  `y3` - y-coordinate of the end point of the curve.
Throws:
  `IOException` - if something went wrong.

#### getCurrentPoint

    public abstract Point2D getCurrentPoint()
                                     throws IOException

Returns the current point of the current path.

Returns:
  the current point.
Throws:
  `IOException` - if something went wrong.

#### closePath

    public abstract void closePath()
                            throws IOException

Closes the current path.

Throws:
  `IOException` - if something went wrong.

#### endPath

    public abstract void endPath()
                          throws IOException

Ends the current path without filling or stroking it. The clipping path is updated here.

Throws:
  `IOException` - if something went wrong.

#### strokePath

    public abstract void strokePath()
                             throws IOException

Stroke the path.

Throws:
  `IOException` - If there is an IO error while stroking the path.

#### fillPath

    public abstract void fillPath(int windingRule)
                           throws IOException

Fill the path.

Parameters:
  `windingRule` - The winding rule this path will use.
Throws:
  `IOException` - if something went wrong.

#### fillAndStrokePath

    public abstract void fillAndStrokePath(int windingRule)
                                    throws IOException

Fills and then strokes the path.

Parameters:
  `windingRule` - The winding rule this path will use.
Throws:
  `IOException` - if something went wrong.

#### shadingFill

    public abstract void shadingFill(COSName shadingName)
                              throws IOException

Fill with Shading.

Parameters:
  `shadingName` - The name of the Shading Dictionary to use for this fill instruction.
Throws:
  `IOException` - if something went wrong.