Save This Page
Home » openjdk-7 » java » awt » geom » [javadoc | source]
java.awt.geom
public class: Area [javadoc | source]
java.lang.Object
   java.awt.geom.Area

All Implemented Interfaces:
    Shape, Cloneable

An Area object stores and manipulates a resolution-independent description of an enclosed area of 2-dimensional space. Area objects can be transformed and can perform various Constructive Area Geometry (CAG) operations when combined with other Area objects. The CAG operations include area addition , subtraction , intersection , and exclusive or . See the linked method documentation for examples of the various operations.

The Area class implements the Shape interface and provides full support for all of its hit-testing and path iteration facilities, but an Area is more specific than a generalized path in a number of ways:

Interesting issues which are not always obvious when using the Area include:
Constructor:
 public Area() 
 public Area(Shape s) 
    The Area class creates an area geometry from the specified Shape object. The geometry is explicitly closed, if the Shape is not already closed. The fill rule (even-odd or winding) specified by the geometry of the Shape is used to determine the resulting enclosed area.
    Parameters:
    s - the Shape from which the area is constructed
    Throws:
    NullPointerException - if s is null
    since: 1.2 -
Method from java.awt.geom.Area Summary:
add,   clone,   contains,   contains,   contains,   contains,   createTransformedArea,   equals,   exclusiveOr,   getBounds,   getBounds2D,   getPathIterator,   getPathIterator,   intersect,   intersects,   intersects,   isEmpty,   isPolygonal,   isRectangular,   isSingular,   reset,   subtract,   transform
Methods from java.lang.Object:
clone,   equals,   finalize,   getClass,   hashCode,   notify,   notifyAll,   toString,   wait,   wait,   wait
Method from java.awt.geom.Area Detail:
 public  void add(Area rhs) 
    Adds the shape of the specified Area to the shape of this Area. The resulting shape of this Area will include the union of both shapes, or all areas that were contained in either this or the specified Area.
    // Example:
    Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
    Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
    a1.add(a2);
    
    a1(before) + a2 = a1(after)
    
    ################ ################ ################
    ############## ############## ################
    ############ ############ ################
    ########## ########## ################
    ######## ######## ################
    ###### ###### ###### ######
    #### #### #### ####
    ## ## ## ##
    
 public Object clone() 
    Returns an exact copy of this Area object.
 public boolean contains(Point2D p) 
    {@inheritDoc}
 public boolean contains(Rectangle2D r) 
    {@inheritDoc}
 public boolean contains(double x,
    double y) 
    {@inheritDoc}
 public boolean contains(double x,
    double y,
    double w,
    double h) 
    {@inheritDoc}
 public Area createTransformedArea(AffineTransform t) 
    Creates a new Area object that contains the same geometry as this Area transformed by the specified AffineTransform. This Area object is unchanged.
 public boolean equals(Area other) 
    Tests whether the geometries of the two Area objects are equal. This method will return false if the argument is null.
 public  void exclusiveOr(Area rhs) 
    Sets the shape of this Area to be the combined area of its current shape and the shape of the specified Area, minus their intersection. The resulting shape of this Area will include only areas that were contained in either this Area or in the specified Area, but not in both.
    // Example:
    Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
    Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
    a1.exclusiveOr(a2);
    
    a1(before) xor a2 = a1(after)
    
    ################ ################
    ############## ############## ## ##
    ############ ############ #### ####
    ########## ########## ###### ######
    ######## ######## ################
    ###### ###### ###### ######
    #### #### #### ####
    ## ## ## ##
    
 public Rectangle getBounds() 
    Returns a bounding Rectangle that completely encloses this Area.

    The Area class will attempt to return the tightest bounding box possible for the Shape. The bounding box will not be padded to include the control points of curves in the outline of the Shape, but should tightly fit the actual geometry of the outline itself. Since the returned object represents the bounding box with integers, the bounding box can only be as tight as the nearest integer coordinates that encompass the geometry of the Shape.

 public Rectangle2D getBounds2D() 
    Returns a high precision bounding Rectangle2D that completely encloses this Area.

    The Area class will attempt to return the tightest bounding box possible for the Shape. The bounding box will not be padded to include the control points of curves in the outline of the Shape, but should tightly fit the actual geometry of the outline itself.

 public PathIterator getPathIterator(AffineTransform at) 
    Creates a PathIterator for the outline of this Area object. This Area object is unchanged.
 public PathIterator getPathIterator(AffineTransform at,
    double flatness) 
    Creates a PathIterator for the flattened outline of this Area object. Only uncurved path segments represented by the SEG_MOVETO, SEG_LINETO, and SEG_CLOSE point types are returned by the iterator. This Area object is unchanged.
 public  void intersect(Area rhs) 
    Sets the shape of this Area to the intersection of its current shape and the shape of the specified Area. The resulting shape of this Area will include only areas that were contained in both this Area and also in the specified Area.
    // Example:
    Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
    Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
    a1.intersect(a2);
    
    a1(before) intersect a2 = a1(after)
    
    ################ ################ ################
    ############## ############## ############
    ############ ############ ########
    ########## ########## ####
    ######## ########
    ###### ######
    #### ####
    ## ##
    
 public boolean intersects(Rectangle2D r) 
    {@inheritDoc}
 public boolean intersects(double x,
    double y,
    double w,
    double h) 
    {@inheritDoc}
 public boolean isEmpty() 
    Tests whether this Area object encloses any area.
 public boolean isPolygonal() 
    Tests whether this Area consists entirely of straight edged polygonal geometry.
 public boolean isRectangular() 
    Tests whether this Area is rectangular in shape.
 public boolean isSingular() 
    Tests whether this Area is comprised of a single closed subpath. This method returns true if the path contains 0 or 1 subpaths, or false if the path contains more than 1 subpath. The subpaths are counted by the number of SEG_MOVETO segments that appear in the path.
 public  void reset() 
    Removes all of the geometry from this Area and restores it to an empty area.
 public  void subtract(Area rhs) 
    Subtracts the shape of the specified Area from the shape of this Area. The resulting shape of this Area will include areas that were contained only in this Area and not in the specified Area.
    // Example:
    Area a1 = new Area([triangle 0,0 => 8,0 => 0,8]);
    Area a2 = new Area([triangle 0,0 => 8,0 => 8,8]);
    a1.subtract(a2);
    
    a1(before) - a2 = a1(after)
    
    ################ ################
    ############## ############## ##
    ############ ############ ####
    ########## ########## ######
    ######## ######## ########
    ###### ###### ######
    #### #### ####
    ## ## ##
    
 public  void transform(AffineTransform t) 
    Transforms the geometry of this Area using the specified AffineTransform . The geometry is transformed in place, which permanently changes the enclosed area defined by this object.