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();