< prev index next >

src/java.desktop/share/classes/java/awt/font/ShapeGraphicAttribute.java

Print this page

        

*** 47,57 **** import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; /** ! * The <code>ShapeGraphicAttribute</code> class is an implementation of * {@link GraphicAttribute} that draws shapes in a {@link TextLayout}. * @see GraphicAttribute */ public final class ShapeGraphicAttribute extends GraphicAttribute { --- 47,57 ---- import java.awt.Shape; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; /** ! * The {@code ShapeGraphicAttribute} class is an implementation of * {@link GraphicAttribute} that draws shapes in a {@link TextLayout}. * @see GraphicAttribute */ public final class ShapeGraphicAttribute extends GraphicAttribute {
*** 70,90 **** // cache shape bounds, since GeneralPath doesn't private Rectangle2D fShapeBounds; /** ! * Constructs a <code>ShapeGraphicAttribute</code> for the specified * {@link Shape}. ! * @param shape the <code>Shape</code> to render. The ! * <code>Shape</code> is rendered with its origin at the origin of ! * this <code>ShapeGraphicAttribute</code> in the ! * host <code>TextLayout</code>. This object maintains a reference to ! * <code>shape</code>. * @param alignment one of the alignments from this ! * <code>ShapeGraphicAttribute</code>. ! * @param stroke <code>true</code> if the <code>Shape</code> should be ! * stroked; <code>false</code> if the <code>Shape</code> should be * filled. */ public ShapeGraphicAttribute(Shape shape, int alignment, boolean stroke) { --- 70,90 ---- // cache shape bounds, since GeneralPath doesn't private Rectangle2D fShapeBounds; /** ! * Constructs a {@code ShapeGraphicAttribute} for the specified * {@link Shape}. ! * @param shape the {@code Shape} to render. The ! * {@code Shape} is rendered with its origin at the origin of ! * this {@code ShapeGraphicAttribute} in the ! * host {@code TextLayout}. This object maintains a reference to ! * {@code shape}. * @param alignment one of the alignments from this ! * {@code ShapeGraphicAttribute}. ! * @param stroke {@code true} if the {@code Shape} should be ! * stroked; {@code false} if the {@code Shape} should be * filled. */ public ShapeGraphicAttribute(Shape shape, int alignment, boolean stroke) {
*** 95,133 **** fStroke = stroke; fShapeBounds = fShape.getBounds2D(); } /** ! * Returns the ascent of this <code>ShapeGraphicAttribute</code>. The ! * ascent of a <code>ShapeGraphicAttribute</code> is the positive ! * distance from the origin of its <code>Shape</code> to the top of ! * bounds of its <code>Shape</code>. ! * @return the ascent of this <code>ShapeGraphicAttribute</code>. */ public float getAscent() { return (float) Math.max(0, -fShapeBounds.getMinY()); } /** ! * Returns the descent of this <code>ShapeGraphicAttribute</code>. ! * The descent of a <code>ShapeGraphicAttribute</code> is the distance ! * from the origin of its <code>Shape</code> to the bottom of the ! * bounds of its <code>Shape</code>. ! * @return the descent of this <code>ShapeGraphicAttribute</code>. */ public float getDescent() { return (float) Math.max(0, fShapeBounds.getMaxY()); } /** ! * Returns the advance of this <code>ShapeGraphicAttribute</code>. ! * The advance of a <code>ShapeGraphicAttribute</code> is the distance ! * from the origin of its <code>Shape</code> to the right side of the ! * bounds of its <code>Shape</code>. ! * @return the advance of this <code>ShapeGraphicAttribute</code>. */ public float getAdvance() { return (float) Math.max(0, fShapeBounds.getMaxX()); } --- 95,133 ---- fStroke = stroke; fShapeBounds = fShape.getBounds2D(); } /** ! * Returns the ascent of this {@code ShapeGraphicAttribute}. The ! * ascent of a {@code ShapeGraphicAttribute} is the positive ! * distance from the origin of its {@code Shape} to the top of ! * bounds of its {@code Shape}. ! * @return the ascent of this {@code ShapeGraphicAttribute}. */ public float getAscent() { return (float) Math.max(0, -fShapeBounds.getMinY()); } /** ! * Returns the descent of this {@code ShapeGraphicAttribute}. ! * The descent of a {@code ShapeGraphicAttribute} is the distance ! * from the origin of its {@code Shape} to the bottom of the ! * bounds of its {@code Shape}. ! * @return the descent of this {@code ShapeGraphicAttribute}. */ public float getDescent() { return (float) Math.max(0, fShapeBounds.getMaxY()); } /** ! * Returns the advance of this {@code ShapeGraphicAttribute}. ! * The advance of a {@code ShapeGraphicAttribute} is the distance ! * from the origin of its {@code Shape} to the right side of the ! * bounds of its {@code Shape}. ! * @return the advance of this {@code ShapeGraphicAttribute}. */ public float getAdvance() { return (float) Math.max(0, fShapeBounds.getMaxX()); }
*** 154,169 **** } } /** * Returns a {@link Rectangle2D} that encloses all of the ! * bits drawn by this <code>ShapeGraphicAttribute</code> 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 <code>Rectangle2D</code> that encloses all of the bits ! * rendered by this <code>ShapeGraphicAttribute</code>. */ public Rectangle2D getBounds() { Rectangle2D.Float bounds = new Rectangle2D.Float(); bounds.setRect(fShapeBounds); --- 154,169 ---- } } /** * Returns a {@link Rectangle2D} that encloses all of the ! * bits drawn by this {@code 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 {@code Rectangle2D} that encloses all of the bits ! * rendered by this {@code ShapeGraphicAttribute}. */ public Rectangle2D getBounds() { Rectangle2D.Float bounds = new Rectangle2D.Float(); bounds.setRect(fShapeBounds);
*** 176,216 **** return bounds; } /** * Return a {@link java.awt.Shape} that represents the region that ! * this <code>ShapeGraphicAttribute</code> 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 <code>getBounds</code>. * @param tx an optional {@link AffineTransform} to apply to the ! * this <code>ShapeGraphicAttribute</code>. This can be null. ! * @return the <code>Shape</code> representing this graphic attribute, * suitable for stroking or filling. * @since 1.6 */ public Shape getOutline(AffineTransform tx) { return tx == null ? fShape : tx.createTransformedShape(fShape); } /** ! * Returns a hashcode for this <code>ShapeGraphicAttribute</code>. * @return a hash code value for this ! * <code>ShapeGraphicAttribute</code>. */ public int hashCode() { return fShape.hashCode(); } /** ! * Compares this <code>ShapeGraphicAttribute</code> to the specified ! * <code>Object</code>. ! * @param rhs the <code>Object</code> to compare for equality ! * @return <code>true</code> if this ! * <code>ShapeGraphicAttribute</code> equals <code>rhs</code>; ! * <code>false</code> otherwise. */ public boolean equals(Object rhs) { try { return equals((ShapeGraphicAttribute) rhs); --- 176,216 ---- return bounds; } /** * Return a {@link java.awt.Shape} that represents the region that ! * this {@code 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 {@code getBounds}. * @param tx an optional {@link AffineTransform} to apply to the ! * this {@code ShapeGraphicAttribute}. This can be null. ! * @return the {@code Shape} representing this graphic attribute, * suitable for stroking or filling. * @since 1.6 */ public Shape getOutline(AffineTransform tx) { return tx == null ? fShape : tx.createTransformedShape(fShape); } /** ! * Returns a hashcode for this {@code ShapeGraphicAttribute}. * @return a hash code value for this ! * {@code ShapeGraphicAttribute}. */ public int hashCode() { return fShape.hashCode(); } /** ! * Compares this {@code ShapeGraphicAttribute} to the specified ! * {@code Object}. ! * @param rhs the {@code Object} to compare for equality ! * @return {@code true} if this ! * {@code ShapeGraphicAttribute} equals {@code rhs}; ! * {@code false} otherwise. */ public boolean equals(Object rhs) { try { return equals((ShapeGraphicAttribute) rhs);
*** 219,235 **** return false; } } /** ! * Compares this <code>ShapeGraphicAttribute</code> to the specified ! * <code>ShapeGraphicAttribute</code>. ! * @param rhs the <code>ShapeGraphicAttribute</code> to compare for * equality ! * @return <code>true</code> if this ! * <code>ShapeGraphicAttribute</code> equals <code>rhs</code>; ! * <code>false</code> otherwise. */ public boolean equals(ShapeGraphicAttribute rhs) { if (rhs == null) { return false; --- 219,235 ---- return false; } } /** ! * Compares this {@code ShapeGraphicAttribute} to the specified ! * {@code ShapeGraphicAttribute}. ! * @param rhs the {@code ShapeGraphicAttribute} to compare for * equality ! * @return {@code true} if this ! * {@code ShapeGraphicAttribute} equals {@code rhs}; ! * {@code false} otherwise. */ public boolean equals(ShapeGraphicAttribute rhs) { if (rhs == null) { return false;
< prev index next >