/*
Java Media APIs: Cross-Platform Imaging, Media and Visualization
Alejandro Terrazas
Sams, Published November 2002,
ISBN 0672320940
*/
import javax.media.jai.ImageLayout;
import javax.media.jai.PointOpImage;
import java.awt.image.RenderedImage;
import java.awt.image.Raster;
import java.awt.image.WritableRaster;
public class CheckAlignmentOpImage extends PointOpImage {
public CheckAlignmentOpImage(RenderedImage s1, RenderedImage s2, int sp,
ImageLayout layout, java.util.Map configuration,
boolean cobbleSources) {
super(s1, s2, layout, configuration, cobbleSources);
source1 = s1;
source2 = s2;
samplingPeriod = sp;
}
public Raster computeTile(int x, int y) {
Raster r1 = source1.getTile(x, y);
Raster r2 = source2.getTile(x, y);
int xBounds = r1.getWidth();
if (r2.getWidth() < xBounds)
xBounds = r2.getWidth();
int yBounds = r1.getHeight();
if (r2.getHeight() < yBounds)
yBounds = r2.getHeight();
WritableRaster wr;
wr = r1.createCompatibleWritableRaster(xBounds, yBounds);
int tmpi;
int tmpj;
for (int i = 0; i < wr.getWidth(); i++)
for (int j = 0; j < wr.getHeight(); j++) {
tmpi = i / samplingPeriod;
tmpj = j / samplingPeriod;
if ((tmpi % 2 == 0) && (tmpj % 2 == 0))
wr.setDataElements(i, j, r2.getDataElements(i, j, null));
else if ((tmpi % 2 != 0) && (tmpj % 2 != 0))
wr.setDataElements(i, j, r2.getDataElements(i, j, null));
else
wr.setDataElements(i, j, r1.getDataElements(i, j, null));
}
return wr;
}
private RenderedImage source1, source2;
private int samplingPeriod;
}
|