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

📄 roundrectangle2d.java

📁 JAVA基本类源代码,大家可以学习学习!
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
         * @return the width of this <code>RoundRectangle2D</code>.         */	public double getWidth() {	    return width;	}	/**         * Returns the height of this <code>RoundRectangle2D</code>         * in <code>double</code> precision.         * @return the height of this <code>RoundRectangle2D</code>.         */	public double getHeight() {	    return height;	}	/**         * Returns the width of the arc that rounds off the corners.         * @return the width of the arc that rounds off the corners         * of this <code>RoundRectangle2D</code>.         */	public double getArcWidth() {	    return arcwidth;	}	/**         * Returns the height of the arc that rounds off the corners.         * @return the height of the arc that rounds off the corners         * of this <code>RoundRectangle2D</code>.         */	public double getArcHeight() {	    return archeight;	}	/**         * Determines whether or not this <code>RoundRectangle2D</code>         * is empty.         * @return <code>true</code> if this <code>RoundRectangle2D</code>         * is empty; <code>false</code> othwerwise.	         */	public boolean isEmpty() {	    return (width <= 0.0f) || (height <= 0.0f);	}	/**         * Sets the location, size, and arc radii of this         * <code>RoundRectangle2D</code> to the         * specified <code>double</code> values.         * @param x,&nbsp;y the coordinates to which to set the         * location of this <code>RoundRectangle2D</code>         * @param w the width to which to set this         * <code>RoundRectangle2D</code>         * @param h the height to which to set this         * <code>RoundRectangle2D</code>         * @param arcw the width to which to set the arc of this         * <code>RoundRectangle2D</code>         * @param arch the height to which to set the arc of this         * <code>RoundRectangle2D</code>         */	public void setRoundRect(double x, double y, double w, double h,				 double arcw, double arch) {	    this.x = x;	    this.y = y;	    this.width = w;	    this.height = h;	    this.arcwidth = arcw;	    this.archeight = arch;	}	/**         * Sets this <code>RoundRectangle2D</code> to be the same as the         * specified <code>RoundRectangle2D</code>.         * @param rr the specified <code>RoundRectangle2D</code>         */	public void setRoundRect(RoundRectangle2D rr) {	    this.x = rr.getX();	    this.y = rr.getY();	    this.width = rr.getWidth();	    this.height = rr.getHeight();	    this.arcwidth = rr.getArcWidth();	    this.archeight = rr.getArcHeight();	}	/**         * Returns the high precision bounding box of this         * <code>RoundRectangle2D</code>.         * @return a {@link Rectangle2D} that is the bounding         * box of this <code>RoundRectangle2D</code>.	 */	public Rectangle2D getBounds2D() {	    return new Rectangle2D.Double(x, y, width, height);	}    }    /**     * This is an abstract class that cannot be instantiated directly.     * Type-specific implementation subclasses are available for     * instantiation and provide a number of formats for storing     * the information necessary to satisfy the various accessor     * methods below.     *     * @see java.awt.geom.RoundRectangle2D.Float     * @see java.awt.geom.RoundRectangle2D.Double     */    protected RoundRectangle2D() {    }    /**     * Gets the width of the arc that rounds off the corners.     * @return the width of the arc that rounds off the corners     * of this <code>RoundRectangle2D</code>.     */    public abstract double getArcWidth();    /**     * Gets the height of the arc that rounds off the corners.     * @return the height of the arc that rounds off the corners     * of this <code>RoundRectangle2D</code>.         */    public abstract double getArcHeight();    /**     * Sets the location, size, and corner radii of this      * <code>RoundRectangle2D</code> to the specified      * <code>double</code> values.     * @param x,&nbsp;y the coordinates to which to set the     * location of this <code>RoundRectangle2D</code>     * @param w the width to which to set this     * <code>RoundRectangle2D</code>     * @param h the height to which to set this     * <code>RoundRectangle2D</code>     * @param arcWidth the width to which to set the arc of this     * <code>RoundRectangle2D</code>     * @param arcHeight the height to which to set the arc of this     * <code>RoundRectangle2D</code>     */    public abstract void setRoundRect(double x, double y, double w, double h,				      double arcWidth, double arcHeight);    /**     * Sets this <code>RoundRectangle2D</code> to be the same as the     * specified <code>RoundRectangle2D</code>.     * @param rr the specified <code>RoundRectangle2D</code>     */    public void setRoundRect(RoundRectangle2D rr) {	setRoundRect(rr.getX(), rr.getY(), rr.getWidth(), rr.getHeight(),		     rr.getArcWidth(), rr.getArcHeight());    }    /**     * Sets the location and size of the outer bounds of this     * <code>RoundRectangle2D</code> to the specified rectangular values.     * @param x,&nbsp;y the coordinates to which to set the location     * of this <code>RoundRectangle2D</code>     * @param w the width to which to set this     * <code>RoundRectangle2D</code>     * @param h the height to which to set this     * <code>RoundRectangle2D</code>     */    public void setFrame(double x, double y, double w, double h) {	setRoundRect(x, y, w, h, getArcWidth(), getArcHeight());    }    /**     * Tests if the specified coordinates are inside the boundary of     * this <code>RoundRectangle2D</code>.     * @param x,&nbsp;y the coordinates to test     * @return <code>true</code> if the specified coordinates are     * inside the boundary of this <code>RoundRectangle2D</code>;     * <code>false</code> otherwise.     */    public boolean contains(double x, double y) {	if (isEmpty()) {	    return false;	}	double rrx0 = getX();	double rry0 = getY();	double rrx1 = rrx0 + getWidth();	double rry1 = rry0 + getHeight();	// Check for trivial rejection - point is outside bounding rectangle	if (x < rrx0 || y < rry0 || x >= rrx1 || y >= rry1) {	    return false;	}	double aw = Math.min(getWidth(), Math.abs(getArcWidth())) / 2.0;	double ah = Math.min(getHeight(), Math.abs(getArcHeight())) / 2.0;	// Check which corner point is in and do circular containment	// test - otherwise simple acceptance	if (x >= (rrx0 += aw) && x < (rrx0 = rrx1 - aw)) {	    return true;	}	if (y >= (rry0 += ah) && y < (rry0 = rry1 - ah)) {	    return true;	}	x = (x - rrx0) / aw;	y = (y - rry0) / ah;	return (x * x + y * y <= 1.0);    }    private int classify(double coord, double left, double right,			 double arcsize) {	if (coord < left) {	    return 0;	} else if (coord < left + arcsize) {	    return 1;	} else if (coord < right - arcsize) {	    return 2;	} else if (coord < right) {	    return 3;	} else {	    return 4;	}    }    /**     * Tests if the interior of this <code>RoundRectangle2D</code>      * intersects the interior of a specified set of rectangular     * coordinates.     * @param x,&nbsp;y the coordinates of the upper left corner     * of the specified set of rectangular coordinates     * @param w the width of the specified set of rectangular     * coordinates     * @param h the height of the specified set of rectangular     * coordinates     * @return <code>true</code> if the interior of this     * <code>RoundRectangle2D</code> intersects the interior of the     * specified set of rectangular coordinates.     */    public boolean intersects(double x, double y, double w, double h) {	if (isEmpty() || w <= 0 || h <= 0) {	    return false;	}	double rrx0 = getX();	double rry0 = getY();	double rrx1 = rrx0 + getWidth();	double rry1 = rry0 + getHeight();	// Check for trivial rejection - bounding rectangles do not intersect	if (x + w <= rrx0 || x >= rrx1 || y + h <= rry0 || y >= rry1) {	    return false;	}	double aw = Math.min(getWidth(), Math.abs(getArcWidth())) / 2.0;	double ah = Math.min(getHeight(), Math.abs(getArcHeight())) / 2.0;	int x0class = classify(x, rrx0, rrx1, aw);	int x1class = classify(x + w, rrx0, rrx1, aw);	int y0class = classify(y, rry0, rry1, ah);	int y1class = classify(y + h, rry0, rry1, ah);	// Trivially accept if any point is inside inner rectangle	if (x0class == 2 || x1class == 2 || y0class == 2 || y1class == 2) {	    return true;	}	// Trivially accept if either edge spans inner rectangle	if ((x0class < 2 && x1class > 2) || (y0class < 2 && y1class > 2)) {	    return true;	}	// Since neither edge spans the center, then one of the corners	// must be in one of the rounded edges.  We detect this case if	// a [xy]0class is 3 or a [xy]1class is 1.  One of those two cases	// must be true for each direction.	// We now find a "nearest point" to test for being inside a rounded	// corner.	x = (x1class == 1) ? (x = x + w - (rrx0 + aw)) : (x = x - (rrx1 - aw));	y = (y1class == 1) ? (y = y + h - (rry0 + ah)) : (y = y - (rry1 - ah));	x = x / aw;	y = y / ah;	return (x * x + y * y <= 1.0);    }    /**     * Tests if the interior of this <code>RoundRectangle2D</code>     * entirely contains the specified set of rectangular coordinates.     * @param x,&nbsp;y the coordinates of the specified set of     * rectangular coordinates     * @param w the width of the specified set of rectangular     * coordinates     * @param h the height of the specified set of rectangular      * coordinates     * @return <code>true</code> if the interior of this     * <code>RoundRectangle2D</code> entirely contains the specified     * set of rectangular coordinates; <code>false</code> otherwise.     */    public boolean contains(double x, double y, double w, double h) {	if (isEmpty() || w <= 0 || h <= 0) {	    return false;	}	return (contains(x, y) &&		contains(x + w, y) &&		contains(x, y + h) &&		contains(x + w, y + h));    }    /**     * Returns an iteration object that defines the boundary of this     * <code>RoundRectangle2D</code>.     * The iterator for this class is multi-threaded safe, which means     * that this <code>RoundRectangle2D</code> class guarantees that     * modifications to the geometry of this <code>RoundRectangle2D</code>     * object do not affect any iterations of that geometry that     * are already in process.     * @param at an optional <code>AffineTransform</code> to be applied to     * the coordinates as they are returned in the iteration, or     * <code>null</code> if untransformed coordinates are desired     * @return    the <code>PathIterator</code> object that returns the     *          geometry of the outline of this     *          <code>RoundRectangle2D</code>, one segment at a time.     */    public PathIterator getPathIterator(AffineTransform at) {	return new RoundRectIterator(this, at);    }}

⌨️ 快捷键说明

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