/* Get BorderExtender from hints if any. */
BorderExtender extender = RIFUtil.getBorderExtenderHint(hints);
RenderedImage source = args.getRenderedSource(0);
KernelJAI unRotatedKernel = (KernelJAI)args.getObjectParameter(0);
KernelJAI kJAI = unRotatedKernel.getRotatedKernel();
int kWidth = kJAI.getWidth();
int kHeight= kJAI.getHeight();
int xOri = kJAI.getXOrigin();
int yOri = kJAI.getYOrigin();
int numB = source.getSampleModel().getNumBands();
/* mediaLib does not handle kernels with either dimension < 2. */
if (xOri != 1 || yOri != 1 || kWidth != 3 || kHeight != 3 || numB != 1) {
return null;
}
// check for plus and square type of kernel
float[] kdata = kJAI.getKernelData();
if (isBinary && isKernel3Square1(kdata) || !isBinary && isKernel3Square0(kdata)){
return new MlibDilate3SquareOpImage(source, extender, hints, layout);