Java 2D dramatically expands the graphics capabilities of Java.  It
      does this through the java.awt.Graphics2D
      subclass of java.awt.Graphics.  In Java 2, you
      can simply cast any Graphics object you are given
      to a Graphics2D object, and then you can use the new
      features of Java 2D.
| Attribute | Type | Description | 
| Foreground color | Color | Inherited from Graphics but
		superseded by the fill style attribute and the
		Paint interface. | 
| Background color | Color | Inherited from Graphics but
		can now be set and queried with
		setBack-
ground() and
		getBackground().  This attribute is still used only by
		clearRect().  | 
| Font | Font | Inherited from Graphics.  All of the system
		fonts are now available to Java. | 
| Clipping region | Shape | Inherited from Graphics.  In Java 2D,
		however, arbitrary Shape objects may
		be used; the clipping region is no longer restricted to
		only rectangular shapes.  A new method,
		which is called clip(), sets the clipping region to
		the intersection of the current region and a specified
		Shape.  | 
| Line style | Stroke | A Stroke object specifies how lines are
		drawn.  The BasicStroke
		implementation supports line width, dash pattern, and
		other attributes, described in more detail later in
		the chapter. Set
		the current line style with
		setStroke().  | 
| Fill style | Paint | A Paint object specifies how an area is
		filled.  Color implements this
		interface and fills with a solid color, 
		java.awt.TexturePaint fills with a
		tiled image, and
		java.awt.Gra-
dientPaint fills with a
		color gradient.  Set the current fill style with
		setPaint().  | 
| Compositing | Composite | A Composite object controls how the
		color of a pixel is combined, or composited, with the
		color of the pixel on top of which it is drawn.  The default
		compositing operation combines translucent pixels with
		the pixels they overlay, letting the overlaid colors
		"show through."  The AlphaComposite
		class is an implementation of
		Composite; it performs various types
		of compositing, based on the alpha-transparency of
		the pixels involved. | 
| Transform | 
java.awt.geom.-
AffineTransform
 | Controls the translation, scaling, rotation, and shearing
		of the coordinate system.  Set this attribute with
		setTransform(), or modify the current
		transform with translate(),
		scale(), rotate(),
		shear(), or
		transform().  | 
| Hints | RenderingHints | A RenderingHints object allows a
		program to express preferences about various speed
		versus quality trade-offs made by Java 2D.  Most notably,
		RenderingHints controls whether
		Java 2D performs antialiasing.  Set with
		setRenderingHints(),
		setRendering-
Hint(), or 
		addRenderingHints(). | 
| Operation | Methods | Description | 
| Drawing | 
draw(), inherited methods | 
draw() outlines an arbitrary
		Shape.  Uses the clip, transform,
		stroke, paint, and composite attributes. | 
| Filling | 
fill(), inherited methods | 
fill() fills an arbitrary
		Shape.  Uses the 
		clip, transform, paint, and composite attributes. | 
| Hit detection | 
hit()
 | Tests whether a given rectangle (in device coordinates)
		intersects the interior or outline of an arbitrary
		Shape.  Uses the clip, transform,
		and stroke attributes when testing the
		outline of a Shape. | 
| Text drawing | 
drawString(),
		drawGlyphVector(),
		inherited methods | Java 2D defines text-drawing methods that take
		String, 
		java.text.AttributedCharacter-
Iterator,
		and java.awt.font.-
GlyphVector arguments.
		Text drawing uses the clip, transform, font, paint, and
		composite attributes.  Note, however, that
		AttributedCharacterIterator objects
		supply their own fonts. | 
| Image drawing | 
drawImage(), 
		drawRenderableImage(),
		drawRenderedImage(),
		inherited methods | Java 2D defines new image-drawing methods that draw
		special types of images.
		java.awt.image.BufferedImage 
		is the most important
		new type.  These methods use the clip, transform, and
		composite attributes. |