diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/core/SkMaskFilter.h | 27 |
1 files changed, 17 insertions, 10 deletions
diff --git a/include/core/SkMaskFilter.h b/include/core/SkMaskFilter.h index 1714d17bca..3e10dc9ad3 100644 --- a/include/core/SkMaskFilter.h +++ b/include/core/SkMaskFilter.h @@ -6,7 +6,6 @@ * found in the LICENSE file. */ - #ifndef SkMaskFilter_DEFINED #define SkMaskFilter_DEFINED @@ -18,6 +17,7 @@ class GrClip; class GrContext; +struct GrFPArgs; class GrRenderTargetContext; class GrPaint; class GrFragmentProcessor; @@ -69,16 +69,18 @@ public: #if SK_SUPPORT_GPU /** - * Returns true if the filter can be expressed a single-pass GrProcessor without requiring an - * explicit input mask. Per-pixel, the effect receives the incoming mask's coverage as - * the input color and outputs the filtered covereage value. This means that each pixel's - * filtered coverage must only depend on the unfiltered mask value for that pixel and not on - * surrounding values. - * - * If effect is non-NULL, a new GrProcessor instance is stored in it. The caller assumes - * ownership of the effect and must unref it. + * Returns a processor if the filter can be expressed a single-pass GrProcessor without + * requiring an explicit input mask. Per-pixel, the effect receives the incoming mask's + * coverage as the input color and outputs the filtered covereage value. This means that each + * pixel's filtered coverage must only depend on the unfiltered mask value for that pixel and + * not on surrounding values. + */ + std::unique_ptr<GrFragmentProcessor> asFragmentProcessor(const GrFPArgs& args) const; + + /** + * Returns true iff asFragmentProcessor() will return a processor */ - virtual bool asFragmentProcessor(GrFragmentProcessor**) const { return false; } + bool hasFragmentProcessor() const; /** * If asFragmentProcessor() fails the filter may be implemented on the GPU by a subclass @@ -179,6 +181,11 @@ public: protected: SkMaskFilter() {} +#if SK_SUPPORT_GPU + virtual std::unique_ptr<GrFragmentProcessor> onAsFragmentProcessor(const GrFPArgs&) const; + virtual bool onHasFragmentProcessor() const; +#endif + enum FilterReturn { kFalse_FilterReturn, kTrue_FilterReturn, |