Class PSGraphicsPainter

java.lang.Object
org.apache.fop.render.ps.PSGraphicsPainter
All Implemented Interfaces:
BezierCurvePainter, GraphicsPainter

public class PSGraphicsPainter extends Object implements GraphicsPainter, BezierCurvePainter
PostScript-specific implementation of the BorderPainter.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    Used for drawing arcs since PS does not natively support drawing elliptic curves
    private final org.apache.xmlgraphics.ps.PSGenerator
     
    private static org.apache.commons.logging.Log
    logging instance
  • Constructor Summary

    Constructors
    Constructor
    Description
    PSGraphicsPainter(org.apache.xmlgraphics.ps.PSGenerator generator)
    Creates a new border painter for PostScript.
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    arcTo(double startAngle, double endAngle, int cx, int cy, int width, int height)
    Draws an arc on the ellipse centered at (cx, cy) with width width and height height from start angle startAngle (with respect to the x-axis counter-clockwise) to the end angle endAngle.
    void
    Reduces the current clipping region to the current path.
    private void
    clipRect(int x, int y, int width, int height)
     
    void
    Closes the current path.
    void
    cubicBezierTo(int p1x, int p1y, int p2x, int p2y, int p3x, int p3y)
    Draw a cubic bezier from current position to (p3x, p3y) using the control points (p1x, p1y) and (p2x, p2y)
    void
    drawBorderLine(int x1, int y1, int x2, int y2, boolean horz, boolean startOrBefore, int style, Color col)
    Draws a border line.
    static void
    drawBorderLine(org.apache.xmlgraphics.ps.PSGenerator gen, float x1, float y1, float x2, float y2, boolean horz, boolean startOrBefore, int style, Color col)
    void
    drawLine(Point start, Point end, int width, Color color, RuleStyle style)
    Draws a line/rule.
    private static void
    drawLine(org.apache.xmlgraphics.ps.PSGenerator gen, float startx, float starty, float endx, float endy)
     
    void
    lineTo(int x, int y)
    Draws a line from the current cursor position to the given coordinates.
    void
    moveTo(int x, int y)
    Moves the cursor to the given coordinate.
    void
    Restore the last graphics state from the stack.
    void
    rotateCoordinates(double angle)
    Rotate the coordinate frame
    void
    Save the graphics state on the stack.
    void
    scaleCoordinates(float xScale, float yScale)
    Scale the coordinate frame
    private static float
    toPoints(int mpt)
     
    void
    translateCoordinates(int xTranslate, int yTranslate)
    Translate the coordinate frame

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • log

      private static org.apache.commons.logging.Log log
      logging instance
    • generator

      private final org.apache.xmlgraphics.ps.PSGenerator generator
    • arcToBezierCurveTransformer

      private final ArcToBezierCurveTransformer arcToBezierCurveTransformer
      Used for drawing arcs since PS does not natively support drawing elliptic curves
  • Constructor Details

    • PSGraphicsPainter

      public PSGraphicsPainter(org.apache.xmlgraphics.ps.PSGenerator generator)
      Creates a new border painter for PostScript.
      Parameters:
      generator - the PostScript generator
  • Method Details

    • drawBorderLine

      public void drawBorderLine(int x1, int y1, int x2, int y2, boolean horz, boolean startOrBefore, int style, Color col) throws IOException
      Draws a border line.
      Specified by:
      drawBorderLine in interface GraphicsPainter
      Parameters:
      x1 - X coordinate of the upper left corner of the line's bounding rectangle (in millipoints)
      y1 - start Y coordinate of the upper left corner of the line's bounding rectangle (in millipoints)
      x2 - end X coordinate of the lower right corner of the line's bounding rectangle (in millipoints)
      y2 - end y coordinate of the lower right corner of the line's bounding rectangle (in millipoints)
      horz - true if it is a horizontal line
      startOrBefore - true if the line is the start or end edge of a border box
      style - the border style
      col - the border color
      Throws:
      IOException - if an I/O error occurs
    • drawLine

      private static void drawLine(org.apache.xmlgraphics.ps.PSGenerator gen, float startx, float starty, float endx, float endy) throws IOException
      Throws:
      IOException
    • drawBorderLine

      public static void drawBorderLine(org.apache.xmlgraphics.ps.PSGenerator gen, float x1, float y1, float x2, float y2, boolean horz, boolean startOrBefore, int style, Color col) throws IOException
      Throws:
      IOException
    • drawLine

      public void drawLine(Point start, Point end, int width, Color color, RuleStyle style) throws IOException
      Draws a line/rule.
      Specified by:
      drawLine in interface GraphicsPainter
      Parameters:
      start - start point (coordinates in millipoints)
      end - end point (coordinates in millipoints)
      width - width of the line
      color - the line color
      style - the rule style
      Throws:
      IOException - if an I/O error occurs
    • toPoints

      private static float toPoints(int mpt)
    • moveTo

      public void moveTo(int x, int y) throws IOException
      Moves the cursor to the given coordinate.
      Specified by:
      moveTo in interface GraphicsPainter
      Parameters:
      x - the X coordinate (in millipoints)
      y - the Y coordinate (in millipoints)
      Throws:
      IOException - if an I/O error occurs
    • lineTo

      public void lineTo(int x, int y) throws IOException
      Draws a line from the current cursor position to the given coordinates.
      Specified by:
      lineTo in interface GraphicsPainter
      Parameters:
      x - the X coordinate (in millipoints)
      y - the Y coordinate (in millipoints)
      Throws:
      IOException - if an I/O error occurs
    • arcTo

      public void arcTo(double startAngle, double endAngle, int cx, int cy, int width, int height) throws IOException
      Draws an arc on the ellipse centered at (cx, cy) with width width and height height from start angle startAngle (with respect to the x-axis counter-clockwise) to the end angle endAngle. The ellipses major axis are assumed to coincide with the coordinate axis. The current position MUST coincide with the starting position on the ellipse.
      Specified by:
      arcTo in interface GraphicsPainter
      Parameters:
      startAngle - the start angle
      endAngle - the end angle
      cx - the x coordinate of the ellipse center
      cy - the y coordinate of the ellipse center
      width - the extent of the ellipse in the x direction
      height - the extent of the ellipse in the y direction
      Throws:
      IOException - if an I/O error occurs
    • closePath

      public void closePath() throws IOException
      Closes the current path.
      Specified by:
      closePath in interface GraphicsPainter
      Throws:
      IOException - if an I/O error occurs
    • clipRect

      private void clipRect(int x, int y, int width, int height) throws IOException
      Throws:
      IOException
    • clip

      public void clip() throws IOException
      Reduces the current clipping region to the current path.
      Specified by:
      clip in interface GraphicsPainter
      Throws:
      IOException - if an I/O error occurs
    • saveGraphicsState

      public void saveGraphicsState() throws IOException
      Save the graphics state on the stack.
      Specified by:
      saveGraphicsState in interface GraphicsPainter
      Throws:
      IOException - if an I/O error occurs
    • restoreGraphicsState

      public void restoreGraphicsState() throws IOException
      Restore the last graphics state from the stack.
      Specified by:
      restoreGraphicsState in interface GraphicsPainter
      Throws:
      IOException - if an I/O error occurs
    • rotateCoordinates

      public void rotateCoordinates(double angle) throws IOException
      Rotate the coordinate frame
      Specified by:
      rotateCoordinates in interface GraphicsPainter
      Parameters:
      angle - angle in radians to rotate the coordinate frame
      Throws:
      IOException - if an I/O error occurs
    • translateCoordinates

      public void translateCoordinates(int xTranslate, int yTranslate) throws IOException
      Translate the coordinate frame
      Specified by:
      translateCoordinates in interface GraphicsPainter
      Parameters:
      xTranslate - translation in the x direction
      yTranslate - translation in the y direction
      Throws:
      IOException - if an I/O error occurs
    • scaleCoordinates

      public void scaleCoordinates(float xScale, float yScale) throws IOException
      Scale the coordinate frame
      Specified by:
      scaleCoordinates in interface GraphicsPainter
      Parameters:
      xScale - scale factor in the x direction
      yScale - scale factor in the y direction
      Throws:
      IOException - if an I/O error occurs
    • cubicBezierTo

      public void cubicBezierTo(int p1x, int p1y, int p2x, int p2y, int p3x, int p3y) throws IOException
      Draw a cubic bezier from current position to (p3x, p3y) using the control points (p1x, p1y) and (p2x, p2y)
      Specified by:
      cubicBezierTo in interface BezierCurvePainter
      Parameters:
      p1x - x coordinate of the first control point
      p1y - y coordinate of the first control point
      p2x - x coordinate of the second control point
      p2y - y coordinate of the second control point
      p3x - x coordinate of the end point
      p3y - y coordinate of the end point
      Throws:
      IOException - if an I/O error occurs