Module java.desktop
Package java.awt.font

## Class ShapeGraphicAttribute

- java.lang.Object
- - java.awt.font.GraphicAttribute
  - - java.awt.font.ShapeGraphicAttribute

    public final class ShapeGraphicAttribute
    extends GraphicAttribute

The `ShapeGraphicAttribute` class is an implementation of `GraphicAttribute` that draws shapes in a `TextLayout`.

See Also:
  `GraphicAttribute`

### Field Summary

Fields
`static boolean` `FILL` A key indicating the shape should be filled.
`static boolean` `STROKE` A key indicating the shape should be stroked with a 1-pixel wide stroke.

### Fields inherited from class java.awt.font.GraphicAttribute

`BOTTOM_ALIGNMENT, CENTER_BASELINE, HANGING_BASELINE, ROMAN_BASELINE, TOP_ALIGNMENT`

### Constructor Summary

Constructors
Constructor and Description
`ShapeGraphicAttribute(Shape shape, int alignment, boolean stroke)` Constructs a `ShapeGraphicAttribute` for the specified `Shape`.

### Method Summary

All Methods Instance Methods Concrete Methods
`void` `draw(Graphics2D graphics, float x, float y)` Renders this `GraphicAttribute` at the specified location.
`boolean` `equals(ShapeGraphicAttribute rhs)` Compares this `ShapeGraphicAttribute` to the specified `ShapeGraphicAttribute`.
`boolean` `equals(Object rhs)` Compares this `ShapeGraphicAttribute` to the specified `Object`.
`float` `getAdvance()` Returns the advance of this `ShapeGraphicAttribute`.
`float` `getAscent()` Returns the ascent of this `ShapeGraphicAttribute`.
`Rectangle2D` `getBounds()` Returns a `Rectangle2D` that encloses all of the bits drawn by this `ShapeGraphicAttribute` relative to the rendering position.
`float` `getDescent()` Returns the descent of this `ShapeGraphicAttribute`.
`Shape` `getOutline(AffineTransform tx)` Return a `Shape` that represents the region that this `ShapeGraphicAttribute` renders.
`int` `hashCode()` Returns a hashcode for this `ShapeGraphicAttribute`.

### Methods inherited from class java.awt.font.GraphicAttribute

`getAlignment, getJustificationInfo`

### Methods inherited from class java.lang.Object

`clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### FILL

    public static final boolean FILL

A key indicating the shape should be filled.

See Also:
  Constant Field Values

#### STROKE

    public static final boolean STROKE

A key indicating the shape should be stroked with a 1-pixel wide stroke.

See Also:
  Constant Field Values

### Constructor Detail

#### ShapeGraphicAttribute

    public ShapeGraphicAttribute(Shape shape,
                                 int alignment,
                                 boolean stroke)

Constructs a `ShapeGraphicAttribute` for the specified `Shape`.

Parameters:
  `shape` - the `Shape` to render. The `Shape` is rendered with its origin at the origin of this `ShapeGraphicAttribute` in the host `TextLayout`. This object maintains a reference to `shape`.
  `alignment` - one of the alignments from this `ShapeGraphicAttribute`.
  `stroke` - `true` if the `Shape` should be stroked; `false` if the `Shape` should be filled.

### Method Detail

#### getAscent

    public float getAscent()

Returns the ascent of this `ShapeGraphicAttribute`. The ascent of a `ShapeGraphicAttribute` is the positive distance from the origin of its `Shape` to the top of bounds of its `Shape`.

Specified by:
  `getAscent` in class `GraphicAttribute`
Returns:
  the ascent of this `ShapeGraphicAttribute`.
See Also:
  `GraphicAttribute.getBounds()`

#### getDescent

    public float getDescent()

Returns the descent of this `ShapeGraphicAttribute`. The descent of a `ShapeGraphicAttribute` is the distance from the origin of its `Shape` to the bottom of the bounds of its `Shape`.

Specified by:
  `getDescent` in class `GraphicAttribute`
Returns:
  the descent of this `ShapeGraphicAttribute`.
See Also:
  `GraphicAttribute.getBounds()`

#### getAdvance

    public float getAdvance()

Returns the advance of this `ShapeGraphicAttribute`. The advance of a `ShapeGraphicAttribute` is the distance from the origin of its `Shape` to the right side of the bounds of its `Shape`.

Specified by:
  `getAdvance` in class `GraphicAttribute`
Returns:
  the advance of this `ShapeGraphicAttribute`.
See Also:
  `GraphicAttribute.getBounds()`

#### draw

    public void draw(Graphics2D graphics,
                     float x,
                     float y)

Renders this `GraphicAttribute` at the specified location.

Specified by:
  `draw` in class `GraphicAttribute`
Parameters:
  `graphics` - the `Graphics2D` into which to render the graphic
  `x` - the user-space X coordinate where the graphic is rendered
  `y` - the user-space Y coordinate where the graphic is rendered

#### getBounds

    public Rectangle2D getBounds()

Returns a `Rectangle2D` that encloses all of the bits drawn by this `ShapeGraphicAttribute` relative to the rendering position. A graphic can be rendered beyond its origin, ascent, descent, or advance; but if it does, this method's implementation should indicate where the graphic is rendered.

Overrides:
  `getBounds` in class `GraphicAttribute`
Returns:
  a `Rectangle2D` that encloses all of the bits rendered by this `ShapeGraphicAttribute`.

#### getOutline

    public Shape getOutline(AffineTransform tx)

Return a `Shape` that represents the region that this `ShapeGraphicAttribute` renders. This is used when a `TextLayout` is requested to return the outline of the text. The (untransformed) shape must not extend outside the rectangular bounds returned by `getBounds`.

Overrides:
  `getOutline` in class `GraphicAttribute`
Parameters:
  `tx` - an optional `AffineTransform` to apply to the this `ShapeGraphicAttribute`. This can be null.
Returns:
  the `Shape` representing this graphic attribute, suitable for stroking or filling.
Since:
  1.6

#### hashCode

    public int hashCode()

Returns a hashcode for this `ShapeGraphicAttribute`.

Overrides:
  `hashCode` in class `Object`
Returns:
  a hash code value for this `ShapeGraphicAttribute`.
See Also:
  `Object.equals(java.lang.Object)`, `System.identityHashCode(java.lang.Object)`

#### equals

    public boolean equals(Object rhs)

Compares this `ShapeGraphicAttribute` to the specified `Object`.

Overrides:
  `equals` in class `Object`
Parameters:
  `rhs` - the `Object` to compare for equality
Returns:
  `true` if this `ShapeGraphicAttribute` equals `rhs`; `false` otherwise.
See Also:
  `Object.hashCode()`, `HashMap`

#### equals

    public boolean equals(ShapeGraphicAttribute rhs)

Compares this `ShapeGraphicAttribute` to the specified `ShapeGraphicAttribute`.

Parameters:
  `rhs` - the `ShapeGraphicAttribute` to compare for equality
Returns:
  `true` if this `ShapeGraphicAttribute` equals `rhs`; `false` otherwise.