com.sun.pdfview

## Class PDFRenderer

- java.lang.Object
- - com.sun.pdfview.BaseWatchable
  - - com.sun.pdfview.PDFRenderer

All Implemented Interfaces:
  Watchable, java.lang.Runnable

    public class PDFRenderer
    extends BaseWatchable
    implements java.lang.Runnable

This class turns a set of PDF Commands from a PDF page into an image. It encapsulates the state of drawing in terms of stroke, fill, transform, etc., as well as pushing and popping these states. When the run method is called, this class goes through all remaining commands in the PDF Page and draws them to its buffered image. It then updates any ImageConsumers with the drawn data.

### Field Summary

Fields
`static int` `NOCAP`
`static float[]` `NODASH`
`static int` `NOJOIN`
`static float` `NOLIMIT`
`static float` `NOPHASE`
`static float` `NOWIDTH`
`static long` `UPDATE_DURATION` how long (in milliseconds) to wait between image updates

### Fields inherited from interface com.sun.pdfview.Watchable

`COMPLETED, ERROR, NEEDS_DATA, NOT_STARTED, PAUSED, RUNNING, STOPPED, UNKNOWN`

### Constructor Summary

Constructors
Constructor and Description
`PDFRenderer(PDFPage page, java.awt.Graphics2D g, java.awt.Rectangle imgbounds, java.awt.geom.Rectangle2D clip, java.awt.Color bgColor)` create a new PDFGraphics state, given a Graphics2D.
`PDFRenderer(PDFPage page, ImageInfo imageinfo, java.awt.image.BufferedImage bi)` create a new PDFGraphics state

### Method Summary

Methods
`void` `addObserver(java.awt.image.ImageObserver observer)` Add an image observer
`void` `cleanup()` Called when iteration has stopped
`void` `clip(java.awt.geom.GeneralPath s)` add the path to the current clip.
`void` `draw(java.awt.geom.GeneralPath p, java.awt.BasicStroke bs)` draw an outline.
`java.awt.geom.Rectangle2D` `drawImage(PDFImage image)` draw an image.
`java.awt.geom.Rectangle2D` `fill(java.awt.geom.GeneralPath s)` fill an outline using the current fill paint
`java.awt.geom.AffineTransform` `getInitialTransform()` get the initial transform from page space to Java space
`java.awt.geom.GeneralPath` `getLastShape()` Get the last shape drawn
`java.awt.BasicStroke` `getStroke()` get the current stroke as a BasicStroke
`java.awt.geom.AffineTransform` `getTransform()` get the current affinetransform
`int` `iterate()` Draws the next command in the PDFPage to the buffered image.
`void` `pop()` restore the state of this object to what it was when the previous push() was called.
`void` `push()` push the current graphics state onto the stack.
`void` `removeObserver(java.awt.image.ImageObserver observer)` Remove an image observer
`void` `setFillAlpha(float alpha)` set the stroke alpha
`void` `setFillPaint(PDFPaint paint)` set the fill color
`void` `setLastShape(java.awt.geom.GeneralPath shape)` Set the last shape drawn
`void` `setStroke(java.awt.BasicStroke bs)` set the current stroke as a BasicStroke
`void` `setStrokeAlpha(float alpha)` set the stroke alpha
`void` `setStrokePaint(PDFPaint paint)` set the stroke color
`void` `setStrokeParts(float w, int cap, int join, float limit, float[] ary, float phase)` Set some or all aspects of the current stroke.
`void` `setTransform(java.awt.geom.AffineTransform at)` replace the current transform with the given one.
`void` `setup()` Setup rendering.
`java.awt.geom.Rectangle2D` `stroke(java.awt.geom.GeneralPath s)` draw an outline using the current stroke and draw paint
`void` `transform(java.awt.geom.AffineTransform at)` concatenate the given transform with the current transform

### Methods inherited from class com.sun.pdfview.BaseWatchable

`execute, getStatus, go, go, go, go, isExecutable, isFinished, isSuppressSetErrorStackTrace, run, setError, setStatus, setSuppressSetErrorStackTrace, stop, waitForFinish`

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

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

### Methods inherited from interface java.lang.Runnable

`run`

### Field Detail

#### UPDATE_DURATION

    public static final long UPDATE_DURATION

how long (in milliseconds) to wait between image updates

See Also:
  Constant Field Values

#### NOPHASE

    public static final float NOPHASE

See Also:
  Constant Field Values

#### NOWIDTH

    public static final float NOWIDTH

See Also:
  Constant Field Values

#### NOLIMIT

    public static final float NOLIMIT

See Also:
  Constant Field Values

#### NOCAP

    public static final int NOCAP

See Also:
  Constant Field Values

#### NODASH

    public static final float[] NODASH

#### NOJOIN

    public static final int NOJOIN

See Also:
  Constant Field Values

### Constructor Detail

#### PDFRenderer

    public PDFRenderer(PDFPage page,
               ImageInfo imageinfo,
               java.awt.image.BufferedImage bi)

create a new PDFGraphics state

Parameters:
  `page` - the current page
  `imageinfo` - the paramters of the image to render

#### PDFRenderer

    public PDFRenderer(PDFPage page,
               java.awt.Graphics2D g,
               java.awt.Rectangle imgbounds,
               java.awt.geom.Rectangle2D clip,
               java.awt.Color bgColor)

create a new PDFGraphics state, given a Graphics2D. This version will not create an image, and you will get a NullPointerException if you attempt to call getImage().

Parameters:
  `page` - the current page
  `g` - the Graphics2D object to use for drawing
  `imgbounds` - the bounds of the image into which to fit the page
  `clip` - the portion of the page to draw, in page space, or null if the whole page should be drawn
  `bgColor` - the color to draw the background of the image, or null for no color (0 alpha value)

### Method Detail

#### push

    public void push()

push the current graphics state onto the stack. Continue working with the current object; calling pop() restores the state of this object to its state when push() was called.

#### pop

    public void pop()

restore the state of this object to what it was when the previous push() was called.

#### stroke

    public java.awt.geom.Rectangle2D stroke(java.awt.geom.GeneralPath s)

draw an outline using the current stroke and draw paint

Parameters:
  `s` - the path to stroke
Returns:
  a Rectangle2D to which the current region being drawn will be added. May also be null, in which case no dirty region will be recorded.

#### draw

    public void draw(java.awt.geom.GeneralPath p,
            java.awt.BasicStroke bs)

draw an outline.

Parameters:
  `p` - the path to draw
  `bs` - the stroke with which to draw the path

#### fill

    public java.awt.geom.Rectangle2D fill(java.awt.geom.GeneralPath s)

fill an outline using the current fill paint

Parameters:
  `s` - the path to fill

#### drawImage

    public java.awt.geom.Rectangle2D drawImage(PDFImage image)

draw an image.

Parameters:
  `image` - the image to draw

#### clip

    public void clip(java.awt.geom.GeneralPath s)

add the path to the current clip. The new clip will be the intersection of the old clip and given path.

#### getTransform

    public java.awt.geom.AffineTransform getTransform()

get the current affinetransform

#### transform

    public void transform(java.awt.geom.AffineTransform at)

concatenate the given transform with the current transform

#### setTransform

    public void setTransform(java.awt.geom.AffineTransform at)

replace the current transform with the given one.

#### getInitialTransform

    public java.awt.geom.AffineTransform getInitialTransform()

get the initial transform from page space to Java space

#### setStrokeParts

    public void setStrokeParts(float w,
                      int cap,
                      int join,
                      float limit,
                      float[] ary,
                      float phase)

Set some or all aspects of the current stroke.

Parameters:
  `w` - the width of the stroke, or NOWIDTH to leave it unchanged
  `cap` - the end cap style, or NOCAP to leave it unchanged
  `join` - the join style, or NOJOIN to leave it unchanged
  `limit` - the miter limit, or NOLIMIT to leave it unchanged
  `phase` - the phase of the dash array, or NOPHASE to leave it unchanged
  `ary` - the dash array, or null to leave it unchanged. phase and ary must both be valid, or phase must be NOPHASE while ary is null.

#### getStroke

    public java.awt.BasicStroke getStroke()

get the current stroke as a BasicStroke

#### setStroke

    public void setStroke(java.awt.BasicStroke bs)

set the current stroke as a BasicStroke

#### setStrokePaint

    public void setStrokePaint(PDFPaint paint)

set the stroke color

#### setFillPaint

    public void setFillPaint(PDFPaint paint)

set the fill color

#### setStrokeAlpha

    public void setStrokeAlpha(float alpha)

set the stroke alpha

#### setFillAlpha

    public void setFillAlpha(float alpha)

set the stroke alpha

#### addObserver

    public void addObserver(java.awt.image.ImageObserver observer)

Add an image observer

#### removeObserver

    public void removeObserver(java.awt.image.ImageObserver observer)

Remove an image observer

#### setLastShape

    public void setLastShape(java.awt.geom.GeneralPath shape)

Set the last shape drawn

#### getLastShape

    public java.awt.geom.GeneralPath getLastShape()

Get the last shape drawn

#### setup

    public void setup()

Setup rendering. Called before iteration begins

Overrides:
  `setup` in class `BaseWatchable`

#### iterate

    public int iterate()
                throws java.lang.Exception

Draws the next command in the PDFPage to the buffered image. The image will be notified about changes no less than every UPDATE_DURATION milliseconds.

Specified by:
  `iterate` in class `BaseWatchable`
Returns:
  - Watchable.RUNNING when there are commands to be processed
  - Watchable.NEEDS_DATA when there are no commands to be processed, but the page is not yet complete
  - Watchable.COMPLETED when the page is done and all the commands have been processed
  - Watchable.STOPPED if the image we are rendering into has gone away
Throws:
  `java.lang.Exception`

#### cleanup

    public void cleanup()

Called when iteration has stopped

Overrides:
  `cleanup` in class `BaseWatchable`