modules/graphics/src/main/java/com/sun/scenario/effect/MotionBlur.java

Print this page

        

@@ -30,17 +30,18 @@
 import com.sun.javafx.geom.DirtyRegionPool;
 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.LinearConvolveKernel;
 import com.sun.scenario.effect.impl.state.MotionBlurState;
 
 /**
  * A motion blur effect using a Gaussian convolution kernel, with a
  * configurable radius and angle.
  */
-public class MotionBlur extends CoreEffect {
+public class MotionBlur extends LinearConvolveCoreEffect {
 
     private MotionBlurState state = new MotionBlurState();
 
     /**
      * Constructs a new {@code MotionBlur} effect with the default radius

@@ -87,11 +88,11 @@
         setRadius(radius);
         setAngle(angle);
     }
 
     @Override
-    Object getState() {
+    LinearConvolveKernel getState() {
         return state;
     }
 
     @Override
     public AccelType getAccelType(FilterContext fctx) {

@@ -138,11 +139,10 @@
      * @param radius the radius of the Gaussian kernel
      * @throws IllegalArgumentException if {@code radius} is outside the
      * allowable range
      */
     public void setRadius(float radius) {
-        float old = state.getRadius();
         state.setRadius(radius);
     }
 
     /**
      * Returns the angle of the motion effect, in radians.

@@ -163,11 +163,10 @@
      * </pre>
      *
      * @param angle the angle of the motion effect, in radians
      */
     public void setAngle(float angle) {
-        float old = state.getAngle();
         state.setAngle(angle);
     }
 
     @Override
     public BaseBounds getBounds(BaseTransform transform, Effect defaultInput) {

@@ -191,43 +190,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.getHPad();
-            int vpad = state.getVPad();
-            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();