modules/graphics/src/main/java/com/sun/scenario/effect/impl/EffectPeer.java
Print this page
*** 30,49 ****
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;
/**
* The abstract base class for all {@code Effect} implementation peers.
*/
! public abstract class EffectPeer {
private final FilterContext fctx;
private final Renderer renderer;
private final String uniqueName;
private Effect effect;
private int pass;
protected EffectPeer(FilterContext fctx, Renderer renderer, String uniqueName) {
if (fctx == null) {
throw new IllegalArgumentException("FilterContext must be non-null");
--- 30,54 ----
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<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,65 ****
--- 61,71 ----
public boolean isImageDataCompatible(ImageData id) {
return getRenderer().isImageDataCompatible(id);
}
public abstract ImageData filter(Effect effect,
+ T renderState,
BaseTransform transform,
Rectangle outputClip,
ImageData... inputs);
/**
*** 99,108 ****
--- 105,122 ----
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) {