diff options
author | 2017-07-26 12:21:21 -0400 | |
---|---|---|
committer | 2017-07-26 16:57:39 +0000 | |
commit | fcc527b2c9f97a42a94b4236d5c2b4b1e43b38c2 (patch) | |
tree | 12e0a5f03385331802a03ee808e61486474b3c37 /src/gpu/effects | |
parent | e82a10bb183b5f7753aa67657c4e3a9375f297d2 (diff) |
Implement clone for 4 additional GrFragmentProcessors.
GrConfigConversionEffect
GrConstColorProcessor
GrConvexPolyEffect
AARectEffect
Change-Id: I3b103ed045db0825fc193ee7d6e61c8fe8e5c634
Reviewed-on: https://skia-review.googlesource.com/26842
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'src/gpu/effects')
-rw-r--r-- | src/gpu/effects/GrConfigConversionEffect.cpp | 4 | ||||
-rw-r--r-- | src/gpu/effects/GrConfigConversionEffect.h | 2 | ||||
-rw-r--r-- | src/gpu/effects/GrConstColorProcessor.cpp | 2 | ||||
-rw-r--r-- | src/gpu/effects/GrConstColorProcessor.h | 2 | ||||
-rw-r--r-- | src/gpu/effects/GrConvexPolyEffect.cpp | 16 | ||||
-rw-r--r-- | src/gpu/effects/GrConvexPolyEffect.h | 3 |
6 files changed, 28 insertions, 1 deletions
diff --git a/src/gpu/effects/GrConfigConversionEffect.cpp b/src/gpu/effects/GrConfigConversionEffect.cpp index e8d04771f5..d83e82d8d9 100644 --- a/src/gpu/effects/GrConfigConversionEffect.cpp +++ b/src/gpu/effects/GrConfigConversionEffect.cpp @@ -70,6 +70,10 @@ GrConfigConversionEffect::GrConfigConversionEffect(PMConversion pmConversion) this->initClassID<GrConfigConversionEffect>(); } +sk_sp<GrFragmentProcessor> GrConfigConversionEffect::clone() const { + return sk_sp<GrFragmentProcessor>(new GrConfigConversionEffect(fPMConversion)); +} + bool GrConfigConversionEffect::onIsEqual(const GrFragmentProcessor& s) const { const GrConfigConversionEffect& other = s.cast<GrConfigConversionEffect>(); return other.fPMConversion == fPMConversion; diff --git a/src/gpu/effects/GrConfigConversionEffect.h b/src/gpu/effects/GrConfigConversionEffect.h index f6bb7b1034..fe8f50bdf5 100644 --- a/src/gpu/effects/GrConfigConversionEffect.h +++ b/src/gpu/effects/GrConfigConversionEffect.h @@ -33,6 +33,8 @@ public: const char* name() const override { return "Config Conversion"; } + sk_sp<GrFragmentProcessor> clone() const override; + PMConversion pmConversion() const { return fPMConversion; } // This function determines whether it is possible to choose PM->UPM and UPM->PM conversions diff --git a/src/gpu/effects/GrConstColorProcessor.cpp b/src/gpu/effects/GrConstColorProcessor.cpp index 9f46712f29..d5f4e3527f 100644 --- a/src/gpu/effects/GrConstColorProcessor.cpp +++ b/src/gpu/effects/GrConstColorProcessor.cpp @@ -62,6 +62,8 @@ private: /////////////////////////////////////////////////////////////////////////////// +sk_sp<GrFragmentProcessor> GrConstColorProcessor::clone() const { return Make(fColor, fMode); } + GrColor4f GrConstColorProcessor::constantOutputForConstantInput(GrColor4f input) const { switch (fMode) { case kIgnore_InputMode: diff --git a/src/gpu/effects/GrConstColorProcessor.h b/src/gpu/effects/GrConstColorProcessor.h index 1669f2b71e..baf405a8fe 100644 --- a/src/gpu/effects/GrConstColorProcessor.h +++ b/src/gpu/effects/GrConstColorProcessor.h @@ -38,6 +38,8 @@ public: return str; } + sk_sp<GrFragmentProcessor> clone() const override; + GrColor4f color() const { return fColor; } InputMode inputMode() const { return fMode; } diff --git a/src/gpu/effects/GrConvexPolyEffect.cpp b/src/gpu/effects/GrConvexPolyEffect.cpp index fd01798d70..7dba3de04d 100644 --- a/src/gpu/effects/GrConvexPolyEffect.cpp +++ b/src/gpu/effects/GrConvexPolyEffect.cpp @@ -27,9 +27,11 @@ public: const char* name() const override { return "AARect"; } - void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override; + sk_sp<GrFragmentProcessor> clone() const override { return Make(fEdgeType, fRect); } private: + void onGetGLSLProcessorKey(const GrShaderCaps&, GrProcessorKeyBuilder*) const override; + AARectEffect(GrPrimitiveEdgeType edgeType, const SkRect& rect) : INHERITED(kCompatibleWithCoverageAsAlpha_OptimizationFlag) , fRect(rect) @@ -338,6 +340,18 @@ GrConvexPolyEffect::GrConvexPolyEffect(GrPrimitiveEdgeType edgeType, int n, cons } } +GrConvexPolyEffect::GrConvexPolyEffect(const GrConvexPolyEffect& that) + : INHERITED(kCompatibleWithCoverageAsAlpha_OptimizationFlag) + , fEdgeType(that.fEdgeType) + , fEdgeCount(that.fEdgeCount) { + this->initClassID<GrConvexPolyEffect>(); + memcpy(fEdges, that.fEdges, 3 * that.fEdgeCount * sizeof(SkScalar)); +} + +sk_sp<GrFragmentProcessor> GrConvexPolyEffect::clone() const { + return sk_sp<GrFragmentProcessor>(new GrConvexPolyEffect(*this)); +} + bool GrConvexPolyEffect::onIsEqual(const GrFragmentProcessor& other) const { const GrConvexPolyEffect& cpe = other.cast<GrConvexPolyEffect>(); // ignore the fact that 0 == -0 and just use memcmp. diff --git a/src/gpu/effects/GrConvexPolyEffect.h b/src/gpu/effects/GrConvexPolyEffect.h index fa26fb4b72..f1f6ab0029 100644 --- a/src/gpu/effects/GrConvexPolyEffect.h +++ b/src/gpu/effects/GrConvexPolyEffect.h @@ -61,6 +61,8 @@ public: const char* name() const override { return "ConvexPoly"; } + sk_sp<GrFragmentProcessor> clone() const override; + GrPrimitiveEdgeType getEdgeType() const { return fEdgeType; } int getEdgeCount() const { return fEdgeCount; } @@ -69,6 +71,7 @@ public: private: GrConvexPolyEffect(GrPrimitiveEdgeType edgeType, int n, const SkScalar edges[]); + GrConvexPolyEffect(const GrConvexPolyEffect&); GrGLSLFragmentProcessor* onCreateGLSLInstance() const override; |