gnu.awt.j2d

Class Graphics2DImpl

Implemented Interfaces:
Cloneable

public class Graphics2DImpl
extends Graphics2D
implements Cloneable

Delegates almost all work to a state object, that allows us to hot-swap rendering strategies based on state changes inflicted on this Graphics object. This class keeps track of properties that are not affected by the state, (such as clip shape, foreground/background color, font, etc.).

The far front-end of the rendering pipeline consists of the Graphics2D API. In the far back-end, lies the native graphics libraries. In most cases the native graphics libraries only have direct support for a subset of the properties of Graphics2D. To make up missing features in the native graphics libraries, the pipeline between the front-end and the back-end need to translate drawing request to primitive operations that are supported by the back-end. E.g. for X11, drawing a straight line will translate to an XDrawLine, drawing a bezier curve will trigger flattening of the curve and will result in a call to XDrawLines.

This is the basic strategy for the rendering pipeline: Whenever a graphics property change occurs, that causes the current pipeline to be insufficient, amend or replace parts of the pipeline so that the pipeline will once again be able to translate requests to the set of primitives supported by the native graphics library.

Most graphics libraries share common subsets of functionality. To be able to reuse pieces of the rendering pipeline for several backends, we define interfaces that describe subsets of characteristics supported by the backends. A wrapper for the native library can implement several interfaces to describe its range of functionality.

Typically, most painting is done with a graphics object with simple properties. Unless one is using a complex Look & Feel, the painting of Swing components will never require affine transforms, alpha blending, non-rectangular clipping, etc. When graphics objects are created, they start off in a state where all the properties are simple. Most graphics objects experience only trivial property changes, and never leave this simple state. It is therefore wise to ensure that the rendering pipeline for this initial state is lean and as much as possible plugs directly into the backend.

The initial state for graphics object of most raster displays would call for two levels of indirection:

 Graphics2D object ---> IntegerGraphicsState ---> DirectRasterGraphics
 

Constructor Summary

Graphics2DImpl(GraphicsConfiguration config)

Method Summary

void
addRenderingHints(Map hints)
void
clearRect(int x, int y, int width, int height)
Clears the specified rectangle.
void
clip(Shape shape)
void
clipRect(int x, int y, int width, int height)
Sets the clipping region to the intersection of the current clipping region and the rectangle determined by the specified parameters.
Object
clone()
This method may be called to create a new copy of the Object.
void
copyArea(int x, int y, int width, int height, int dx, int dy)
Copies the specified rectangle to the specified offset location.
Graphics
create()
Returns a copy of this Graphics object.
void
dispose()
Free any resources held by this graphics context immediately instead of waiting for the object to be garbage collected and finalized.
void
draw(Shape shape)
void
drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
Draws an arc using the specified bounding rectangle and the specified angle parameter.
void
drawGlyphVector(GlyphVector g, float x, float y)
boolean
drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, Color bgcolor, ImageObserver observer)
FIXME: Write Javadocs for this when you understand it.
boolean
drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
FIXME: Write Javadocs for this when you understand it.
boolean
drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)
Draws all of the image that is available and returns.
boolean
drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
Draws all of the image that is available and returns.
boolean
drawImage(Image img, int x, int y, Color bgcolor, ImageObserver observer)
Draws all of the image that is available and returns.
boolean
drawImage(Image image, int x, int y, ImageObserver observer)
Draws all of the image that is available and returns.
boolean
drawImage(Image image, AffineTransform xform, ImageObserver obs)
void
drawImage(BufferedImage image, BufferedImageOp op, int x, int y)
void
drawLine(int x1, int y1, int x2, int y2)
Draws a line between the two specified points.
void
drawOval(int x, int y, int width, int height)
Draws an oval that just fits within the specified rectangle.
void
drawPolygon(int[] xPoints, int[] yPoints, int nPoints)
void
drawPolyline(int[] xPoints, int[] yPoints, int nPoints)
void
drawRenderableImage(RenderableImage image, AffineTransform xform)
void
drawRenderedImage(RenderedImage image, AffineTransform xform)
void
drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
Draws the outline of the specified rectangle with rounded cornders.
void
drawString(String text, float x, float y)
void
drawString(String text, int x, int y)
Draws the specified string starting at the specified point.
void
drawString(AttributedCharacterIterator iterator, float x, float y)
void
drawString(AttributedCharacterIterator iterator, int x, int y)
void
fill(Shape shape)
void
fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
Fills the arc define by the specified bounding rectangle and the specified angle parameter.
void
fillOval(int x, int y, int width, int height)
Fills an oval that just fits within the specified rectangle.
void
fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
void
fillRect(int x, int y, int width, int height)
Fills the area bounded by the specified rectangle.
void
fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
Fills the specified rectangle with rounded cornders.
Color
getBackground()
Shape
getClip()
Returns the current clipping region as a Shape object.
Rectangle
getClipBounds()
Returns the bounding rectangle of the clipping region for this graphics context.
Color
getColor()
Returns the current color for this object.
Composite
getComposite()
GraphicsConfiguration
getDeviceConfiguration()
Font
getFont()
Returns the current font for this graphics context.
FontMetrics
getFontMetrics(Font font)
Returns the font metrics for the specified font.
FontRenderContext
getFontRenderContext()
Paint
getPaint()
Object
getRenderingHint(RenderingHints.Key hintKey)
RenderingHints
getRenderingHints()
Stroke
getStroke()
AffineTransform
getTransform()
boolean
hit(Rectangle rect, Shape text, boolean onStroke)
void
rotate(double theta)
void
rotate(double theta, double x, double y)
void
scale(double scaleX, double scaleY)
void
setBackground(Color color)
void
setClip(int x, int y, int width, int height)
Sets the clipping region to the rectangle determined by the specified parameters.
void
setClip(Shape clip)
Sets the clipping region to the specified Shape.
void
setColor(Color color)
Sets the current color for this object.
void
setComposite(Composite comp)
void
setFont(Font font)
Sets the font for this graphics context to the specified value.
void
setPaint(Paint paint)
void
setPaintMode()
Sets this context into "paint" mode, where the target pixels are completely overwritten when drawn on.
void
setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
void
setRenderingHints(Map hints)
void
setState(AbstractGraphicsState state)
void
setStroke(Stroke stroke)
void
setTransform(AffineTransform Tx)
void
setXORMode(Color altColor)
Sets this context info "XOR" mode, where the targe pixles are XOR-ed when drawn on.
void
shear(double shearX, double shearY)
void
transform(AffineTransform Tx)
void
translate(double tx, double ty)
void
translate(int x, int y)
Translates this context so that its new origin point is the point (x, y).

Methods inherited from class java.awt.Graphics2D

addRenderingHints, clip, draw, draw3DRect, drawGlyphVector, drawImage, drawImage, drawRenderableImage, drawRenderedImage, drawString, drawString, drawString, drawString, fill, fill3DRect, getBackground, getComposite, getDeviceConfiguration, getFontRenderContext, getPaint, getRenderingHint, getRenderingHints, getStroke, getTransform, hit, rotate, rotate, scale, setBackground, setComposite, setPaint, setRenderingHint, setRenderingHints, setStroke, setTransform, shear, transform, translate, translate

Methods inherited from class java.awt.Graphics

clearRect, clipRect, copyArea, create, create, dispose, draw3DRect, drawArc, drawBytes, drawChars, drawImage, drawImage, drawImage, drawImage, drawImage, drawImage, drawLine, drawOval, drawPolygon, drawPolygon, drawPolyline, drawRect, drawRoundRect, drawString, drawString, fill3DRect, fillArc, fillOval, fillPolygon, fillPolygon, fillRect, fillRoundRect, finalize, getClip, getClipBounds, getClipBounds, getClipRect, getColor, getFont, getFontMetrics, getFontMetrics, hitClip, setClip, setClip, setColor, setFont, setPaintMode, setXORMode, toString, translate

Methods inherited from class java.lang.Object

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

Constructor Details

Graphics2DImpl

public Graphics2DImpl(GraphicsConfiguration config)

Method Details

addRenderingHints

public void addRenderingHints(Map hints)
Overrides:
addRenderingHints in interface Graphics2D

clearRect

public void clearRect(int x,
                      int y,
                      int width,
                      int height)
Clears the specified rectangle.
Overrides:
clearRect in interface Graphics
Parameters:
x - The X coordinate of the upper left corner of the clear rect.
y - The Y coordinate of the upper left corner of the clear rect.
width - The width of the clear rect.
height - The height of the clear rect.

clip

public void clip(Shape shape)
Overrides:
clip in interface Graphics2D

clipRect

public void clipRect(int x,
                     int y,
                     int width,
                     int height)
Sets the clipping region to the intersection of the current clipping region and the rectangle determined by the specified parameters.
Overrides:
clipRect in interface Graphics
Parameters:
x - The X coordinate of the upper left corner of the intersect rect.
y - The Y coordinate of the upper left corner of the intersect rect.
width - The width of the intersect rect.
height - The height of the intersect rect.

clone

public Object clone()
This method may be called to create a new copy of the Object. The typical behavior is as follows:
  • o == o.clone() is false
  • o.getClass() == o.clone().getClass() is true
  • o.equals(o) is true

However, these are not strict requirements, and may be violated if necessary. Of the three requirements, the last is the most commonly violated, particularly if the subclass does not override Object.equals(Object).

If the Object you call clone() on does not implement Cloneable (which is a placeholder interface), then a CloneNotSupportedException is thrown. Notice that Object does not implement Cloneable; this method exists as a convenience for subclasses that do.

Object's implementation of clone allocates space for the new Object using the correct class, without calling any constructors, and then fills in all of the new field values with the old field values. Thus, it is a shallow copy. However, subclasses are permitted to make a deep copy.

All array types implement Cloneable, and override this method as follows (it should never fail):

 public Object clone()
 {
   try
     {
       super.clone();
     }
   catch (CloneNotSupportedException e)
     {
       throw new InternalError(e.getMessage());
     }
 }
 
Overrides:
clone in interface Object
Returns:
a copy of the Object
See Also:
Cloneable

copyArea

public void copyArea(int x,
                     int y,
                     int width,
                     int height,
                     int dx,
                     int dy)
Copies the specified rectangle to the specified offset location.
Overrides:
copyArea in interface Graphics
Parameters:
x - The X coordinate of the upper left corner of the copy rect.
y - The Y coordinate of the upper left corner of the copy rect.
width - The width of the copy rect.
height - The height of the copy rect.
dx - The offset from the X value to start drawing.
dy - The offset from the Y value to start drawing.

create

public Graphics create()
Returns a copy of this Graphics object.
Overrides:
create in interface Graphics
Returns:
A copy of this object.

dispose

public void dispose()
Free any resources held by this graphics context immediately instead of waiting for the object to be garbage collected and finalized.
Overrides:
dispose in interface Graphics

draw

public void draw(Shape shape)
Overrides:
draw in interface Graphics2D

drawArc

public void drawArc(int x,
                    int y,
                    int width,
                    int height,
                    int startAngle,
                    int arcAngle)
Draws an arc using the specified bounding rectangle and the specified angle parameter. The arc is centered at the center of the rectangle. The arc starts at the arcAngle position and extend for arcAngle degrees. The degree origin is at the 3 o'clock position.
Overrides:
drawArc in interface Graphics
Parameters:
x - The X coordinate of the upper left corner of the rect.
y - The Y coordinate of the upper left corner of the rect.
width - The width of the rect.
height - The height of the rect.
arcAngle - The extent of the arc.

drawGlyphVector

public void drawGlyphVector(GlyphVector g,
                            float x,
                            float y)
Overrides:
drawGlyphVector in interface Graphics2D

drawImage

public boolean drawImage(Image img,
                         int dx1,
                         int dy1,
                         int dx2,
                         int dy2,
                         int sx1,
                         int sy1,
                         int sx2,
                         int sy2,
                         Color bgcolor,
                         ImageObserver observer)
FIXME: Write Javadocs for this when you understand it.
Overrides:
drawImage in interface Graphics

drawImage

public boolean drawImage(Image img,
                         int dx1,
                         int dy1,
                         int dx2,
                         int dy2,
                         int sx1,
                         int sy1,
                         int sx2,
                         int sy2,
                         ImageObserver observer)
FIXME: Write Javadocs for this when you understand it.
Overrides:
drawImage in interface Graphics

drawImage

public boolean drawImage(Image img,
                         int x,
                         int y,
                         int width,
                         int height,
                         Color bgcolor,
                         ImageObserver observer)
Draws all of the image that is available and returns. The image is scaled to fit in the specified rectangle. If the image is not completely loaded, false is returned and the specified iamge observer is notified as more data becomes available.
Overrides:
drawImage in interface Graphics
Parameters:
x - The X coordinate of the point to draw at.
y - The Y coordinate of the point to draw at.
width - The width of the rectangle to draw in.
height - The height of the rectangle to draw in.
bgcolor - The background color to use for the image.
observer - The image observer to notify as data becomes available.
Returns:
true if all the image data is available, false otherwise.

drawImage

public boolean drawImage(Image img,
                         int x,
                         int y,
                         int width,
                         int height,
                         ImageObserver observer)
Draws all of the image that is available and returns. The image is scaled to fit in the specified rectangle. If the image is not completely loaded, false is returned and the specified iamge observer is notified as more data becomes available.
Overrides:
drawImage in interface Graphics
Parameters:
x - The X coordinate of the point to draw at.
y - The Y coordinate of the point to draw at.
width - The width of the rectangle to draw in.
height - The height of the rectangle to draw in.
observer - The image observer to notify as data becomes available.
Returns:
true if all the image data is available, false otherwise.

drawImage

public boolean drawImage(Image img,
                         int x,
                         int y,
                         Color bgcolor,
                         ImageObserver observer)
Draws all of the image that is available and returns. If the image is not completely loaded, false is returned and the specified iamge observer is notified as more data becomes available.
Overrides:
drawImage in interface Graphics
Parameters:
x - The X coordinate of the point to draw at.
y - The Y coordinate of the point to draw at.
bgcolor - The background color to use for the image.
observer - The image observer to notify as data becomes available.
Returns:
true if all the image data is available, false otherwise.

drawImage

public boolean drawImage(Image image,
                         int x,
                         int y,
                         ImageObserver observer)
Draws all of the image that is available and returns. If the image is not completely loaded, false is returned and the specified iamge observer is notified as more data becomes available.
Overrides:
drawImage in interface Graphics
Parameters:
image - The image to draw.
x - The X coordinate of the point to draw at.
y - The Y coordinate of the point to draw at.
observer - The image observer to notify as data becomes available.
Returns:
true if all the image data is available, false otherwise.

drawImage

public boolean drawImage(Image image,
                         AffineTransform xform,
                         ImageObserver obs)
Overrides:
drawImage in interface Graphics2D

drawImage

public void drawImage(BufferedImage image,
                      BufferedImageOp op,
                      int x,
                      int y)
Overrides:
drawImage in interface Graphics2D

drawLine

public void drawLine(int x1,
                     int y1,
                     int x2,
                     int y2)
Draws a line between the two specified points.
Overrides:
drawLine in interface Graphics
Parameters:
x1 - The X coordinate of the first point.
y1 - The Y coordinate of the first point.
x2 - The X coordinate of the second point.
y2 - The Y coordinate of the second point.

drawOval

public void drawOval(int x,
                     int y,
                     int width,
                     int height)
Draws an oval that just fits within the specified rectangle.
Overrides:
drawOval in interface Graphics
Parameters:
x - The X coordinate of the upper left corner of the rect.
y - The Y coordinate of the upper left corner of the rect.
width - The width of the rect.
height - The height of the rect.

drawPolygon

public void drawPolygon(int[] xPoints,
                        int[] yPoints,
                        int nPoints)

drawPolyline

public void drawPolyline(int[] xPoints,
                         int[] yPoints,
                         int nPoints)

drawRenderableImage

public void drawRenderableImage(RenderableImage image,
                                AffineTransform xform)
Overrides:
drawRenderableImage in interface Graphics2D

drawRenderedImage

public void drawRenderedImage(RenderedImage image,
                              AffineTransform xform)
Overrides:
drawRenderedImage in interface Graphics2D

drawRoundRect

public void drawRoundRect(int x,
                          int y,
                          int width,
                          int height,
                          int arcWidth,
                          int arcHeight)
Draws the outline of the specified rectangle with rounded cornders.
Overrides:
drawRoundRect in interface Graphics
Parameters:
x - The X coordinate of the upper left corner of the draw rect.
y - The Y coordinate of the upper left corner of the draw rect.
width - The width of the draw rect.
height - The height of the draw rect.
arcWidth - The width of the corner arcs.
arcHeight - The height of the corner arcs.

drawString

public void drawString(String text,
                       float x,
                       float y)
Overrides:
drawString in interface Graphics2D

drawString

public void drawString(String text,
                       int x,
                       int y)
Draws the specified string starting at the specified point.
Overrides:
drawString in interface Graphics2D
Parameters:
x - The X coordinate of the point to draw at.
y - The Y coordinate of the point to draw at.

drawString

public void drawString(AttributedCharacterIterator iterator,
                       float x,
                       float y)
Overrides:
drawString in interface Graphics2D

drawString

public void drawString(AttributedCharacterIterator iterator,
                       int x,
                       int y)
Overrides:
drawString in interface Graphics2D

fill

public void fill(Shape shape)
Overrides:
fill in interface Graphics2D

fillArc

public void fillArc(int x,
                    int y,
                    int width,
                    int height,
                    int startAngle,
                    int arcAngle)
Fills the arc define by the specified bounding rectangle and the specified angle parameter. The arc is centered at the center of the rectangle. The arc starts at the arcAngle position and extend for arcAngle degrees. The degree origin is at the 3 o'clock position.
Overrides:
fillArc in interface Graphics
Parameters:
x - The X coordinate of the upper left corner of the rect.
y - The Y coordinate of the upper left corner of the rect.
width - The width of the rect.
height - The height of the rect.
arcAngle - The extent of the arc.

fillOval

public void fillOval(int x,
                     int y,
                     int width,
                     int height)
Fills an oval that just fits within the specified rectangle.
Overrides:
fillOval in interface Graphics
Parameters:
x - The X coordinate of the upper left corner of the rect.
y - The Y coordinate of the upper left corner of the rect.
width - The width of the rect.
height - The height of the rect.

fillPolygon

public void fillPolygon(int[] xPoints,
                        int[] yPoints,
                        int nPoints)

fillRect

public void fillRect(int x,
                     int y,
                     int width,
                     int height)
Fills the area bounded by the specified rectangle.
Overrides:
fillRect in interface Graphics
Parameters:
x - The X coordinate of the upper left corner of the fill rect.
y - The Y coordinate of the upper left corner of the fill rect.
width - The width of the fill rect.
height - The height of the fill rect.

fillRoundRect

public void fillRoundRect(int x,
                          int y,
                          int width,
                          int height,
                          int arcWidth,
                          int arcHeight)
Fills the specified rectangle with rounded cornders.
Overrides:
fillRoundRect in interface Graphics
Parameters:
x - The X coordinate of the upper left corner of the fill rect.
y - The Y coordinate of the upper left corner of the fill rect.
width - The width of the fill rect.
height - The height of the fill rect.
arcWidth - The width of the corner arcs.
arcHeight - The height of the corner arcs.

getBackground

public Color getBackground()
Overrides:
getBackground in interface Graphics2D

getClip

public Shape getClip()
Returns the current clipping region as a Shape object.
Overrides:
getClip in interface Graphics
Returns:
The clipping region as a Shape.

getClipBounds

public Rectangle getClipBounds()
Returns the bounding rectangle of the clipping region for this graphics context.
Overrides:
getClipBounds in interface Graphics
Returns:
The bounding rectangle for the clipping region.

getColor

public Color getColor()
Returns the current color for this object.
Overrides:
getColor in interface Graphics
Returns:
The color for this object.

getComposite

public Composite getComposite()
Overrides:
getComposite in interface Graphics2D

getDeviceConfiguration

public GraphicsConfiguration getDeviceConfiguration()
Overrides:
getDeviceConfiguration in interface Graphics2D

getFont

public Font getFont()
Returns the current font for this graphics context.
Overrides:
getFont in interface Graphics
Returns:
The current font.

getFontMetrics

public FontMetrics getFontMetrics(Font font)
Returns the font metrics for the specified font.
Overrides:
getFontMetrics in interface Graphics
Parameters:
font - The font to return metrics for.
Returns:
The requested font metrics.

getFontRenderContext

public FontRenderContext getFontRenderContext()
Overrides:
getFontRenderContext in interface Graphics2D

getPaint

public Paint getPaint()
Overrides:
getPaint in interface Graphics2D

getRenderingHint

public Object getRenderingHint(RenderingHints.Key hintKey)
Overrides:
getRenderingHint in interface Graphics2D

getRenderingHints

public RenderingHints getRenderingHints()
Overrides:
getRenderingHints in interface Graphics2D

getStroke

public Stroke getStroke()
Overrides:
getStroke in interface Graphics2D

getTransform

public AffineTransform getTransform()
Overrides:
getTransform in interface Graphics2D

hit

public boolean hit(Rectangle rect,
                   Shape text,
                   boolean onStroke)
Overrides:
hit in interface Graphics2D

rotate

public void rotate(double theta)
Overrides:
rotate in interface Graphics2D

rotate

public void rotate(double theta,
                   double x,
                   double y)
Overrides:
rotate in interface Graphics2D

scale

public void scale(double scaleX,
                  double scaleY)
Overrides:
scale in interface Graphics2D

setBackground

public void setBackground(Color color)
Overrides:
setBackground in interface Graphics2D

setClip

public void setClip(int x,
                    int y,
                    int width,
                    int height)
Sets the clipping region to the rectangle determined by the specified parameters.
Overrides:
setClip in interface Graphics
Parameters:
x - The X coordinate of the upper left corner of the rect.
y - The Y coordinate of the upper left corner of the rect.
width - The width of the rect.
height - The height of the rect.

setClip

public void setClip(Shape clip)
Sets the clipping region to the specified Shape.
Overrides:
setClip in interface Graphics
Parameters:
clip - The new clipping region.

setColor

public void setColor(Color color)
Sets the current color for this object.
Overrides:
setColor in interface Graphics
Parameters:
color - The new color.

setComposite

public void setComposite(Composite comp)
Overrides:
setComposite in interface Graphics2D

setFont

public void setFont(Font font)
Sets the font for this graphics context to the specified value.
Overrides:
setFont in interface Graphics
Parameters:
font - The new font.

setPaint

public void setPaint(Paint paint)
Overrides:
setPaint in interface Graphics2D

setPaintMode

public void setPaintMode()
Sets this context into "paint" mode, where the target pixels are completely overwritten when drawn on.
Overrides:
setPaintMode in interface Graphics

setRenderingHint

public void setRenderingHint(RenderingHints.Key hintKey,
                             Object hintValue)
Overrides:
setRenderingHint in interface Graphics2D

setRenderingHints

public void setRenderingHints(Map hints)
Overrides:
setRenderingHints in interface Graphics2D

setState

public void setState(AbstractGraphicsState state)

setStroke

public void setStroke(Stroke stroke)
Overrides:
setStroke in interface Graphics2D

setTransform

public void setTransform(AffineTransform Tx)
Overrides:
setTransform in interface Graphics2D

setXORMode

public void setXORMode(Color altColor)
Sets this context info "XOR" mode, where the targe pixles are XOR-ed when drawn on.
Overrides:
setXORMode in interface Graphics
Parameters:

shear

public void shear(double shearX,
                  double shearY)
Overrides:
shear in interface Graphics2D

transform

public void transform(AffineTransform Tx)
Overrides:
transform in interface Graphics2D

translate

public void translate(double tx,
                      double ty)
Overrides:
translate in interface Graphics2D

translate

public void translate(int x,
                      int y)
Translates this context so that its new origin point is the point (x, y).
Overrides:
translate in interface Graphics2D
Parameters:
x - The new X coordinate of the origin.
y - The new Y coordinate of the origin.

Copyright (C) 2000, 2002, 2003 Free Software Foundation This file is part of libgcj. This software is copyrighted work licensed under the terms of the Libgcj License. Please consult the file "LIBGCJ_LICENSE" for details.