| Index: include/core/SkXfermode.h
|
| diff --git a/include/core/SkXfermode.h b/include/core/SkXfermode.h
|
| index 6d723e8fc243e08e8d493558b0938689ecec7cd6..35e9837483ed098528beb89d64cc3fed2a3bbee1 100644
|
| --- a/include/core/SkXfermode.h
|
| +++ b/include/core/SkXfermode.h
|
| @@ -15,6 +15,7 @@
|
|
|
| class GrFragmentProcessor;
|
| class GrTexture;
|
| +class GrXPFactory;
|
| class SkString;
|
|
|
| /** \class SkXfermode
|
| @@ -198,16 +199,28 @@ public:
|
| fragment shader. If NULL, the effect should request access to destination color
|
| (setWillReadDstColor()), and use that in the fragment shader (builder->dstColor()).
|
| */
|
| + // TODO: Once all custom xp's have been created the background parameter will be required here.
|
| + // We will always use the XPFactory if there is no background texture and the fragment if
|
| + // there is one.
|
| virtual bool asFragmentProcessor(GrFragmentProcessor**, GrTexture* background = NULL) const;
|
|
|
| - /** Returns true if the xfermode can be expressed as coeffs (src, dst), or as an effect
|
| - (effect). This helper calls the asCoeff() and asFragmentProcessor() virtuals. If the
|
| - xfermode is NULL, it is treated as kSrcOver_Mode. It is legal to call this with all params
|
| - NULL to simply test the return value. effect, src, and dst must all be NULL or all
|
| - non-NULL.
|
| + /** A subclass may implement this factory function to work with the GPU backend. It is legal
|
| + to call this with xpf NULL to simply test the return value. If xpf is non-NULL then the
|
| + xfermode may optionally allocate a factory to return to the caller as *xpf. The caller
|
| + will install it and own a ref to it. Since the xfermode may or may not assign *xpf, the
|
| + caller should set *xpf to NULL beforehand. XP's cannot use a background texture since they
|
| + have no coord transforms.
|
| + */
|
| + virtual bool asXPFactory(GrXPFactory** xpf) const;
|
| +
|
| + /** Returns true if the xfermode can be expressed as an xfer processor factory (xpFactory),
|
| + or a fragment processor. This helper calls the asCoeff(), asXPFactory(),
|
| + and asFragmentProcessor() virtuals. If the xfermode is NULL, it is treated as kSrcOver_Mode.
|
| + It is legal to call this with all params NULL to simply test the return value.
|
| + fp, xpf, src, and dst must all be NULL or all non-NULL.
|
| */
|
| - static bool asFragmentProcessorOrCoeff(SkXfermode*, GrFragmentProcessor**, Coeff* src,
|
| - Coeff* dst, GrTexture* background = NULL);
|
| + static bool AsFragmentProcessorOrXPFactory(SkXfermode*, GrFragmentProcessor**,
|
| + GrXPFactory**, Coeff* src, Coeff* dst);
|
|
|
| SK_TO_STRING_PUREVIRT()
|
| SK_DECLARE_FLATTENABLE_REGISTRAR_GROUP()
|
|
|