modules/graphics/src/main/java/com/sun/scenario/effect/impl/EffectPeer.java
Print this page
@@ -30,20 +30,25 @@
import com.sun.scenario.effect.FilterContext;
import com.sun.scenario.effect.ImageData;
import com.sun.javafx.geom.Rectangle;
import com.sun.javafx.geom.transform.BaseTransform;
import com.sun.javafx.geom.transform.NoninvertibleTransformException;
+import com.sun.scenario.effect.impl.state.RenderState;
/**
* The abstract base class for all {@code Effect} implementation peers.
+ *
+ * @param <T> an optional subclass of RenderState that can be assumed as the
+ * return value for the getRenderState() method
*/
-public abstract class EffectPeer {
+public abstract class EffectPeer<T extends RenderState> {
private final FilterContext fctx;
private final Renderer renderer;
private final String uniqueName;
private Effect effect;
+ private T renderState;
private int pass;
protected EffectPeer(FilterContext fctx, Renderer renderer, String uniqueName) {
if (fctx == null) {
throw new IllegalArgumentException("FilterContext must be non-null");
@@ -56,10 +61,11 @@
public boolean isImageDataCompatible(ImageData id) {
return getRenderer().isImageDataCompatible(id);
}
public abstract ImageData filter(Effect effect,
+ T renderState,
BaseTransform transform,
Rectangle outputClip,
ImageData... inputs);
/**
@@ -99,10 +105,18 @@
protected void setEffect(Effect effect) {
this.effect = effect;
}
+ protected T getRenderState() {
+ return renderState;
+ }
+
+ protected void setRenderState(T renderState) {
+ this.renderState = renderState;
+ }
+
public final int getPass() {
return pass;
}
public void setPass(int pass) {