aboutsummaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/core/SkMaskFilter.h27
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,