ARGBChannel yChannelSelector = convertChannelSelector
(filterElement, SVG_Y_CHANNEL_SELECTOR_ATTRIBUTE, ARGBChannel.A,
ctx);
// 'in' attribute
Filter in = getIn(filterElement,
filteredElement,
filteredNode,
inputFilter,
filterMap,
ctx);
if (in == null) {
return null; // disable the filter
}
// 'in2' attribute - required
Filter in2 = getIn2(filterElement,
filteredElement,
filteredNode,
inputFilter,
filterMap,
ctx);
if (in2 == null) {
return null; // disable the filter
}
Rectangle2D defaultRegion;
defaultRegion = (Rectangle2D)in.getBounds2D().clone();
defaultRegion.add(in2.getBounds2D());
// get filter primitive chain region
Rectangle2D primitiveRegion
= SVGUtilities.convertFilterPrimitiveRegion(filterElement,
filteredElement,
filteredNode,
defaultRegion,
filterRegion,
ctx);
PadRable pad
= new PadRable8Bit(in, primitiveRegion, PadMode.ZERO_PAD);
// build the displacement map filter
List srcs = new ArrayList(2);
srcs.add(pad);
srcs.add(in2);
Filter displacementMap = new DisplacementMapRable8Bit
(srcs, scale, xChannelSelector, yChannelSelector);
// handle the 'color-interpolation-filters' property
handleColorInterpolationFilters(displacementMap, filterElement);