⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 graphicattribute.java

📁 JAVA基本类源代码,大家可以学习学习!
💻 JAVA
字号:
/* * @(#)GraphicAttribute.java	1.17 03/01/23 * * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *//* * (C) Copyright Taligent, Inc. 1996 - 1997, All Rights Reserved * (C) Copyright IBM Corp. 1996 - 1998, All Rights Reserved * * The original version of this source code and documentation is * copyrighted and owned by Taligent, Inc., a wholly-owned subsidiary * of IBM. These materials are provided under terms of a License * Agreement between Taligent and Sun. This technology is protected * by multiple US and International patents. * * This notice and attribution to Taligent may not be removed. * Taligent is a registered trademark of Taligent, Inc. * */package java.awt.font;import java.awt.geom.Rectangle2D;import java.awt.Graphics2D;import java.awt.Font;/** * This class is used with the CHAR_REPLACEMENT attribute. * <p> * The <code>GraphicAttribute</code> class represents a graphic embedded * in text. Clients subclass this class to implement their own char * replacement graphics.  Clients wishing to embed shapes and images in * text need not subclass this class.  Instead, clients can use the * {@link ShapeGraphicAttribute} and {@link ImageGraphicAttribute}  * classes. * <p> * Subclasses must ensure that their objects are immutable once they * are constructed.  Mutating a <code>GraphicAttribute</code> that * is used in a {@link TextLayout} results in undefined behavior from the * <code>TextLayout</code>. */public abstract class GraphicAttribute {    private int fAlignment;    /**      * Aligns top of graphic to top of line.      */    public static final int TOP_ALIGNMENT = -1;    /**      * Aligns bottom of graphic to bottom of line.      */    public static final int BOTTOM_ALIGNMENT = -2;    /**      * Aligns origin of graphic to roman baseline of line.      */    public static final int ROMAN_BASELINE = Font.ROMAN_BASELINE;    /**      * Aligns origin of graphic to center baseline of line.      */    public static final int CENTER_BASELINE = Font.CENTER_BASELINE;    /**      * Aligns origin of graphic to hanging baseline of line.      */    public static final int HANGING_BASELINE = Font.HANGING_BASELINE;    /**     * Constructs a <code>GraphicAttribute</code>.     * Subclasses use this to define the alignment of the graphic.     * @param alignment an int representing one of the      * <code>GraphicAttribute</code> alignment fields     */    protected GraphicAttribute(int alignment) {        if (alignment < BOTTOM_ALIGNMENT || alignment > HANGING_BASELINE) {	  throw new IllegalArgumentException("bad alignment");        }        fAlignment = alignment;    }    /**     * Returns the ascent of this <code>GraphicAttribute</code>.  A     * graphic can be rendered above its ascent.     * @return the ascent of this <code>GraphicAttribute</code>.     * @see #getBounds()     */    public abstract float getAscent();    /**     * Returns the descent of this <code>GraphicAttribute</code>.  A     * graphic can be rendered below its descent.     * @return the descent of this <code>GraphicAttribute</code>.     * @see #getBounds()     */    public abstract float getDescent();    /**     * Returns the advance of this <code>GraphicAttribute</code>.  The     * <code>GraphicAttribute</code> object's advance is the distance     * from the point at which the graphic is rendered and the point where     * the next character or graphic is rendered.  A graphic can be     * rendered beyond its advance     * @return the advance of this <code>GraphicAttribute</code>.     * @see #getBounds()     */    public abstract float getAdvance();    /**     * Returns a {@link Rectangle2D} that encloses all of the     * bits drawn by this <code>GraphicAttribute</code> relative to the     * rendering position.     * A graphic may be rendered beyond its origin, ascent, descent,     * or advance;  but if it is, this method's implementation must     * indicate where the graphic is rendered.     * Default bounds is the rectangle (0, -ascent, advance, ascent+descent).     * @return a <code>Rectangle2D</code> that encloses all of the bits     * rendered by this <code>GraphicAttribute</code>.     */    public Rectangle2D getBounds() {        float ascent = getAscent();        return new Rectangle2D.Float(0, -ascent,                                        getAdvance(), ascent+getDescent());    }    /**     * Renders this <code>GraphicAttribute</code> at the specified      * location.     * @param graphics the {@link Graphics2D} into which to render the     * graphic     * @param x,&nbsp;y the user-space coordinates where     * the graphic is rendered     */    public abstract void draw(Graphics2D graphics, float x, float y);    /**     * Returns the alignment of this <code>GraphicAttribute</code>.     * Alignment can be to a particular baseline, or to the absolute top     * or bottom of a line.     * @return the alignment of this <code>GraphicAttribute</code>.     */    public final int getAlignment() {        return fAlignment;    }    /**     * Returns the justification information for this      * <code>GraphicAttribute</code>.  Subclasses     * can override this method to provide different justification     * information.     * @return a {@link GlyphJustificationInfo} object that contains the     * justification information for this <code>GraphicAttribute</code>.     */    public GlyphJustificationInfo getJustificationInfo() {        // should we cache this?        float advance = getAdvance();        return new GlyphJustificationInfo(                                     advance,   // weight                                     false,     // growAbsorb                                     2,         // growPriority                                     advance/3, // growLeftLimit                                     advance/3, // growRightLimit                                     false,     // shrinkAbsorb                                     1,         // shrinkPriority                                     0,         // shrinkLeftLimit                                     0);        // shrinkRightLimit    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -