Prev Class | Next Class | Frames | No Frames |
Summary: Nested | Field | Method | Constr | Detail: Nested | Field | Method | Constr |
java.lang.Object
java.awt.Graphics
java.awt.Graphics2D
gnu.awt.j2d.Graphics2DImpl
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 | |
|
Method Summary | |
void |
|
void |
|
void | |
void |
|
Object |
|
void |
|
Graphics |
|
void |
|
void | |
void |
|
void |
|
boolean |
|
boolean |
|
boolean |
|
boolean |
|
boolean |
|
boolean |
|
boolean |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
void | |
void |
|
void |
|
void |
|
void |
|
void |
|
Color |
|
Shape |
|
Rectangle | |
Color |
|
Composite |
|
GraphicsConfiguration | |
Font |
|
FontMetrics |
|
FontRenderContext |
|
Paint |
|
Object |
|
RenderingHints |
|
Stroke |
|
AffineTransform |
|
boolean | |
void |
|
void |
|
void |
|
void |
|
void |
|
void | |
void | |
void |
|
void | |
void | |
void | |
void |
|
void |
|
void |
|
void | |
void |
|
void |
|
void |
|
void |
|
void |
|
void |
|
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 , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
public void clip(Shape shape)
Sets the clip region to the intersection of the current clipping region ands
.
- Overrides:
- clip in interface Graphics2D
- Parameters:
- See Also:
Graphics.setClip(Shape)
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 falseo.getClass() == o.clone().getClass()
is trueo.equals(o)
is trueHowever, 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()); } }
- Returns:
- a copy of the Object
- See Also:
Cloneable
public void draw(Shape shape)
Draws an outline around a shape using the current stroke and paint.
- Overrides:
- draw in interface Graphics2D
- Parameters:
shape
- the shape (null
not permitted).
- See Also:
Graphics2D.getStroke()
,Graphics2D.getPaint()
public void drawGlyphVector(GlyphVector g, float x, float y)
Draws a glyph vector at the specified location.
- Overrides:
- drawGlyphVector in interface Graphics2D
- Parameters:
g
- the glyph vector.x
- the x-coordinate.y
- the y-coordinate.
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)
public boolean drawImage(Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, ImageObserver observer)
public boolean drawImage(Image img, int x, int y, int width, int height, Color bgcolor, ImageObserver observer)
public boolean drawImage(Image img, int x, int y, int width, int height, ImageObserver observer)
public boolean drawImage(Image image, AffineTransform xform, ImageObserver obs)
- Overrides:
- drawImage in interface Graphics2D
public void drawImage(BufferedImage image, BufferedImageOp op, int x, int y)
- Overrides:
- drawImage in interface Graphics2D
public void drawRenderableImage(RenderableImage image, AffineTransform xform)
- Overrides:
- drawRenderableImage in interface Graphics2D
public void drawRenderedImage(RenderedImage image, AffineTransform xform)
- Overrides:
- drawRenderedImage in interface Graphics2D
public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
- Overrides:
- drawRoundRect in interface Graphics
public void drawString(String text, float x, float y)
Draws a string at the specified location, using the current font.
- Overrides:
- drawString in interface Graphics2D
- Parameters:
text
- the string to draw.x
- the x-coordinate.y
- the y-coordinate.
- See Also:
Graphics.setFont(Font)
public void drawString(String text, int x, int y)
Draws a string at the specified location, using the current font.
- Overrides:
- drawString in interface Graphics2D
- Parameters:
text
- the string to draw.x
- the x-coordinate.y
- the y-coordinate.
- See Also:
Graphics.setFont(Font)
public void drawString(AttributedCharacterIterator iterator, float x, float y)
Draws an attributed string at the specified location.
- Overrides:
- drawString in interface Graphics2D
- Parameters:
iterator
- the source of the attributed text.x
- the x-coordinate.y
- the y-coordinate.
public void drawString(AttributedCharacterIterator iterator, int x, int y)
Draws an attributed string at the specified location.
- Overrides:
- drawString in interface Graphics2D
- Parameters:
iterator
- the source of the attributed text.x
- the x-coordinate.y
- the y-coordinate.
public void fill(Shape shape)
Fills the interior of the specifiedshape
using the current paint.
- Overrides:
- fill in interface Graphics2D
- Parameters:
shape
- the shape to fill (null
not permitted).
- See Also:
Graphics2D.draw(Shape)
,Graphics2D.getPaint()
public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
- Overrides:
- fillRoundRect in interface Graphics
public Color getBackground()
Returns the color used by theGraphics.clearRect(int,int,int,int)
method.
- Overrides:
- getBackground in interface Graphics2D
- Returns:
- The background color.
- See Also:
Graphics2D.setBackground(Color)
public Composite getComposite()
Returns the current compositing rule.
- Overrides:
- getComposite in interface Graphics2D
- Returns:
- The current compositing rule.
- See Also:
Graphics2D.setComposite(Composite)
public GraphicsConfiguration getDeviceConfiguration()
- Overrides:
- getDeviceConfiguration in interface Graphics2D
public FontMetrics getFontMetrics(Font font)
- Overrides:
- getFontMetrics in interface Graphics
public FontRenderContext getFontRenderContext()
Returns the font render context.
- Overrides:
- getFontRenderContext in interface Graphics2D
- Returns:
- The font render context.
public Paint getPaint()
Returns the current paint.
- Overrides:
- getPaint in interface Graphics2D
- Returns:
- The current paint.
- See Also:
Graphics2D.setPaint(Paint)
public Object getRenderingHint(RenderingHints.Key hintKey)
Returns the current value of a rendering hint.
- Overrides:
- getRenderingHint in interface Graphics2D
- Parameters:
hintKey
- the key for the hint.
- Returns:
- The value for the specified hint.
public RenderingHints getRenderingHints()
Returns the current rendering hints.
- Overrides:
- getRenderingHints in interface Graphics2D
- Returns:
- The current rendering hints.
public Stroke getStroke()
Returns the current stroke.
- Overrides:
- getStroke in interface Graphics2D
- Returns:
- The current stroke.
- See Also:
Graphics2D.setStroke(Stroke)
public AffineTransform getTransform()
Returns the current transform.
- Overrides:
- getTransform in interface Graphics2D
- Returns:
- The current transform.
public boolean hit(Rectangle rect, Shape text, boolean onStroke)
- Overrides:
- hit in interface Graphics2D
public void setBackground(Color color)
Sets the background color (used by theGraphics.clearRect(int,int,int,int)
method).
- Overrides:
- setBackground in interface Graphics2D
- Parameters:
color
- the color.
- See Also:
Graphics2D.getBackground()
public void setComposite(Composite comp)
Sets the current compositing rule.
- Overrides:
- setComposite in interface Graphics2D
- Parameters:
comp
- the composite.
- See Also:
Graphics2D.getComposite()
public void setPaint(Paint paint)
Sets the paint to be used for subsequent drawing operations.
- Overrides:
- setPaint in interface Graphics2D
- Parameters:
paint
- the paint (null
not permitted).
- See Also:
Graphics2D.getPaint()
public void setRenderingHint(RenderingHints.Key hintKey, Object hintValue)
Adds or updates a hint in the current rendering hints table.
- Overrides:
- setRenderingHint in interface Graphics2D
- Parameters:
hintKey
- the hint key.hintValue
- the hint value.
public void setStroke(Stroke stroke)
Sets the stroke to be used for subsequent drawing operations.
- Overrides:
- setStroke in interface Graphics2D
- Parameters:
stroke
- the stroke (null
not permitted).
- See Also:
Graphics2D.getStroke()
public void setTransform(AffineTransform Tx)
Sets the current transform. If the caller specifies anull
transform, this method should set the current transform to the identity transform.
- Overrides:
- setTransform in interface Graphics2D
- Parameters:
- See Also:
Graphics2D.getTransform()
public void transform(AffineTransform Tx)
Sets the current transform to a concatenation oftransform
and the existing transform.
- Overrides:
- transform in interface Graphics2D
- Parameters: