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:
Only closed paths and sub-paths are stored.
Area objects constructed from unclosed paths
are implicitly closed during construction as if those paths
had been filled by the Graphics2D.fill method.
The interiors of the individual stored sub-paths are all
non-empty and non-overlapping. Paths are decomposed during
construction into separate component non-overlapping parts,
empty pieces of the path are discarded, and then these
non-empty and non-overlapping properties are maintained
through all subsequent CAG operations. Outlines of different
component sub-paths may touch each other, as long as they
do not cross so that their enclosed areas overlap.
The geometry of the path describing the outline of the
Area resembles the path from which it was
constructed only in that it describes the same enclosed
2-dimensional area, but may use entirely different types
and ordering of the path segments to do so.
Interesting issues which are not always obvious when using
the Area include:
Creating an Area from an unclosed (open)
Shape results in a closed outline in the
Area object.
Creating an Area from a Shape
which encloses no area (even when "closed") produces an
empty Area. A common example of this issue
is that producing an Area from a line will
be empty since the line encloses no area. An empty
Area will iterate no geometry in its
PathIterator objects.
A self-intersecting Shape may be split into
two (or more) sub-paths each enclosing one of the
non-intersecting portions of the original path.
An Area may take more path segments to
describe the same geometry even when the original
outline is simple and obvious. The analysis that the
Area class must perform on the path may
not reflect the same concepts of "simple and obvious"
as a human being perceives.
Areaobject stores and manipulates a resolution-independent description of an enclosed area of 2-dimensional space.Areaobjects can be transformed and can perform various Constructive Area Geometry (CAG) operations when combined with otherAreaobjects. The CAG operations include area addition , subtraction , intersection , and exclusive or . See the linked method documentation for examples of the various operations.The
Areaclass implements theShapeinterface and provides full support for all of its hit-testing and path iteration facilities, but anAreais more specific than a generalized path in a number of ways:- Only closed paths and sub-paths are stored.
- The interiors of the individual stored sub-paths are all
non-empty and non-overlapping. Paths are decomposed during
construction into separate component non-overlapping parts,
empty pieces of the path are discarded, and then these
non-empty and non-overlapping properties are maintained
through all subsequent CAG operations. Outlines of different
component sub-paths may touch each other, as long as they
do not cross so that their enclosed areas overlap.
- The geometry of the path describing the outline of the
Interesting issues which are not always obvious when using theAreaobjects constructed from unclosed paths are implicitly closed during construction as if those paths had been filled by theGraphics2D.fillmethod.Arearesembles the path from which it was constructed only in that it describes the same enclosed 2-dimensional area, but may use entirely different types and ordering of the path segments to do so.Areainclude:Areafrom an unclosed (open)Shaperesults in a closed outline in theAreaobject.Areafrom aShapewhich encloses no area (even when "closed") produces an emptyArea. A common example of this issue is that producing anAreafrom a line will be empty since the line encloses no area. An emptyAreawill iterate no geometry in itsPathIteratorobjects.Shapemay be split into two (or more) sub-paths each enclosing one of the non-intersecting portions of the original path.Areamay take more path segments to describe the same geometry even when the original outline is simple and obvious. The analysis that theAreaclass must perform on the path may not reflect the same concepts of "simple and obvious" as a human being perceives.