package mil.nga.giat.geowave.adapter.raster.adapter;
import java.awt.image.RenderedImage;
import java.awt.image.renderable.ParameterBlock;
import javax.media.jai.JAI;
import javax.media.jai.OperationRegistry;
import javax.media.jai.PropertyGenerator;
import javax.media.jai.RenderedOp;
import javax.media.jai.operator.MosaicDescriptor;
import javax.media.jai.operator.WarpDescriptor;
import org.geotools.resources.coverage.CoverageUtilities;
import com.sun.media.jai.opimage.MosaicRIF;
import com.sun.media.jai.util.PropertyGeneratorImpl;
public class MosaicPropertyGenerator extends
PropertyGeneratorImpl
{
/**
*
*/
private static final long serialVersionUID = 1L;
public MosaicPropertyGenerator() {
super(
new String[] {
"sourceThreshold"
},
new Class[] {
double[][].class
},
new Class[] {
RenderedOp.class
});
}
@Override
public Object getProperty(
final String name,
final Object opNode ) {
validate(
name,
opNode);
if ((opNode instanceof RenderedOp) && name.equalsIgnoreCase("sourceThreshold")) {
final RenderedOp op = (RenderedOp) opNode;
final ParameterBlock pb = op.getParameterBlock();
// Retrieve the rendered source image and its ROI.
final RenderedImage src = pb.getRenderedSource(0);
final Object property = src.getProperty("sourceThreshold");
if (property != null) {
return property;
} // Getting the Threshold to use
final double threshold = CoverageUtilities.getMosaicThreshold(src.getSampleModel().getDataType());
// Setting the Threshold object for the mosaic
return new double[][] {
{
threshold
}
};
}
return java.awt.Image.UndefinedProperty;
}
}