modules/graphics/src/main/java/com/sun/scenario/effect/GaussianBlur.java
Print this page
@@ -31,16 +31,17 @@
import com.sun.javafx.geom.RectBounds;
import com.sun.javafx.geom.Rectangle;
import com.sun.javafx.geom.transform.BaseTransform;
import com.sun.scenario.effect.impl.Renderer;
import com.sun.scenario.effect.impl.state.GaussianBlurState;
+import com.sun.scenario.effect.impl.state.LinearConvolveKernel;
/**
* A blur effect using a Gaussian convolution kernel, with a configurable
* radius.
*/
-public class GaussianBlur extends CoreEffect {
+public class GaussianBlur extends LinearConvolveCoreEffect {
private GaussianBlurState state = new GaussianBlurState();
/**
* Constructs a new {@code GaussianBlur} effect with the default radius
@@ -82,11 +83,11 @@
super(input);
state.setRadius(radius);
}
@Override
- Object getState() {
+ LinearConvolveKernel getState() {
return state;
}
@Override
public AccelType getAccelType(FilterContext fctx) {
@@ -161,43 +162,10 @@
ret.grow(hpad, vpad);
return ret;
}
@Override
- public ImageData filterImageDatas(FilterContext fctx,
- BaseTransform transform,
- Rectangle outputClip,
- ImageData... inputs)
- {
- return state.filterImageDatas(this, fctx, transform, outputClip, inputs);
- }
-
- @Override
- public boolean operatesInUserSpace() {
- return true;
- }
-
- @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.getPad(0);
- int vpad = state.getPad(1);
- if ((hpad | vpad) != 0) {
- outputClip = new Rectangle(outputClip);
- outputClip.grow(hpad, vpad);
- }
- }
- return outputClip;
- }
-
- @Override
public boolean reducesOpaquePixels() {
if (!state.isNop()) {
return true;
}
final Effect input = getInput();