Class AFPGraphics2D

  • All Implemented Interfaces:
    java.lang.Cloneable, NativeImageHandler

    public class AFPGraphics2D
    extends org.apache.xmlgraphics.java2d.AbstractGraphics2D
    implements NativeImageHandler
    This is a concrete implementation of AbstractGraphics2D (and therefore of Graphics2D) which is able to generate GOCA byte codes.
    See Also:
    AbstractGraphics2D
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected org.apache.xmlgraphics.java2d.TextHandler customTextHandler
      Custom text handler
      protected org.apache.xmlgraphics.java2d.TextHandler fallbackTextHandler
      Fallback text handler
      private FontInfo fontInfo
      The AFP FontInfo
      private org.apache.xmlgraphics.java2d.GraphicsConfigurationWithTransparency graphicsConfig
      AFP graphics configuration
      private GraphicsObject graphicsObj
      graphics object
      private static org.apache.commons.logging.Log LOG  
      private AFPPaintingState paintingState
      Current AFP state
      private AFPResourceInfo resourceInfo
      AFP resource info
      private AFPResourceManager resourceManager
      AFP resource manager
      private static int X  
      private static int X1  
      private static int X2  
      private static int X3  
      private static int Y  
      private static int Y1  
      private static int Y2  
      private static int Y3  
      • Fields inherited from class org.apache.xmlgraphics.java2d.AbstractGraphics2D

        gc, inPossibleRecursion, textAsShapes
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addNativeImage​(org.apache.xmlgraphics.image.loader.Image image, float x, float y, float width, float height)
      Add a natively handled image directly to the document.
      private boolean applyPaint​(java.awt.Paint paint, boolean fill)
      Apply the java paint to the AFP.
      protected void applyStroke​(java.awt.Stroke stroke)
      Apply the stroke to the AFP graphics object.
      private java.awt.image.BufferedImage buildBufferedImage​(java.awt.Dimension size)  
      void clearRect​(int x, int y, int width, int height)  
      double convertToAbsoluteLength​(double length)
      Converts a length value to an absolute value.
      void copyArea​(int x, int y, int width, int height, int dx, int dy)
      java.awt.Graphics create()
      void dispose()
      private void doDrawing​(java.awt.Shape shape, boolean fill)
      Handle the Batik drawing event
      void draw​(java.awt.Shape shape)
      private boolean drawBufferedImage​(java.awt.Image img, java.awt.image.BufferedImage bufferedImage, int width, int height, java.awt.image.ImageObserver observer)
      Draws an AWT image into a BufferedImage using an AWT Graphics2D implementation
      boolean drawImage​(java.awt.Image img, int x, int y, int width, int height, java.awt.image.ImageObserver observer)
      boolean drawImage​(java.awt.Image img, int x, int y, java.awt.image.ImageObserver observer)
      void drawRenderableImage​(java.awt.image.renderable.RenderableImage img, java.awt.geom.AffineTransform xform)
      void drawRenderedImage​(java.awt.image.RenderedImage img, java.awt.geom.AffineTransform xform)
      void drawString​(java.lang.String str, float x, float y)
      void fill​(java.awt.Shape shape)
      private void flush​(java.util.List<java.lang.Integer> fillets)  
      java.awt.GraphicsConfiguration getDeviceConfiguration()
      FontInfo getFontInfo()
      Returns the FontInfo
      java.awt.FontMetrics getFontMetrics​(java.awt.Font f)
      GraphicsObject getGraphicsObject()
      Returns the GOCA graphics object
      AFPPaintingState getPaintingState()
      Returns the AFP painting state
      private int getResolution()  
      AFPResourceManager getResourceManager()
      Returns the AFP resource manager associated with this Graphics2D instance.
      void handleIOException​(java.io.IOException ioe)
      Central handler for IOExceptions for this class.
      private java.util.List<int[]> listToIntLists​(java.util.List<java.lang.Integer> input)  
      private void processPathIterator​(java.awt.geom.PathIterator iter)
      Processes a path iterator generating the necessary painting operations.
      void setCustomTextHandler​(org.apache.xmlgraphics.java2d.TextHandler handler)
      Sets a custom TextHandler implementation that is responsible for painting text.
      private void setFontInfo​(FontInfo fontInfo)
      Sets the FontInfo
      void setGraphicContext​(org.apache.xmlgraphics.java2d.GraphicContext gc)
      Sets the GraphicContext
      void setGraphicsObject​(GraphicsObject obj)
      Sets the GOCA graphics object
      private void setPaintingState​(AFPPaintingState paintingState)
      Sets the AFP painting state
      private void setResourceInfo​(AFPResourceInfo resourceInfo)
      Sets the AFP resource info
      private void setResourceManager​(AFPResourceManager resourceManager)
      Sets the AFP resource manager
      void setXORMode​(java.awt.Color col)
      • Methods inherited from class org.apache.xmlgraphics.java2d.AbstractGraphics2D

        addRenderingHints, clip, clipRect, drawArc, drawGlyphVector, drawImage, drawImage, drawImage, drawImage, drawImage, drawImage, drawLine, drawOval, drawPolygon, drawPolyline, drawRect, drawRoundRect, drawString, drawString, drawString, fillArc, fillOval, fillPolygon, fillRect, fillRoundRect, getBackground, getClip, getClipBounds, getColor, getComposite, getFont, getFontRenderContext, getGraphicContext, getPaint, getRenderingHint, getRenderingHints, getStroke, getTransform, hit, rotate, rotate, scale, setBackground, setClip, setClip, setColor, setComposite, setFont, setPaint, setPaintMode, setRenderingHint, setRenderingHints, setStroke, setTransform, shear, transform, translate, translate
      • Methods inherited from class java.awt.Graphics2D

        draw3DRect, fill3DRect
      • Methods inherited from class java.awt.Graphics

        create, drawBytes, drawChars, drawPolygon, fillPolygon, finalize, getClipBounds, getClipRect, getFontMetrics, hitClip, toString
      • Methods inherited from class java.lang.Object

        clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Field Detail

      • LOG

        private static final org.apache.commons.logging.Log LOG
      • fallbackTextHandler

        protected org.apache.xmlgraphics.java2d.TextHandler fallbackTextHandler
        Fallback text handler
      • customTextHandler

        protected org.apache.xmlgraphics.java2d.TextHandler customTextHandler
        Custom text handler
      • graphicsConfig

        private final org.apache.xmlgraphics.java2d.GraphicsConfigurationWithTransparency graphicsConfig
        AFP graphics configuration
      • fontInfo

        private FontInfo fontInfo
        The AFP FontInfo
    • Constructor Detail

      • AFPGraphics2D

        public AFPGraphics2D​(boolean textAsShapes,
                             AFPPaintingState paintingState,
                             AFPResourceManager resourceManager,
                             AFPResourceInfo resourceInfo,
                             FontInfo fontInfo)
        Main constructor
        Parameters:
        textAsShapes - if true, all text is turned into shapes in the convertion. No text is output.
        paintingState - painting state
        resourceManager - resource manager
        resourceInfo - resource info
        fontInfo - font info
      • AFPGraphics2D

        public AFPGraphics2D​(AFPGraphics2D g2d)
        Copy Constructor
        Parameters:
        g2d - a AFPGraphics2D whose properties should be copied
    • Method Detail

      • setResourceManager

        private void setResourceManager​(AFPResourceManager resourceManager)
        Sets the AFP resource manager
        Parameters:
        resourceManager - the AFP resource manager
      • getResourceManager

        public AFPResourceManager getResourceManager()
        Returns the AFP resource manager associated with this Graphics2D instance.
        Returns:
        the resource manager
      • setResourceInfo

        private void setResourceInfo​(AFPResourceInfo resourceInfo)
        Sets the AFP resource info
        Parameters:
        resourceInfo - the AFP resource info
      • getGraphicsObject

        public GraphicsObject getGraphicsObject()
        Returns the GOCA graphics object
        Returns:
        the GOCA graphics object
      • setGraphicsObject

        public void setGraphicsObject​(GraphicsObject obj)
        Sets the GOCA graphics object
        Parameters:
        obj - the GOCA graphics object
      • setPaintingState

        private void setPaintingState​(AFPPaintingState paintingState)
        Sets the AFP painting state
        Parameters:
        paintingState - the AFP painting state
      • getPaintingState

        public AFPPaintingState getPaintingState()
        Returns the AFP painting state
        Returns:
        the AFP painting state
      • setFontInfo

        private void setFontInfo​(FontInfo fontInfo)
        Sets the FontInfo
        Parameters:
        fontInfo - the FontInfo
      • getFontInfo

        public FontInfo getFontInfo()
        Returns the FontInfo
        Returns:
        the FontInfo
      • setGraphicContext

        public void setGraphicContext​(org.apache.xmlgraphics.java2d.GraphicContext gc)
        Sets the GraphicContext
        Parameters:
        gc - GraphicContext to use
      • getResolution

        private int getResolution()
      • convertToAbsoluteLength

        public double convertToAbsoluteLength​(double length)
        Converts a length value to an absolute value. Please note that this only uses the "ScaleY" factor, so this will result in a bad value should "ScaleX" and "ScaleY" be different.
        Parameters:
        length - the length
        Returns:
        the absolute length
      • applyStroke

        protected void applyStroke​(java.awt.Stroke stroke)
        Apply the stroke to the AFP graphics object. This takes the java stroke and outputs the appropriate settings to the AFP graphics object so that the stroke attributes are handled.
        Parameters:
        stroke - the java stroke
      • applyPaint

        private boolean applyPaint​(java.awt.Paint paint,
                                   boolean fill)
        Apply the java paint to the AFP. This takes the java paint sets up the appropriate AFP commands for the drawing with that paint. Currently this supports the gradients and patterns from batik.
        Parameters:
        paint - the paint to convert to AFP
        fill - true if the paint should be set for filling
        Returns:
        true if the paint is handled natively, false if the paint should be rasterized
      • doDrawing

        private void doDrawing​(java.awt.Shape shape,
                               boolean fill)
        Handle the Batik drawing event
        Parameters:
        shape - the shape to draw
        fill - true if the shape is to be drawn filled
      • processPathIterator

        private void processPathIterator​(java.awt.geom.PathIterator iter)
        Processes a path iterator generating the necessary painting operations.
        Parameters:
        iter - PathIterator to process
      • flush

        private void flush​(java.util.List<java.lang.Integer> fillets)
      • listToIntLists

        private java.util.List<int[]> listToIntLists​(java.util.List<java.lang.Integer> input)
      • draw

        public void draw​(java.awt.Shape shape)
        Specified by:
        draw in class java.awt.Graphics2D
      • fill

        public void fill​(java.awt.Shape shape)
        Specified by:
        fill in class java.awt.Graphics2D
      • handleIOException

        public void handleIOException​(java.io.IOException ioe)
        Central handler for IOExceptions for this class.
        Parameters:
        ioe - IOException to handle
      • drawString

        public void drawString​(java.lang.String str,
                               float x,
                               float y)
        Specified by:
        drawString in class java.awt.Graphics2D
      • getDeviceConfiguration

        public java.awt.GraphicsConfiguration getDeviceConfiguration()
        Specified by:
        getDeviceConfiguration in class java.awt.Graphics2D
      • create

        public java.awt.Graphics create()
        Specified by:
        create in class java.awt.Graphics
      • dispose

        public void dispose()
        Specified by:
        dispose in class java.awt.Graphics
      • drawImage

        public boolean drawImage​(java.awt.Image img,
                                 int x,
                                 int y,
                                 java.awt.image.ImageObserver observer)
        Specified by:
        drawImage in class java.awt.Graphics
      • buildBufferedImage

        private java.awt.image.BufferedImage buildBufferedImage​(java.awt.Dimension size)
      • drawBufferedImage

        private boolean drawBufferedImage​(java.awt.Image img,
                                          java.awt.image.BufferedImage bufferedImage,
                                          int width,
                                          int height,
                                          java.awt.image.ImageObserver observer)
        Draws an AWT image into a BufferedImage using an AWT Graphics2D implementation
        Parameters:
        img - the AWT image
        bufferedImage - the AWT buffered image
        width - the image width
        height - the image height
        observer - the image observer
        Returns:
        true if the image was drawn
      • drawImage

        public boolean drawImage​(java.awt.Image img,
                                 int x,
                                 int y,
                                 int width,
                                 int height,
                                 java.awt.image.ImageObserver observer)
        Specified by:
        drawImage in class java.awt.Graphics
      • drawRenderedImage

        public void drawRenderedImage​(java.awt.image.RenderedImage img,
                                      java.awt.geom.AffineTransform xform)
        Specified by:
        drawRenderedImage in class java.awt.Graphics2D
      • setCustomTextHandler

        public void setCustomTextHandler​(org.apache.xmlgraphics.java2d.TextHandler handler)
        Sets a custom TextHandler implementation that is responsible for painting text. The default TextHandler paints all text as shapes. A custom implementation can implement text painting using text painting operators.
        Parameters:
        handler - the custom TextHandler implementation
      • drawRenderableImage

        public void drawRenderableImage​(java.awt.image.renderable.RenderableImage img,
                                        java.awt.geom.AffineTransform xform)
        Specified by:
        drawRenderableImage in class java.awt.Graphics2D
      • getFontMetrics

        public java.awt.FontMetrics getFontMetrics​(java.awt.Font f)
        Specified by:
        getFontMetrics in class java.awt.Graphics
      • setXORMode

        public void setXORMode​(java.awt.Color col)
        Specified by:
        setXORMode in class java.awt.Graphics
      • addNativeImage

        public void addNativeImage​(org.apache.xmlgraphics.image.loader.Image image,
                                   float x,
                                   float y,
                                   float width,
                                   float height)
        Add a natively handled image directly to the document. This is used by the ImageElementBridge to draw a natively handled image (like JPEG or CCITT images) directly into the document rather than converting the image into a bitmap and increasing the size.
        Specified by:
        addNativeImage in interface NativeImageHandler
        Parameters:
        image - the image to draw
        x - the x position
        y - the y position
        width - the width to draw the image
        height - the height to draw the image
      • copyArea

        public void copyArea​(int x,
                             int y,
                             int width,
                             int height,
                             int dx,
                             int dy)
        Specified by:
        copyArea in class java.awt.Graphics
      • clearRect

        public void clearRect​(int x,
                              int y,
                              int width,
                              int height)
        Overrides:
        clearRect in class org.apache.xmlgraphics.java2d.AbstractGraphics2D