@Override public DirtyRegionContainer getDirtyRegions(Effect defaultInput, DirtyRegionPool regionPool) { Effect di = getDefaultedInput(0, defaultInput); DirtyRegionContainer drc = di.getDirtyRegions(defaultInput, regionPool); drc.grow(state.getHPad(), state.getVPad()); return drc; }
@Override public BaseBounds getBounds(BaseTransform transform, Effect defaultInput) { BaseBounds r = super.getBounds(null, defaultInput); int hpad = state.getHPad(); int vpad = state.getVPad(); BaseBounds ret = new RectBounds(r.getMinX(), r.getMinY(), r.getMaxX(), r.getMaxY()); ((RectBounds) ret).grow(hpad, vpad); return transformBounds(transform, ret); }
@Override public Rectangle getResultBounds( BaseTransform transform, Rectangle outputClip, ImageData... inputDatas) { Rectangle r = super.getResultBounds(transform, outputClip, inputDatas); int hpad = state.getHPad(); int vpad = state.getVPad(); Rectangle ret = new Rectangle(r); ret.grow(hpad, vpad); return ret; }
@Override protected Rectangle getInputClip(int inputIndex, BaseTransform transform, Rectangle outputClip) { // A blur needs as much "fringe" data from its input as it creates // around its output so we use the same expansion as is used in the // result bounds. if (outputClip != null) { int hpad = state.getHPad(); int vpad = state.getVPad(); if ((hpad | vpad) != 0) { outputClip = new Rectangle(outputClip); outputClip.grow(hpad, vpad); } } return outputClip; }