RectUtils.java Source code

Java tutorial

Introduction

Here is the source code for RectUtils.java

Source

/*
 * $Id: RectUtils.java,v 1.2 2008/02/28 14:38:48 david Exp $
 *
 * Copyright (c) 2008 Gaudenz Alder
 *
 */

import java.awt.geom.Rectangle2D;

public class RectUtils {
    /**
     * Unions the pair of source <code>Rectangle2D</code> objects and puts the
     * result into the returned <code>Rectangle2D</code> object. This method
     * extends the Rectangle2D version by checking for null parameters, the
     * returned value will also be <code>null</code> if the two input
     * rectangles are <code>null</code>
     * 
     * @param src1
     *            the first of a pair of <code>Rectangle2D</code> objects to
     *            be combined with each other
     * @param src2
     *            the second of a pair of <code>Rectangle2D</code> objects to
     *            be combined with each other
     * 
     */
    public static Rectangle2D union(Rectangle2D src1, Rectangle2D src2) {
        Rectangle2D result = null;
        if (src1 == null && src2 == null) {
            result = null;
        } else if (src1 != null && src2 != null) {
            double x1 = Math.min(src1.getMinX(), src2.getMinX());
            double y1 = Math.min(src1.getMinY(), src2.getMinY());
            double x2 = Math.max(src1.getMaxX(), src2.getMaxX());
            double y2 = Math.max(src1.getMaxY(), src2.getMaxY());
            result = new Rectangle2D.Double();
            result.setFrameFromDiagonal(x1, y1, x2, y2);
        } else if (src1 != null) {
            double x1 = src1.getMinX();
            double y1 = src1.getMinY();
            double x2 = src1.getMaxX();
            double y2 = src1.getMaxY();
            result = new Rectangle2D.Double();
            result.setFrameFromDiagonal(x1, y1, x2, y2);
        } else {
            // only src2 is non-null
            double x1 = src2.getMinX();
            double y1 = src2.getMinY();
            double x2 = src2.getMaxX();
            double y2 = src2.getMaxY();
            result = new Rectangle2D.Double();
            result.setFrameFromDiagonal(x1, y1, x2, y2);
        }
        return result;
    }
}