rectangle.java

来自「纯java操作系统jnode,安装简单和操作简单的个人使用的Java操作系统」· Java 代码 · 共 158 行

JAVA
158
字号
/* class Rectangle
 *
 * Copyright (C) 2001  R M Pitman
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

package charva.awt;


/**
 * The Rectangle class respresents a rectangular area of the screen; the
 * boundaries are INCLUSIVE (i.e. the _right instance variable refers to
 * the rightmost column that is included in the rectangular area, and the
 * _bottom instance variable refers to the bottom row that is included
 * in the rectangle.
 * The width of the rectangle is given by (_right - _left +1).
 * The height of the rectangle is given by (_bottom - _top + 1).
 */
public class Rectangle
{
    private int _top;
    private int _left;
    private int _bottom;
    private int _right;

    /**
     * Construct a Rectangle with the specified boundaries.
     */
    public Rectangle(int top_, int left_, int bottom_, int right_) {
	_top = top_;
	_left = left_;
	_bottom = bottom_;
	_right = right_;
    }

    public Rectangle(Point topleft_, Point bottomright_) {
	_top = topleft_.y;
	_left = topleft_.x;
	_bottom = bottomright_.y;
	_right = bottomright_.x;
    }

    public Rectangle(Point topleft_, Dimension size_) {
	_top = topleft_.y;
	_left = topleft_.x;
	_bottom = _top + size_.height - 1;
	_right = _left + size_.width - 1;
    }

    public Rectangle(Rectangle rect_) {
	_top = rect_.getTop();
	_left = rect_.getLeft();
	_bottom = rect_.getBottom();
	_right = rect_.getRight();
    }

    /** Returns true if the specified point is inside this Rectangle.
     */
    public boolean contains(Point p) {
	return this.contains(p.x, p.y);
    }

    /** Returns true if the specified point is inside this Rectangle.
     */
    public boolean contains(int x, int y) {
	return ((x >= _left) && 
		(x <= _right) &&
		(y >= _top) &&
		(y <= _bottom));
    }

    public int getLeft() { return _left; }
    public int getRight() { return _right; }
    public int getTop() { return _top; }
    public int getBottom() { return _bottom; }
    
    /**
     * Check if the specified rectangle intersects at all with this rectangle.
     */
    public boolean intersects(Rectangle rect_) {
	if (rect_._left > _right)
	    return false;
	if (rect_._right < _left)
	    return false;
	if (rect_._top > _bottom)
	    return false;
	if (rect_._bottom < _top)
	    return false;
	return true;
    }

    /** 
     * Return the intersection between this Rectangle and the specified
     * Rectangle, or null if the two rectangles don't intersect.
     */
    public Rectangle intersection(Rectangle rect_) {

	if (_top > rect_._bottom)
	    return null;
	if (_bottom < rect_._top)
	    return null;
	if (_left > rect_._right)
	    return null;
	if (_right < rect_._left)
	    return null;

	Rectangle ret = new Rectangle(0,0,0,0);
	ret._left   = (_left > rect_._left) ? _left : rect_._left;
	ret._right  = (_right < rect_._right) ? _right : rect_._right;
	ret._top    = (_top > rect_._top) ? _top : rect_._top;
	ret._bottom = (_bottom < rect_._bottom) ? _bottom : rect_._bottom;

	return ret;
    }

    /** Returns true if this rectangle has the same bounds as the
     * specified rectangle.
     */
    public boolean equals(Rectangle rect_)
    {
	if (rect_ == null)
	    return false;
	if (_top != rect_._top)
	    return false;
	if (_bottom != rect_._bottom)
	    return false;
	if (_left != rect_._left)
	    return false;
	if (_right != rect_._right)
	    return false;
	return true;
    }

    /** Returns a clone of this rectangle.
     */
    public Object clone() {
	return new Rectangle(_top, _left, _bottom, _right);
    }

    public String toString() {
	return ("(" + _top + "," + _left + "," + 
	    _bottom + "," + _right + ")");
    }
}

⌨️ 快捷键说明

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