/* * Copyright (c) 2008, 2013, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * * * * * * * * * * * * * * * * * * * * */ package javafx.geometry; /** * The base class for objects that are used to describe the bounds of a node or * other scene graph object. One interesting characteristic of a Bounds object * is that it may have a negative width, height, or depth. A negative value * for any of these indicates that the Bounds are "empty". * * @since JavaFX 2.0 */ public abstract class Bounds { /** * The x coordinate of the upper-left corner of this {@code Bounds}. * * @defaultValue 0.0 */ public final double getMinX() { return minX; } private double minX; /** * The y coordinate of the upper-left corner of this {@code Bounds}. * * @defaultValue 0.0 */ public final double getMinY() { return minY; } private double minY; /** * The minimum z coordinate of this {@code Bounds}. * * @defaultValue 0.0 */ public final double getMinZ() { return minZ; } private double minZ; /** * The width of this {@code Bounds}. * * @defaultValue 0.0 */ public final double getWidth() { return width; } private double width; /** * The height of this {@code Bounds}. * * @defaultValue 0.0 */ public final double getHeight() { return height; } private double height; /** * The depth of this {@code Bounds}. * * @defaultValue 0.0 */ public final double getDepth() { return depth; } private double depth; /** * The x coordinate of the lower-right corner of this {@code Bounds}. * * @defaultValue {@code minX + width} */ public final double getMaxX() { return maxX; } private double maxX; /** * The y coordinate of the lower-right corner of this {@code Bounds}. * * @defaultValue {@code minY + height} */ public final double getMaxY() { return maxY; } private double maxY; /** * The maximum z coordinate of this {@code Bounds}. * * @defaultValue {@code minZ + depth} */ public final double getMaxZ() { return maxZ; } private double maxZ; /** * Indicates whether any of the dimensions(width, height or depth) of this bounds * is less than zero. * @return true if any of the dimensions(width, height or depth) of this bounds * is less than zero. */ public abstract boolean isEmpty(); /** * Tests if the specified point is inside the boundary of {@code Bounds}. * * @param p the specified point to be tested * @return true if the specified point is inside the boundary of this * {@code Bounds}; false otherwise. */ public abstract boolean contains(Point2D p); /** * Tests if the specified point is inside the boundary of {@code Bounds}. * * @param p the specified 3D point to be tested * @return true if the specified point is inside the boundary of this * {@code Bounds}; false otherwise. */ public abstract boolean contains(Point3D p); /** * Tests if the specified {@code (x, y)} coordinates are inside the boundary * of {@code Bounds}. * * @param x the specified x coordinate to be tested * @param y the specified y coordinate to be tested * @return true if the specified {@code (x, y)} coordinates are inside the * boundary of this {@code Bounds}; false otherwise. */ public abstract boolean contains(double x, double y); /** * Tests if the specified {@code (x, y, z)} coordinates are inside the boundary * of {@code Bounds}. * * @param x the specified x coordinate to be tested * @param y the specified y coordinate to be tested * @return true if the specified {@code (x, y)} coordinates are inside the * boundary of this {@code Bounds}; false otherwise. */ public abstract boolean contains(double x, double y, double z); /** * Tests if the interior of this {@code Bounds} entirely contains the * specified Bounds, {@code b}. * * @param b The specified Bounds * @return true if the specified Bounds, {@code b}, is inside the * boundary of this {@code Bounds}; false otherwise. */ public abstract boolean contains(Bounds b); /** * Tests if the interior of this {@code Bounds} entirely contains the * specified rectangular area. * * @param x the x coordinate of the upper-left corner of the specified * rectangular area * @param y the y coordinate of the upper-left corner of the specified * rectangular area * @param w the width of the specified rectangular area * @param h the height of the specified rectangular area * @return true if the interior of this {@code Bounds} entirely contains * the specified rectangular area; false otherwise. */ public abstract boolean contains(double x, double y, double w, double h); /** * Tests if the interior of this {@code Bounds} entirely contains the * specified rectangular area. * * @param x the x coordinate of the upper-left corner of the specified * rectangular volume * @param y the y coordinate of the upper-left corner of the specified * rectangular volume * @param z the z coordinate of the upper-left corner of the specified * rectangular volume * @param w the width of the specified rectangular volume * @param h the height of the specified rectangular volume * @param d the depth of the specified rectangular volume * @return true if the interior of this {@code Bounds} entirely contains * the specified rectangular area; false otherwise. */ public abstract boolean contains(double x, double y, double z, double w, double h, double d); /** * Tests if the interior of this {@code Bounds} intersects the interior * of a specified Bounds, {@code b}. * * @param b The specified Bounds * @return true if the interior of this {@code Bounds} and the interior * of the specified Bounds, {@code b}, intersect. */ public abstract boolean intersects(Bounds b); /** * Tests if the interior of this {@code Bounds} intersects the interior * of a specified rectangular area. * * @param x the x coordinate of the upper-left corner of the specified * rectangular area * @param y the y coordinate of the upper-left corner of the specified * rectangular area * @param w the width of the specified rectangular area * @param h the height of the specified rectangular area * @return true if the interior of this {@code Bounds} and the interior * of the rectangular area intersect. */ public abstract boolean intersects(double x, double y, double w, double h); /** * Tests if the interior of this {@code Bounds} intersects the interior * of a specified rectangular area. * * @param x the x coordinate of the upper-left corner of the specified * rectangular volume * @param y the y coordinate of the upper-left corner of the specified * rectangular volume * @param z the z coordinate of the upper-left corner of the specified * rectangular volume * @param w the width of the specified rectangular volume * @param h the height of the specified rectangular volume * @param d the depth of the specified rectangular volume * @return true if the interior of this {@code Bounds} and the interior * of the rectangular area intersect. */ public abstract boolean intersects(double x, double y, double z, double w, double h, double d); /** * Creates a new instance of {@code Bounds} class. * @param minX the X coordinate of the upper-left corner * @param minY the Y coordinate of the upper-left corner * @param minZ the minimum z coordinate of the {@code Bounds} * @param width the width of the {@code Bounds} * @param height the height of the {@code Bounds} * @param depth the depth of the {@code Bounds} */ protected Bounds(double minX, double minY, double minZ, double width, double height, double depth) { this.minX = minX; this.minY = minY; this.minZ = minZ; this.width = width; this.height = height; this.depth = depth; this.maxX = minX + width; this.maxY = minY + height; this.maxZ = minZ + depth; } }