public static class ImageWarp.GridTransform extends java.lang.Object implements ImageWarp.PointTransform
ImageWarp.PointTransform
.
It does so by spanning a grid with certain step size. It will invoke the
potentially expensive master transform only at those grid points and use
bilinear interpolation to approximate transformed values in between.
For memory optimization, this class assumes that rows are more or less scanned
one-by-one as is done in ImageWarp.warp(java.awt.image.BufferedImage, java.awt.Dimension, org.openstreetmap.josm.tools.ImageWarp.PointTransform, org.openstreetmap.josm.tools.ImageWarp.Interpolation)
. I.e. this transform is not
random access in the y coordinate.
Modifier and Type | Field and Description |
---|---|
private java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.awt.geom.Point2D>> |
cache |
private boolean |
consistencyTest |
private java.util.Set<java.lang.Integer> |
deletedRows |
private double |
stride |
private ImageWarp.PointTransform |
trfm |
Constructor and Description |
---|
GridTransform(ImageWarp.PointTransform trfm,
double stride)
Create a new GridTransform.
|
Modifier and Type | Method and Description |
---|---|
private void |
cleanUp(int yIdx) |
private java.util.Map<java.lang.Integer,java.awt.geom.Point2D> |
getRow(int yIdx) |
private java.awt.geom.Point2D |
getValue(int xIdx,
int yIdx) |
java.awt.geom.Point2D |
transform(java.awt.geom.Point2D pt)
Translates pixel coordinates.
|
private final double stride
private final ImageWarp.PointTransform trfm
private final java.util.Map<java.lang.Integer,java.util.Map<java.lang.Integer,java.awt.geom.Point2D>> cache
private final boolean consistencyTest
private final java.util.Set<java.lang.Integer> deletedRows
public GridTransform(ImageWarp.PointTransform trfm, double stride)
trfm
- the master transform, that needs to be optimizedstride
- step sizepublic java.awt.geom.Point2D transform(java.awt.geom.Point2D pt)
ImageWarp.PointTransform
transform
in interface ImageWarp.PointTransform
pt
- pixel coordinatesprivate java.awt.geom.Point2D getValue(int xIdx, int yIdx)
private java.util.Map<java.lang.Integer,java.awt.geom.Point2D> getRow(int yIdx)
private void cleanUp(int yIdx)