/* * Copyright © 2009-2011 Rebecca G. Bettencourt / Kreative Software * <p> * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * <a href="http://www.mozilla.org/MPL/">http://www.mozilla.org/MPL/</a> * <p> * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * <p> * Alternatively, the contents of this file may be used under the terms * of the GNU Lesser General Public License (the "LGPL License"), in which * case the provisions of LGPL License are applicable instead of those * above. If you wish to allow use of your version of this file only * under the terms of the LGPL License and not to allow others to use * your version of this file under the MPL, indicate your decision by * deleting the provisions above and replace them with the notice and * other provisions required by the LGPL License. If you do not delete * the provisions above, a recipient may use your version of this file * under either the MPL or the LGPL License. * @since PowerPaint 1.0 * @author Rebecca G. Bettencourt, Kreative Software */ package com.kreative.paint.pict; import java.awt.Rectangle; import java.awt.geom.Rectangle2D; import java.io.*; public class Rect extends Rectangle2D { public int top = 0; public int left = 0; public int bottom = 0; public int right = 0; public static Rect read(DataInputStream in) throws IOException { Rect r = new Rect(); r.top = in.readShort(); r.left = in.readShort(); r.bottom = in.readShort(); r.right = in.readShort(); return r; } public Rect() { this.left = 0; this.top = 0; this.right = 0; this.bottom = 0; } public Rect(int x, int y, int width, int height) { this.left = x; this.top = y; this.right = x+width; this.bottom = y+height; } public Rect(Rectangle r) { this.left = r.x; this.top = r.y; this.right = r.x+r.width; this.bottom = r.y+r.height; } public void write(DataOutputStream out) throws IOException { out.writeShort(top); out.writeShort(left); out.writeShort(bottom); out.writeShort(right); } public Rectangle toRectangle() { return new Rectangle(left, top, right-left, bottom-top); } public String toString() { return left+","+top+","+right+","+bottom; } public Rectangle2D createIntersection(Rectangle2D r) { return toRectangle().createIntersection(r); } public Rectangle2D createUnion(Rectangle2D r) { return toRectangle().createUnion(r); } public int outcode(double x, double y) { return toRectangle().outcode(x, y); } public void setRect(double x, double y, double w, double h) { this.top = (int)y; this.left = (int)x; this.bottom = (int)(y+h); this.right = (int)(x+w); } public double getHeight() { return bottom-top; } public double getWidth() { return right-left; } public double getX() { return left; } public double getY() { return top; } public boolean isEmpty() { return (left == right || top == bottom); } }