/* * Copyright 2009 Fred Sauer * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.allen_sauer.gwt.dnd.client.util; /** * Class representing a rectangular region, with convenience methods for calculations. */ public interface Area { /** * Clone our area. * * @return the new area */ Area copyOf(); /** * Determine the shortest distance from the location to the edge of the area. Zero indicates a * location on the edge. Negative distances indicate a location inside the area. * * @param location the reference location * @return shortest distance to edge of area */ int distanceToEdge(Location location); /** * Get the area's bottom coordinate in pixels. * * @return the bottom coordinate in pixels */ int getBottom(); /** * Get the area's center Location. * * @return the area's center Location */ Location getCenter(); /** * Get the area's height. * * @return the area's height in pixels */ int getHeight(); /** * Get the area's left coordinate in pixels. * * @return the left coordinate in pixels */ int getLeft(); /** * Get the area's right coordinate in pixels. * * @return the right coordinate in pixels */ int getRight(); /** * Determine area (width * height). * * @return size of area */ int getSize(); /** * Get the area's top coordinate in pixels. * * @return the top coordinate in pixels */ int getTop(); /** * Get the area's width. * * @return the area's width in pixels */ int getWidth(); /** * Determine if location is to the bottom-right of the following 45 degree line. * * <pre> * y 45 * | / * |/ * -----+----- x * /| * / | * * </pre> * * @param location the location to consider * @return true if the location is to below the 45 degree line */ boolean inBottomRight(Location location); /** * Determine if the target area intersects our area. * * @param targetArea the area to compare to * @return true if target area intersects our area */ boolean intersects(Area targetArea); /** * Determine if the provided location intersects with our area. * * @param location the location to examine * @return true if the location falls within our area */ boolean intersects(Location location); /** * Translate our top left position to the new location. * * @param location the position to translate to */ void moveTo(Location location); }