Index: include/core/SkComposeShader.h |
diff --git a/include/core/SkComposeShader.h b/include/core/SkComposeShader.h |
index 956ba6e00d2ad003ae27817160bb359003d3d5c0..763a1daa45e21a8c624c48c511bf7525fd1406a8 100644 |
--- a/include/core/SkComposeShader.h |
+++ b/include/core/SkComposeShader.h |
@@ -84,4 +84,46 @@ private: |
typedef SkShader INHERITED; |
}; |
+#if SK_SUPPORT_GPU |
+ |
+#include "SkString.h" |
+#include "../gpu/GrFragmentProcessor.h" |
+ |
+///////////////////////////////////////////////////////////////////// |
+ |
+class GrComposeEffect : public GrFragmentProcessor { |
+public: |
+ |
+ static GrFragmentProcessor* Create(const GrFragmentProcessor* fpA, |
+ const GrFragmentProcessor* fpB, |
+ SkXfermode::Mode mode); |
+ const char* name() const override {return fName.c_str(); } |
tomhudson
2015/08/25 19:29:24
Teensy-tiny nit: space before return.
wangyix
2015/08/25 21:34:09
Done.
|
+ void onGetGLProcessorKey(const GrGLSLCaps& caps, GrProcessorKeyBuilder* b) const override; |
+ |
+ SkXfermode::Mode getMode() const { return fMode; } |
+ int getShaderAChildIndex() const { return fShaderAChildIndex; } |
+ int getShaderBChildIndex() const { return fShaderBChildIndex; } |
+ |
+protected: |
+ bool onIsEqual(const GrFragmentProcessor&) const override; |
+ void onComputeInvariantOutput(GrInvariantOutput* inout) const override; |
+ |
+private: |
+ GrComposeEffect(const GrFragmentProcessor* fpA, const GrFragmentProcessor* fpB, |
+ SkXfermode::Mode mode); |
+ |
+ GrGLFragmentProcessor* onCreateGLInstance() const override; |
+ |
+ SkString fName; |
+ int fShaderAChildIndex; |
+ int fShaderBChildIndex; |
+ SkXfermode::Mode fMode; |
+ |
+ GR_DECLARE_FRAGMENT_PROCESSOR_TEST; |
+ |
+ typedef GrFragmentProcessor INHERITED; |
+}; |
+ |
+#endif |
+ |
#endif |