public class ShapeWriter extends Object
Geometry
s into Java2D Shape
objects
of the appropriate type.
This supports rendering geometries using Java2D.
The ShapeWriter allows supplying a PointTransformation
class, to transform coordinates from model space into view space.
This is useful if a client is providing its own transformation
logic, rather than relying on Java2D AffineTransforms.
The writer supports removing duplicate consecutive points
(via the setRemoveDuplicatePoints(boolean)
method)
as well as true decimation
(via the setDecimation(double)
method.
Enabling one of these strategies can substantially improve
rendering speed for large geometries.
It is only necessary to enable one strategy.
Using decimation is preferred, but this requires
determining a distance below which input geometry vertices
can be considered unique (which may not always be feasible).
If neither strategy is enabled, all vertices
of the input Geometry
will be represented in the output Shape.
Modifier and Type | Field and Description |
---|---|
static PointShapeFactory |
DEFAULT_POINT_FACTORY
The point shape factory used by default.
|
static PointTransformation |
DEFAULT_POINT_TRANSFORMATION
The point transformation used by default.
|
Constructor and Description |
---|
ShapeWriter()
Creates a new ShapeWriter with the default (identity) point transformation.
|
ShapeWriter(PointTransformation pointTransformer)
Creates a new ShapeWriter with a specified point transformation
and the default point shape factory.
|
ShapeWriter(PointTransformation pointTransformer,
PointShapeFactory pointFactory)
Creates a new ShapeWriter with a specified point transformation
and point shape factory.
|
Modifier and Type | Method and Description |
---|---|
void |
setDecimation(double decimationDistance)
Sets the decimation distance used to determine
whether vertices of the input geometry are
considered to be duplicate and thus removed.
|
void |
setRemoveDuplicatePoints(boolean doRemoveDuplicatePoints)
Sets whether duplicate consecutive points should be eliminated.
|
Shape |
toShape(Geometry geometry)
|
public static final PointTransformation DEFAULT_POINT_TRANSFORMATION
public static final PointShapeFactory DEFAULT_POINT_FACTORY
public ShapeWriter(PointTransformation pointTransformer, PointShapeFactory pointFactory)
pointTransformer
- a transformation from model to view space to usepointFactory
- the PointShapeFactory to usepublic ShapeWriter(PointTransformation pointTransformer)
pointTransformer
- a transformation from model to view space to usepublic ShapeWriter()
public void setRemoveDuplicatePoints(boolean doRemoveDuplicatePoints)
The default is false.
doRemoveDuplicatePoints
- whether decimation is to be used to remove duplicate pointspublic void setDecimation(double decimationDistance)
When rendering to a screen image, a suitably small distance should be used to avoid obvious rendering defects. A distance equivalent to the equivalent of 1.5 pixels or less is recommended (and perhaps even smaller to avoid any chance of visible artifacts).
The default distance is 0.0, which disables decimation.
decimationDistance
- the distance below which vertices are considered to be duplicatespublic Shape toShape(Geometry geometry)
Shape
representing a Geometry
,
according to the specified PointTransformation
and PointShapeFactory (if relevant).
Note that Shapes do not preserve information about which elements in heterogeneous collections are 1D and which are 2D. For example, a GeometryCollection containing a ring and a disk will render as two disks if Graphics.fill is used, or as two rings if Graphics.draw is used. To avoid this issue use separate shapes for the components.
geometry
- the geometry to convertCopyright © 2022. All rights reserved.