FileDocCategorySizeDatePackage
ShapeGraphicAttribute.javaAPI DocJava SE 6 API7551Tue Jun 10 00:25:24 BST 2008java.awt.font

ShapeGraphicAttribute

public final class ShapeGraphicAttribute extends GraphicAttribute
The ShapeGraphicAttribute class is an implementation of {@link GraphicAttribute} that draws shapes in a {@link TextLayout}.
see
GraphicAttribute

Fields Summary
private Shape
fShape
private boolean
fStroke
public static final boolean
STROKE
A key indicating the shape should be stroked with a 1-pixel wide stroke.
public static final boolean
FILL
A key indicating the shape should be filled.
private Rectangle2D
fShapeBounds
Constructors Summary
public ShapeGraphicAttribute(Shape shape, int alignment, boolean stroke)
Constructs a ShapeGraphicAttribute for the specified {@link Shape}.

param
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.
param
alignment one of the alignments from this ShapeGraphicAttribute.
param
stroke true if the Shape should be stroked; false if the Shape should be filled.


                                                                           
      
                                  
                                   

        super(alignment);

        fShape = shape;
        fStroke = stroke;
        fShapeBounds = fShape.getBounds2D();
    
Methods Summary
public voiddraw(java.awt.Graphics2D graphics, float x, float y)
{@inheritDoc}


        // translating graphics to draw Shape !!!
        graphics.translate((int)x, (int)y);

        try {
            if (fStroke == STROKE) {
                // REMIND: set stroke to correct size
                graphics.draw(fShape);
            }
            else {
                graphics.fill(fShape);
            }
        }
        finally {
            graphics.translate(-(int)x, -(int)y);
        }
    
public booleanequals(java.awt.font.ShapeGraphicAttribute rhs)
Compares this ShapeGraphicAttribute to the specified ShapeGraphicAttribute.

param
rhs the ShapeGraphicAttribute to compare for equality
return
true if this ShapeGraphicAttribute equals rhs; false otherwise.


        if (rhs == null) {
            return false;
        }

        if (this == rhs) {
            return true;
        }

        if (fStroke != rhs.fStroke) {
            return false;
        }

        if (getAlignment() != rhs.getAlignment()) {
            return false;
        }

        if (!fShape.equals(rhs.fShape)) {
            return false;
        }

        return true;
    
public booleanequals(java.lang.Object rhs)
Compares this ShapeGraphicAttribute to the specified Object.

param
rhs the Object to compare for equality
return
true if this ShapeGraphicAttribute equals rhs; false otherwise.


        try {
            return equals((ShapeGraphicAttribute) rhs);
        }
        catch(ClassCastException e) {
            return false;
        }
    
public floatgetAdvance()
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.

return
the advance of this ShapeGraphicAttribute.


        return (float) Math.max(0, fShapeBounds.getMaxX());
    
public floatgetAscent()
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.

return
the ascent of this ShapeGraphicAttribute.


        return (float) Math.max(0, -fShapeBounds.getMinY());
    
public java.awt.geom.Rectangle2DgetBounds()
Returns a {@link 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.

return
a Rectangle2D that encloses all of the bits rendered by this ShapeGraphicAttribute.


        Rectangle2D.Float bounds = new Rectangle2D.Float();
        bounds.setRect(fShapeBounds);

        if (fStroke == STROKE) {
            ++bounds.width;
            ++bounds.height;
        }

        return bounds;
    
public floatgetDescent()
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.

return
the descent of this ShapeGraphicAttribute.


        return (float) Math.max(0, fShapeBounds.getMaxY());
    
public java.awt.ShapegetOutline(java.awt.geom.AffineTransform tx)
Return a {@link java.awt.Shape} that represents the region that this ShapeGraphicAttribute renders. This is used when a {@link TextLayout} is requested to return the outline of the text. The (untransformed) shape must not extend outside the rectangular bounds returned by getBounds.

param
tx an optional {@link AffineTransform} to apply to the this ShapeGraphicAttribute. This can be null.
return
the Shape representing this graphic attribute, suitable for stroking or filling.
since
1.6

        return tx == null ? fShape : tx.createTransformedShape(fShape);
    
public inthashCode()
Returns a hashcode for this ShapeGraphicAttribute.

return
a hash code value for this ShapeGraphicAttribute.


        return fShape.hashCode();